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 :

Historisation vs Alimention ligne table de faits en 2 temps


Sujet :

Conception/Modélisation

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : octobre 2015
    Messages : 16
    Points : 18
    Points
    18
    Par défaut Historisation vs Alimention ligne table de faits en 2 temps
    Bonjour a tous,

    CONTEXTE
    Je suis en train de realiser une table de faits sur les ventes.
    chaque ligne de ma table represente un produit d'une commande pour un client.
    Parmi d'autres champs j'ai notamment les 3 champs suivant :
    - prix_achat
    - prix_vente
    - marge


    PROBLEME
    Au moment ou je vends un produit, je ne connais pas son prix d'achat exact, etant donne que je payerai ce produit en fonction du taux de change en vigueur le jour du paiment.
    Je connais donc la valeur de mon champ prix_achat entre 1 semaine et 2 mois apres la vente de mon produit.
    En effet mon entreprise a un arrangement qui lui permet de payer ses fournisseurs tous les 15 du mois suivant, a partir du mois de reception du produit.
    Ayant des fournisseurs dans plusieurs pays, le taux de change pose probleme.

    RESULTATS ATTENDUS
    Je dois generer 2 rapports mensuels et 1 rapport annuel :
    - 1 rapport le 1er du mois avec le taux de change de la date de commande
    - 1 rapport le 15 du mois avec le taux de change du 15 du mois
    - 1 rapport annuel avec les taux de change en vigueur a la date du paiment


    EXEMPLE
    Je commande le 3 juillet un produit, ce produit m'est livre le 7 aout, je payerai le 15 septembre le montant du produit avec le taux de change du 15 septembre.


    SOLUTIONS
    Je vois pour l'instant 3 solutions :

    1. a) creer 2 champs prix_achat_reel (qui sera egal a 0) et prix_achat_temporaire (qui prend immediatement la valeur du prix d'achat avec la taux de change en vigueur a la date de la commande)
      b) faire un update de cette ligne en remplissant le champ prix_achat_reel (prix d'achat avec le taux de change en vigueur a la date reelle de paiment.
    2. a) creer 1 ligne dans la table de faits avec un champ prix_achat qui utilisera le taux de change de la date de la commande
      b) creer 1 nouvelle ligne presque identique a la premiere mais cette fois-ci le prix_achat prends la valeur reelle du taux de change le jour du paiment.
    3. a) creer 1 ligne dans la table de faits avec un champ prix_achat qui utilisera le taux de change de la date de la commande
      b) faire un update de cette ligne en ecrasant la valeur prix_achat temporaire par la valeur reelle du taux de change a la date du jour du paiment.


    La 4eme solution magique vous appartient.

    Merci pour votre aide.
    N'hesiter pas a me demander davatange de precisions.

    Bonne journee,

  2. #2
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    As tu pensé que tu pouvais enregistrer le prix "d'origine", c'est à dire dans sa valeur monétaire d'achat, en rajoutant par exemple une colonne "currency"
    Et avoir à coté une table de taux de change quotidienne, à partir de laquelle tu pourrais directement convertir ton prix à la date que tu veux ?

    Tes rapports seront simplement un jeu de requète, tu auras le premier ou tu joins ta table de conversion sur la date de commande, le deuxieme, ou tu joins au 15 du moins, et enfin le troisieme ou tu joins sur la date d'achat. Au final, le prix de ton article n'est pas censé bouger. Donc pas de raison de le mettre à jour. C'est ta table de conversion qu'il faudrait mettre à jour, non ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : octobre 2015
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Bonjour bstevy,

    Merci pour ta reponse.

    Si je comprends bien, cette table Currency serait donc une table de dimension qui serait reliee a ma table de fait Ventes dans le Data Warehouse.
    Ainsi, chaque ligne de ma table de faits possederait 1 cle etrangere unique qui la relierait a la table Currency.
    Probleme: j'ai justement besoin de plusieurs taux de change differents pour chaque ligne de ma table de fait (sauf si je creer une nouvelle ligne comme je le proposais dans ma solution 2), puisque je genere des rapports a different moments (1er du mois, 15 du mois et annuel).

    Ainsi dans ta solution, une fois que je fais 1 jointure entre ma ligne de la table de faits Vente et la table de dimension Currency, j'ai une cle etrangere unique. Comment vais-je gerer le changement lorsque j'aurais paye mon fournisseur et que je serais enfin en mesure d'attribuer le taux de change reel a cette vente.

    Mon probleme est-il plus clair ?

    Merci en tout cas.

  4. #4
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    Si tu veux te cantonner à un modèle ultra rigoureux de dimension-fait en étoile, avec une joiture simple sur la clef technique, alors, tu peux oublier la table des currency.

    Dans ce cas là, il vaut mieux pour toi faire trois colonnes, qui seront donc trois fait different, prix à la commande, prix au 15, prix à l'achat.
    Et tu update ta ligne mais le process est super lourd.


    La table currency, c'est une table de paramétrage.
    Le lien entre table de fait et ta table de currency se fait par la dimension temps, et elle est juste là pour transcoder ton prix d'une currency à l'autre, et n'est utilisé que dans le reporting.
    Le lien n'est pas sur une clef entre fait et dimension, puisque tu veux par exemple ton prix au 15 du mois... cette information est propre à ton rapport, pas à tes données.
    Tu peux ajouter en plus de la dimension temps, la dimension currency si tu as besoin de convertir differentes monaie.

    Et derrière, il a y un calcule à effectuver, soit en base, soit en reporting, mais ca devrait pas t'allourdir ton requetage plus que ca.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : octobre 2015
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Merci pour ta reponse.
    Je vais effectivement creer une table de parametrage CURRENCY.
    Neanmoins je devrais aussi effectuer un UPDATE sur mes lignes de la table de faits car je devrais ajouter la date effective de paiement, afin justement de pouvoir faire matcher la ligne de la table de fait avec le bon taux de change en vigueur a la date du paiement.
    Je ne vois pas comment faire autrement

    Bonne journee,

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 24/01/2016, 11h03
  2. Réponses: 2
    Dernier message: 20/03/2012, 18h30
  3. Alimenter la table de fait
    Par NeverMind dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 10/09/2009, 09h25
  4. Réponses: 8
    Dernier message: 07/07/2009, 10h00
  5. Alimenter la table de fait en mode incrémental
    Par challenger84 dans le forum Alimentation
    Réponses: 8
    Dernier message: 12/08/2008, 09h18

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