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

SSIS Discussion :

Populer une dimension avec hiérarchie parent/enfant


Sujet :

SSIS

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 32
    Points
    32
    Par défaut Populer une dimension avec hiérarchie parent/enfant
    Bonjour,

    comment fait on pour populer une dimension qui gère une hiérarchie?

    Exemple avec une dimension entité.

    La table de la BDD transactionnelle contient un id entité, un nom entité, et un id entité parent.

    Dans mon Datawarehouse, la dimension Entité contient un id entité, un nom entité, un id entité fille et son nom, et un id entité "sous" fille et son nom. Il y a donc deux niveaux de hiérarchie.

    Il s'agit d'un cas courant de conception d'une dimension d'un cube, en revanche, je n'ai pas vu de doc pour la populer sous SSIS.

    Merci!

  2. #2
    Membre éclairé Avatar de Bernardos
    Homme Profil pro
    Consultant Senior dba sql server & Microsoft Business Intelligence
    Inscrit en
    Avril 2008
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant Senior dba sql server & Microsoft Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 332
    Points : 723
    Points
    723
    Par défaut
    Bonjour,
    Ce serait mieux d'avoir les structures des tables pour t'aider le plus efficacement possible. et encore mieux serait de mettre un script de création de tes tables et d'insertion d'un jeu de données.

    Je vois 2 solutions : une avec des lookup, une avec des jointures


    Sans structure je ne me peux pas me lancer dans l'écriture de requetes

    en plus quelque chose me turlupine je n'ai jamais vu de hiérachie décrite dans ce sens là. en règle général c'est plutot idEntité,IdPère,IDGrandPère.


    Bien à toi,

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

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

    Informations forums :
    Inscription : Juillet 2010
    Messages : 240
    Points : 359
    Points
    359
    Par défaut
    Je suis d'accord avec Lbernard c'est plus des relations parents enfants que tu décris

    Avec SSIS tu peux t'aider des Lookups pour faire cela.

    Tu récupères des données brutes sans le ID parent, puis tu vas créer un colonne qui va récupérer l'ID du parent...et c'est ton lookup qui va récupérer les ID parents.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 32
    Points
    32
    Par défaut
    Merci pour vos réponses, je vais les étudier.

    Pour répondre à lbernard, la structure de la table en BDD est très simple:

    IdEntite int PK
    NomEntite nvarchar(50)
    IdEntiteParent int FK

    L'IdEntiteParent fait référence à la clef primaire IdEntite

    Ainsi on aurait:

    IdEntite | NomEntite | IdEntiteParent

    1 | Entite Mère |
    2 | Entite Fille |1
    3 | Entite Soeur |1
    4 | Entite Petite Fille |3

    Dans le DataWarehouse, on devrait avoir cette logique de structure:

    IdEntite
    NomEntite
    IdEntiteMere
    NomEntiteMere
    IdEntiteGrandMere
    NomEntiteGrandMere

    Tu as raison lbernard concernant la structure de la hiérarchie.
    Le mieux serait que la structure soit créée dynamiquement, je pense que c'est possible, avec un ADD Column, mais je débute en T SQL, ce n'est pas évident.

    Sinon il y t'il une solution plus simple?

  5. #5
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Pour le côté dynamique tu peux le faire avec des CTE, c'est rigolo . J'avais posté un truc là dessus. http://fjehl.blogspot.com/2010/10/sq...en-lignes.html

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 32
    Points
    32
    Par défaut
    Salut FrancoisJehl, je ne trouvais pas les CTE marrante justement lol, mais je n'avais pas vu le post sur ton blog dans mes recherches. Sinon, j'ai pu voir également que la hiérarchie était gérée au niveau de SSAS (je sais je sors du cadre de ce forum SSIS mais je ne peux pas faire autrement que d'en parler ici ).

    Donc voici le jeu de données dans ma dimension:

    http://imageshack.us/photo/my-images...hierarchi.png/

    Les FK_Entite dans la table de fait:

    http://imageshack.us/photo/my-images...nitedanst.png/

    La configuration de la dimension Entité:

    - L'ID Parent

    http://imageshack.us/photo/my-images...nfigidpare.png

    - La clef primaire IdEntite

    http://imageshack.us/photo/my-images...asconfigpk.png

    La restitution sur SSAS

    http://imageshack.us/photo/my-images...ehierarchi.png

    Au niveau des données le résultat est bien cohérent (c'est déjà ça^^):

    - 7 à l'entité mère (id 1)
    - 6 enregistrements de la table de fait sont associés à l'entité fille(id 2)
    - 3 à l'entité soeur (id 4)
    - 6 à l'entité petite fille (id 3)

    Dans la restitution, comme vous le constatez dans le niveau 3, l'entité mère est affichée, et dans le niveau 4 l'entité fille est affichée.

    Alors je viens de résoudre ce problème en direct live, pour cacher l'élément parent, il suffit d'aller dans les propriétés de l'attribut Parent et passer le paramètre MenbersWithData à NonLeafDataHidden.^_^

    Du coup tout est ok. Avant de passer le post à Résolu, existe t'il un meilleur moyen de gérer la gestion parent/enfant, ta méthode FrançoisJehl est elle plus optimisée?

    @++

  7. #7
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Si tu as un besoin de dynamicité dans les nombres de niveaux, ou du rollup pas standard voire pas trop de membres (allez une métrique , pas plus de l'ordre de 250000 comme dit le performance guide.) tu peux garder ta parent child.
    Le type d'instruction SQL que j'ai montré est un des moyens de la mettre à plat que tu peux utiliser côté SSIS mais il n'y a pas forcément besoin de cela.
    J'avais écrit un truc là dessus, parce que les parent child c'est quand même utile dans pas mal de cas: http://fjehl.blogspot.com/2009/12/ss...tchild-ou.html

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 32
    Points
    32
    Par défaut
    Merci pour ta réponse FrançoisJehl, effectivement les niveaux hiérarchiques ne doivent pas être prédéfinis en dur, et c'est pour cela que garder la relation parent/enfant dans ma dimension me paraissait pratique, SSAS fait le travail très bien sur mon échantillon. Quand tu parles de membre, pas plus de 250000, il s'agit des enregistrements dans la dimension? Dans ce cas la solution convient parfaitement à mes besoins:

    - Gestion dynamique des niveaux de hiérarchie
    - Moins de 250 000 enregistrements dans ma dimension
    - Facile à la maintenance

    Je peux passer le post à résolu

    Merci à tous!

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

Discussions similaires

  1. [SQL2K5][SSAS] Hiérarchie Parent/enfant
    Par Jinroh77 dans le forum SSAS
    Réponses: 4
    Dernier message: 08/07/2008, 11h25
  2. Réponses: 2
    Dernier message: 19/06/2008, 18h23
  3. Réponses: 1
    Dernier message: 18/06/2008, 00h10
  4. [BO 6.5.1]Forcer une dimension avec une section
    Par ruru9 dans le forum Deski
    Réponses: 1
    Dernier message: 24/04/2008, 21h32
  5. Réponses: 1
    Dernier message: 27/07/2007, 08h45

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