1. #1
    Membre régulier Avatar de Rubicon
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations forums :
    Inscription : octobre 2008
    Messages : 77
    Points : 124
    Points
    124

    Par défaut Qualité de données dans la base AdventureWorksDW2012

    Bonjour à tous,

    J'utilise la base de données gratuite AdventureWorksDW2012 fournie par Microsoft pour tester un outil de reporting et y construire un prototype. (ce n'est pas mon sujet dans ce post, mais j'ai notamment pu tester des chargement de données avec une table de 30 millions de lignes grâce à ce script).

    Je m'intéresse d'une part à la table FactFinance (1) me permettant de visualiser un compte de résultat et un bilan par année, devise, pays etc...
    d'autre part je m'intéresse à la table FactResellerSales (2) me permettant d'analyser les ventes (chiffre d'affaire, promotions, coût de vente....). La table FactInternetSales donne le même type d'information pour un autre canal de ventes.

    Je m'attends à ce que le chiffre d'affaires, les promotions, le coût de vente dans la table (1) se retrouve peu ou prou dans celui des tables (2). D'autres éléments (e.g. les salaires) en revanche ne peuvent pas se trouver dans les table (2) et je ne peux donc pas faire de contrôle de cohérence dessus.

    Or j'ai le sentiment que les tables
    • FactFinance d'une part
    • FactResellerSales et FactInternetSales d'autre part

    ne sont pas cohérentes.

    Par exemple, le coût de vente est défini par
    • AccountDescription in ('Standard Cost of Sales','Variances') dans FactFinance (via la table DimAccount)
    • TotalProductCost dans les tables FactResellerSales et FactInternetSales


    Lorsque je fais la somme de ces coûts par devise, j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
                           
    --------------------------------------------------------------------------------------------------------
    Currency              TotalCostOfSales
    from FactFinance :     
    AUD                    1,541,604.89
    CAD                    8,424,631.57
    EUR                    2,448,597.52
    USD                    20,236,365.00
    From FactResellerSales 
    AUD                    1,703,056.26
    GBP                    4,272,626.92
    CAD                    14,199,698.51
    EUR                    6,740,089.28
    USD                    53,064,643.42
    From FactInternetSales 
    DEM                    142,211.49
    AUD                    5,371,031.72
    GBP                    1,999,809.86
    CAD                    1,045,363.86
    FRF                    108,108.26
    USD                    8,611,268.39
    la table FactFinance contient seulement 4 devises pour le coût de vente, alors que les tables des ventes FactResellerSales et FactInternetSales en contiennent plus (notamment GBP).
    Et même s'il y avait des conversions cachées d'une devise vers l'autre, l'incohérence est aussi présente pour chaque devise, e.g. le dollar étasunien :
    • FactFinance : 20 Millions de coûts de vente
    • FactResellerSales 53 millions + FactInternetSales 8 millions.


    ça ne colle pas...
    lorsque j'applique ce raisonnement au chiffre d'affaires, j'obtiens les mêmes incohérences.

    Est-ce que quelqu'un a déjà constaté ce problème et pourrait partager sa résolution ?

    J'ai conscience que ce message ne doit pas intéresser grand-monde, car il concerne une version d'une base de données de test, mais sait-on jamais...

    Merci d'avance pour votre aide.



    Pour information, ma requête SQL est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    SELECT distinct 'from FactFinance :','0' FROM dbo.FactFinance ff
    UNION ALL
     
    SELECT 
    dc.CurrencyAlternateKey as Currency, FORMAT(sum(ff.Amount),'N','en-en') as TotalCostOfSales
    FROM dbo.FactFinance ff
    INNER JOIN dbo.DimAccount da ON ff.AccountKey = da.AccountKey
    INNER JOIN dbo.DimOrganization do ON ff.OrganizationKey = do.OrganizationKey
    INNER JOIN dbo.DimCurrency dc ON do.CurrencyKey = dc.CurrencyKey
    WHERE ff.ScenarioKey = 1 AND AccountDescription in ('Standard Cost of Sales','Variances')-- scenario = 1 to get only actual figures
    GROUP BY dc.CurrencyAlternateKey
     
    UNION ALL
    SELECT distinct 'From FactResellerSales','0' FROM dbo.FactFinance ff
    UNION ALL
     
    SELECT 
    dc.CurrencyAlternateKey as Currency, FORMAT(sum(rs.TotalProductCost),'N','en-en') as TotalCostOfSales
    FROM dbo.FactResellerSales rs
    INNER JOIN dbo.DimCurrency dc ON rs.CurrencyKey = dc.CurrencyKey
    GROUP BY dc.CurrencyAlternateKey
     
    UNION ALL
    SELECT distinct 'From FactInternetSales','0' FROM dbo.FactFinance ff
    UNION ALL
     
    SELECT 
    dc.CurrencyAlternateKey as Currency, FORMAT(sum(rs.TotalProductCost),'N','en-en') as TotalCostOfSales
    FROM dbo.FactInternetSales rs
    INNER JOIN dbo.DimCurrency dc ON rs.CurrencyKey = dc.CurrencyKey
    GROUP BY dc.CurrencyAlternateKey

  2. #2
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    17 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 17 334
    Points : 40 140
    Points
    40 140
    Billets dans le blog
    1

    Par défaut

    Les données de ces bases sont a priori aléatoires pour un certain nombre d'éléments et comportent en outre certaines données fausses, afin de permettre de montrer des requêtes d'extractions de données incorrecte. Ne la prenez pas pour argent comptant si j'ose dire !

    Pour ma part j'utilise mes propres bases de training (et en français, le handicap de l'anglais des noms des objets est pénalisant pour l’apprentissage)e dont les données sont cohérentes

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  3. #3
    Membre régulier Avatar de Rubicon
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations forums :
    Inscription : octobre 2008
    Messages : 77
    Points : 124
    Points
    124

    Par défaut

    Citation Envoyé par SQLpro Voir le message
    Pour ma part j'utilise mes propres bases de training (et en français, le handicap de l'anglais des noms des objets est pénalisant pour l’apprentissage)e dont les données sont cohérentes
    Merci beaucoup pour votre retour. L'avantage de cette base de données AdventureWorksDW2012 est.... qu'elle existe déjà tout simplement... Les tables, leurs relations, clés étrangères et tables de dimension pour les agrégations sont déjà là.... sans être un SysDBA gourou, j'ai pu la télécharger, et l'utiliser pour connecter un logiciel de reporting à la base de données SQL Server gratuitement.

    Avez-vous fabriqué vous-mêmes vos bases d'entrainement ?
    Si vous connaissez des bases fonctionnant avec SQL Server, gratuites (en francais ou pas) disponibles sur internet, je serais reconnaissant pour toute recommandation.

    Merci.

  4. #4
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    17 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 17 334
    Points : 40 140
    Points
    40 140
    Billets dans le blog
    1

    Par défaut

    Vous avez déjà la mienne : http://sqlpro.developpez.com/cours/bddexemple/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  5. #5
    Membre régulier Avatar de Rubicon
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations forums :
    Inscription : octobre 2008
    Messages : 77
    Points : 124
    Points
    124

    Par défaut

    Même si cette base ne correspond pas à mon besoin d'avoir - entre autres - des données plus comptables (compte de résultat, bilan) reliées aux données opérationnelles (ventes), je vous remercie de l'avoir indiquée ici.

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/03/2006, 18h25
  2. supprimer des données dans la base
    Par Commodore dans le forum PHP & MySQL
    Réponses: 5
    Dernier message: 07/02/2006, 03h43
  3. Modifier des données dans une base de donnée
    Par leloup84 dans le forum PHP & MySQL
    Réponses: 1
    Dernier message: 26/01/2006, 10h56
  4. Lire une donnée dans la base de registre
    Par K.othmane dans le forum Langage
    Réponses: 1
    Dernier message: 06/01/2006, 12h32
  5. question sur le rafraichissement des données dans la base
    Par vbcasimir dans le forum Bases de données
    Réponses: 8
    Dernier message: 06/06/2005, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo