IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Comment organiser les colonnes d'une table de faits en fonction des besoins ?


Sujet :

SQL Oracle

  1. #1
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 108
    Points : 163
    Points
    163
    Par défaut Comment organiser les colonnes d'une table de faits en fonction des besoins ?
    Hello, Bonjour à tous.

    Pour un nouveau projet, je dois créer une table de fait.

    Ayant déjà tous les besoins des utilisateurs, je me demande comment créer cette table et organiser les colonnes afin de me donner les meilleures performance et aussi éviter les sous requêtes.

    En temps normal mes tables sont organiser en général de la manière suivante (star schema avec mes dimensions) :

    Fact table :
    • GEO_ID (FK avec dimension)
    • MONTH_ID (FK avec dimension)
    • YEAR_ID (FK avec dimension)
    • TIMESERIES_ID (FK avec dimension)
    • SCENARIO_ID (FK avec dimension)
    • VALUE


    Cependant, lorsque je souhaite faire des comparaisons entre le mois actuel et le mois précédent, il me faut au minimum une sous requête.

    J'ai déjà organiser une table de fait de la manière suivante lors d'un précédent projet:

    • GEO_ID
    • YEAR_ID
    • TIMESERIES_ID
    • VAL_MONTH_01
    • VAL_MONTH_02
    • VAL_MONTH_03
    • ...
    • VAL_MONTH_12



    De manière générale les besoins sont :

    - afficher le mois courant
    - afficher le mois précédent
    - afficher le budget pour le mois courant
    - afficher la variance entre mois courant et budget
    - ...


    Si quelqu'un dans l'assemblée à une idée pour organiser ma table de fait de la meilleure façon afin de débuter mon projet sur de bonnes bases je suis preneur.

    Juste pour être sur je ne demande pas d'aide pour faire les "select" ou le "create".. je ne souhaite que discuter du design de la table.

    Par avance, merci pour votre aide.

    Cordialement,

    Raph.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 098
    Points : 28 403
    Points
    28 403
    Par défaut
    La première structure est bien sur préférable. Dans le second cas il est nécessaire de modifier les colonnes sélectionnées en fonction du mois consulté alors que dans le premier il ne s'agit que d'un critère de restriction.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 108
    Points : 163
    Points
    163
    Par défaut
    Merci pour la réponse.

    Je pensais qu'il existait un design de Fact Table permettant de simplifier la comparaison entre deux mois (ou plus).

    Car, avec cette méthode "classique", je dois avoir une ou plusieurs sous requête si je veux afficher en une seule requête:

    la valeur du mois courant | la valeur du mois précédent | la différence

    Je laisse le post ouvert encore un peu si quelqu'un a une autre idée.

    Merci d'avance.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 383
    Points
    18 383
    Par défaut
    Citation Envoyé par raph-68i Voir le message
    Car, avec cette méthode "classique", je dois avoir une ou plusieurs sous requête si je veux afficher en une seule requête:
    la valeur du mois courant | la valeur du mois précédent | la différence
    Non, une requête suffit.

    Regardez les fonctions LEAD / LAG, ainsi que PIVOT.

  5. #5
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Je ne suis pas vraiment spécialiste dans le domaine mais à ce que j'ai (peut-être mal) compris dans un modèle pour un DW l n'est pas de tout choquant d'organiser le données en dé-normalisant les 12 mois de l'année. Donc je suis preneur plutôt de la deuxième solution.

  6. #6
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 108
    Points : 163
    Points
    163
    Par défaut
    Merci a tous pour vos réponses.

    Pour ce projet j'ai utilisé la méthode de base :

    Fact table :
    GEO_ID (FK avec dimension)
    MONTH_ID (FK avec dimension)
    YEAR_ID (FK avec dimension)
    TIMESERIES_ID (FK avec dimension)
    SCENARIO_ID (FK avec dimension)
    VALUE

    Je vais continuer a me renseigner mais a priori pas de méthode miracle dans les livres de Ralph Kimball.

    Bonne journée.

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 383
    Points
    18 383
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Je ne suis pas vraiment spécialiste dans le domaine mais à ce que j'ai (peut-être mal) compris dans un modèle pour un DW l n'est pas de tout choquant d'organiser le données en dé-normalisant les 12 mois de l'année. Donc je suis preneur plutôt de la deuxième solution.
    Aucun soucis quant à la dénormalisation en DWH, néanmoins la solution "colonne" impose la problématique de mise à jour de la donnée, sachant que les updates c'est toujours un peu lent.

    C'est le critère de performance qui est déterminant : si le PIVOT est assez rapide (moins de 60 sec pour afficher le reporting), pas besoin de dénormaliser.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/09/2011, 09h03
  2. Comment rendre les colonnes d'une Table de même longueur avec LWUIT ?
    Par andrianiaina dans le forum Développement Mobile en Java
    Réponses: 0
    Dernier message: 25/05/2011, 07h35
  3. Réponses: 2
    Dernier message: 05/07/2010, 23h45
  4. Comment supprimer les doublons d'une table?!
    Par JauB dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/01/2006, 08h48
  5. comment modifier les données d'une table à travers un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 12
    Dernier message: 19/07/2005, 09h51

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