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

Conception/Modélisation Discussion :

Entrepot de Données de gestion Achats par SSIS


Sujet :

Conception/Modélisation

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Entrepot de Données de gestion Achats par SSIS
    Bonjour;
    Pour la création simple d'un entrepôt de données j'ai besoin de regrouper les données opérationnels de 2 Sociétés.
    J'ai:
    DimFrs
    DimArticle
    DimSociete
    DimDate
    FactCommande

    Je charge Les données sur FactCommande par SSIS depuis la table LigneCde et Cde

    Le souci c'est comment différencier Le fournisseur de chacune des sociétés (au moment du reporting)!!!
    Meme soucis avec les articles (peut y avoir le meme code articles sur les deux Societe)

    Exmple: Ligne FactCommande
    Article_FK Fournisseur_FK Societe_FK Date_FK PrixUnitaire Quantite MontantHT MontantTTC TVA
    CL0002 4411L01 SocieteX 2015-05-13 00:00:00.000 4067.86 30.00 122035.80 12203.58 10.00
    RM2232 4411S87 SocieteY 2015-05-13 00:00:00.000 690.00 1.00 690.00 138.00 20.00
    RM0786 4411S87 SocieteX 2015-05-13 00:00:00.000 20.00 1.00 20.00 4.00 20.00


    Merci de me montrer le chemin

  2. #2
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Bonjour,

    c'est malheureusement un cas d'usage qui va sortir de la théorie: il n'y a pas de référentiel, ou plutôt il y en a 2 qu'il faut fusionner (ou pas).

    Questions:
    - est-ce que le fournisseur 4411S87 est le même dans les 2 sociétés ou est-ce que 2 fournisseurs différents peuvent avoir le même identifiant ?
    - est-ce que l'article RM2232 est le même dans les 2 sociétés ? A priori vous avez déjà répondu non à cette question, mais je reformule pour être sûr.

    Si 1 même ID peut être attribué à 2 fournisseurs ou articles différents, chacun dans sa société, alors ça veut dire que les ID fournis par les systèmes sources ne vous servent qu'à faire le rapprochement avant le DWH mais ne peuvent pas être conservés après. Dans ce cas, pas le choix : il faut construire un nouvel ID (technique avec un champs IDENTITY ou fonctionnel en concaténant l'ID article et l'ID société, des râleurs vous diront qu'il ne faut pas mais moi les râleurs... ) et utiliser cet ID entre le fait et les dimensions.

    En détail:

    Ajouter à la table ArticleX de la société X un champ ID_New = 'X' & '-'& Article_FK
    Ajouter à la table temporaire FactCommandeX de la société X un champ Article_FK_New = 'X' & '-'& Article_FK

    Ajouter à la table ArticleY de la société Y un champ ID_New = 'Y' & '-'& Article_FK
    Ajouter à la table temporaire FactCommandeY de la société X un champ Article_FK_New = 'Y' & '-'& Article_FK

    A partir de maintenant les champs Article_FK ne servent plus à rien, il faut utiliser Article_FK_New

    Faire un UNION entre FactCommandeX et FactCommandeY pour créer la table unifiée FactCommandeY

    Faire un UNION entre ArticleX et ArticleY pour créer la table unifiée Article

    Une fois ça terminé, le résultat est parfaitement exploitable et les râleurs peuvent commencer à réclamer l'application de bonnes pratiques, etc.


    Par contre, d'un point de vue business ce n'est pas génial. Ce que je ferais c'est que je prendrais ArticleX et ArticleY et je chercherais à construire une table de correspondance (un mapping) entre un ID de ArticleX et un ID de ArticleY. J'ai bien compris que 2 articles DIFFERENTS peuvent avoir le même ID, mais ça veut probablement dire que le MEME article peut se retrouver avec 2 ID différents dans les 2 sources, et ça c'est vraiment dommage. Donc en construisant une table de correspondance on donne la possibilité au business d'analyser réellement les chiffres consolidés au travers d'une dimension Article qui leur parle.

    Exemple: si "VTT XXX Homme 26 pouces modèle AGRXTC" a l'ID "XIEIIEIEI" chez la société X et l'ID "YDOAMPFLK" chez la société Y, on imagine bien que le business voudrait pouvoir analyser les ventes dans les 2 sociétés pour le même article. Avec un peu de chance, le NOM de l'article est le même donc à la restitution les chiffres seront naturellement regroupés sous le même nom. Par contre si ce n'est pas le cas il faut construire la table de correspondance.

    Bonne chance
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    merci nuke;
    je pensez ps que ca va etre aussi delicat.
    moi je pense surtout à une cle compose sur les table de dim et et fait (tjrs relié à une societe)
    j'essai de voir des exemples sur internet mais je trouve pas bcp.
    esperant que le livre de Kimbel que j'essai de trouver contiendra quelques unes
    Merci ,je vous tient au courant.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Hello,

    Une solution que j'utilise, un peu différente de celle proposée par nuke_y car je n'ai pas de tables temporaires, ou de tables ArticleX, ArticleY, etc..


    Il est possible de passer par une dimension
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DimArticle(id_Article PK, idSociete, CodeArticle, LibelleArticle)
    - Tu génère dans SSIS l'id en INT incrémental sur les couples (idSociete, CodeArticle) lorsque tu alimente ta dim
    - C'est cet id que tu remonte dans ta table de fait
    - Dans SSAS tu relies uniquement l'id article (pas besoin de clé composite qui peuvent provoquer des ralentissements).

    Effectivement, pour un article de Code "ABC", il se retrouvera dans la dim autant de fois qu'il y a de sociétés.
    Par contre cette modélisation permet d'appliquer des rôles SSAS à la dimension, et de filtrer pour la Société X que les membres Articles avec idSociete = X.

    C'est une question qu'il faut poser au métier. Par exemple, une société n'a pas forcément envie que l'autre société voit ses fournisseurs. Aussi, une société qui ne vend pas l'article "ABC" ne veut pas forcément le voir dans sa liste d'articles. Etc..

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    merci thibault974

    l'utilisation de clé automatique est très recommandé dans DW;en séparant la clef métier.
    mais c au moment de l’alimentation de la table de fait que je sait pas quoi faire!!

    j’alimente avec le Id ou avec la code métier ??et commant faire la liaison avec la source metier des donnée si j utilise le code Auto généré??
    Article_FK va prendre quel Valeur >> 12 ou CQ00343 ?


    (
    FaitCommande
    (
    Article_FK
    Fournisseur_FK
    Societe_FK
    Date_FK
    PrixUnitaire Quantite
    MontantHT
    MontantTTC TVA
    )



    merci de contribuer à résoudre ce cas ;-)

  6. #6
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Qu'est-ce qui n'est pas clair là-dedans ?

    Ajouter à la table ArticleX de la société X un champ ID_New = 'X' & '-'& Article_FK
    Ajouter à la table temporaire FactCommandeX de la société X un champ Article_FK_New = 'X' & '-'& Article_FK

    Ajouter à la table ArticleY de la société Y un champ ID_New = 'Y' & '-'& Article_FK
    Ajouter à la table temporaire FactCommandeY de la société X un champ Article_FK_New = 'Y' & '-'& Article_FK

    A partir de maintenant les champs Article_FK ne servent plus à rien, il faut utiliser Article_FK_New

    Faire un UNION entre FactCommandeX et FactCommandeY pour créer la table unifiée FactCommandeY

    Faire un UNION entre ArticleX et ArticleY pour créer la table unifiée Article
    Les clés techniques auto-générées ou pas n'ont aucune espèce d'importance en BI. La Business Intelligence c'est de l'informatique dédiée au Business, et le Business il n'en a rien à faire d'une clé technique auto-générée, c'est un problème d'informaticien ça. Quelle que soit la solution technique envisagée elle peut toujours être améliorée ou faite différemment, mais il ne faut jamais perdre de vue le besoin d'analyse du Business. Donc il faut commencer par leur demander leur vision de la manière dont les données doivent être fusionnées. C'est primordial.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Pour répondre à nuke_y, oui c'est un problème d'informaticien. Je ne dis pas que ta solution ne fonctionne pas, je dis juste que la clé en int autogénérée prend moins de place, plus facile à générer, plus de performance dans des requetes de jointures, que ce soit en SQL ou dans SSAS.

    Pour répondre à djmad, il faut que ta jointure se fasse sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RequeteCommande.CodeArticle = DimArticle.CodeArticle AND RequeteCommande.Societe = DimArticle.IdSociete
    et dans ta requete tu renvoie DimArticle.IdArticle.

    Si tu fais une alimentation en SSIS, tu fais un Lookup sur les champs CodeArticle et IdSociete, en renvoyant l'idArticle.

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par thibault974 Voir le message
    Pour répondre à nuke_y, oui c'est un problème d'informaticien. Je ne dis pas que ta solution ne fonctionne pas, je dis juste que la clé en int autogénérée prend moins de place, plus facile à générer, plus de performance dans des requetes de jointures, que ce soit en SQL ou dans SSAS.

    Pour répondre à djmad, il faut que ta jointure se fasse sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RequeteCommande.CodeArticle = DimArticle.CodeArticle AND RequeteCommande.Societe = DimArticle.IdSociete
    et dans ta requete tu renvoie DimArticle.IdArticle.

    Si tu fais une alimentation en SSIS, tu fais un Lookup sur les champs CodeArticle et IdSociete, en renvoyant l'idArticle.

    Nom : Capture.PNG
Affichages : 329
Taille : 34,9 Ko
    bONJOUR.
    j ai utilisé les clef auto int avec une Recherche (Fichier Ci joint) à prendre votre avis si c bien la bonne demarche.

    à Gauche Champs issues de la table Metier(avec injection Champs Societe)
    à Droite La Table DimArticle déjà allimenté des bases articles des deux societes avec ajout champs Societe.

    Merci les gars si c bien correcte ce que j'ai fait.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Sur le principe, oui c'est exactement ça.

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par thibault974 Voir le message
    Sur le principe, oui c'est exactement ça.
    Nom : Capture1.PNG
Affichages : 298
Taille : 50,4 KoNom : Capture2.PNG
Affichages : 283
Taille : 13,6 Ko

    MERCI POUR TON AIDE;
    je sait pas la cause mais tous sont sans correspondance !!!!
    j’espère que j 'ai pas commis une faute de paramétrage.

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    bonjour,
    ça a du marcher en changer le paramètre de lookup vers Cache Partiel ,j 'ai pu récupérer les Clef Auto Généré.

    Merci pour votre aide ;j'essaierai d'affiner plus le Traitement.

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

Discussions similaires

  1. Entrepot de Données de gestion Achats par SSIS
    Par djmad dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 03/03/2016, 09h34
  2. Réponses: 0
    Dernier message: 02/03/2016, 18h56
  3. Réponses: 2
    Dernier message: 11/10/2005, 09h15
  4. Entrepot de donnée et base de prod sur le même serveur
    Par alpachico dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 17/08/2005, 14h39
  5. [entrepot de donnée] définition divers
    Par alpachico dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 04/08/2005, 17h16

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