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

Oracle Discussion :

Requête dimensions et table de fait


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Requête dimensions et table de fait
    Bonjour,

    Je cherche à faire une requête sur un data warehouse. J'ai une table de fait et 2 dimensions : dates et catégorie.

    Dans ma table de fait, j'ai des entrées pour certaines dates et catégories mais pas toutes.

    Je souhaite avoir le nombre de transaction par mois et catégorie. J'utilise la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT d.month_desc, 
               c.category_name,
               count(*)
    FROM    FactTransaction f,
               DimDate d,
               DimCategory c
    WHERE  f.catagory_id = c.category_id
    AND      f.date_id = d.date_id
    AND      d.year_id = 2012
    GROUP  by month_desc, category_name
    J'obtiens dans le résultat uniquement les combinaisons de mois et catégories pour lesquelles ils existe des transactions, or je souhaite avoir tous les mois et toutes les catégories mêmes celles pour lesquelles il y'a aucune transaction.

    ex :

    Janvier, Catégorie 1 = 0 (aucune transaction dans la table de fait)
    Janvier, Catégorie 2 = 3
    ...

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Essayez comme ceci :
    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
    WITH SR as
    (
        SELECT d.month_desc
             , f.category_id
             , count(f.date_id) as nb
          FROM DimDate d
     LEFT JOIN FactTransaction f
            ON f.date_id = d.date_id
         WHERE d.year_id = 2012
      GROUP BY d.month_desc
             , f.category_id
    )
        SELECT SR.month_desc
             , c.category_name
             , coalesce(SR.nb, 0) as nb
          FROM DimCategory c
     LEFT JOIN SR PARTITION BY (month_desc)
            ON SR.category_id = c.category_id;

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup Waldar, j'ignorais l’existence du partitionnement des jointures. Quand je faisais mes jointures ouvertes, je me retrouvé avec un null dans les catégories !

    Je marque le post comme résolu.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Ça n'existe que chez Oracle à ma connaissance.
    http://docs.oracle.com/cd/B19306_01/...2.htm#i2177515

    J'en avais déjà parlé dans ce sujet, si ça vous intéresse :
    http://www.developpez.net/forums/d74...ion-procedure/
    Notez que le sujet en question contient des liens vers mon blog que j'ai fermé depuis.

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

Discussions similaires

  1. cardinalite entre table de fait et dimension ?
    Par mederik dans le forum Conception/Modélisation
    Réponses: 5
    Dernier message: 29/08/2017, 11h11
  2. Dimension ou table de faits?
    Par Xtream071 dans le forum Conception/Modélisation
    Réponses: 10
    Dernier message: 20/07/2016, 15h18
  3. Alimentation de la table de faits & dimension temps?
    Par footmaster dans le forum Alimentation
    Réponses: 4
    Dernier message: 16/02/2011, 00h53
  4. Réponses: 2
    Dernier message: 03/02/2008, 23h31
  5. enregistrer le résultat d'une requête comme table, comment fait-on ?
    Par Monbasinstinct dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/02/2007, 16h21

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