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

BODI Discussion :

BO Data Integratoir : history preserving


Sujet :

BODI

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut BO Data Integratoir : history preserving
    Bonjour à tous,

    Je viens de commencer les ETL avec BODI, et j'ai besoin d'historiser des lignes à l'aide de l'history preserving, mais cela ne semble pas fonctionner.
    Voilà les détails de mon problème :

    1) Données fonctionnelles :

    Je récupère via un ODS des données telles que :
    id_cli /----/ region_com /----/ region_facturation /----/ region_geo

    Je veux une table cible Dim de mon DWH conservant un historique des modifs de régions en rajoutant 3 champs :
    date_deb /----/ date_fin /----/ flag_act

    J'ai donc mis ma clé primaire de ma table cible sur id_cli et date_deb.

    2) Première phase : Table Comparison

    Je fais un premier Table Comparison chargé de taguer les lignes à updater ou à insérer. Je fais ma comparaison au niveau des champs id_cli et des régions.

    3) Deuxième phase : History Preserving

    Je place à la suite mon History Preserving pour qu'il ne me remplace pas mes lignes mais me les conserve en changeant uniquement les dates et le flag.
    Mes colonnes à comparer restent id_cli et les régions, et je met date_deb pour la date début de validité et date_fin pour la fin de validité. Cette date fin est automatiquement remplie à 31/12/9999 par l'objet history preserving.
    La date début quand à elle provient du dernier mapping et est mappée en "sysdate()".
    Pour le current flag, je rentre ma colonne flag_act et pour les valeurs de flag, je met 1 pour la set velue et 0 pour la reset value.

    4) Enfin je relie le flux history preserving à la table cible et je lance...

    Et là je vois que ça ne fais pas du tout ce que je veux, en effet selon la doc technique, l'objet history preserving devrais m'updaté les lignes taguées en update par le Table Comparison en remplaçant la date fin par la date début paramétrée dans le mapping (sysdate) et remplacer mon flag par la reset value (0).
    Ensuite elle devrait insérer les nouvelles lignes...

    Sauf qu'au final aucun update ne marche, et j'ai seulement 1 nouvelle ligne d'insérée...

    Est-ce que qqn a réussi à faire fonctionner ce foutu history preserving ??

  2. #2
    Membre confirmé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Mai 2006
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2006
    Messages : 363
    Points : 521
    Points
    521
    Par défaut
    Bonjour,

    Est-ce que tu as bien défini ton objet table comparison?

    pour identifier qu'une ligne est bien dans ton DataWarehouse, il faut lui donner les lignes permettant d'identifier de manière unique les lignes de ton DataWarehouse (donc si j'en crois ton modèle : id_cli)
    Tu dois ensuite définir sur quel champ tu vas définir ton historisation (d'après ton modèle région_com)

    BODI identifiera donc ton client et, s'il repère une modification du champ région_com, historisera le tout

    Si je n'ai pas été assez clair, n'hésiter pas à me demander de ré-expliquer

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    Je pense avoir bien rempli mon Table Comparison, j'ai mis à gauche (input primary key columns) mon id_cli ; puis à droite (compare columns) j'ai mis mes 3 champs régions + mon i_cli...

    Ensuite j'ai branché un History Preserving à la suite du Table Comparison avec en compare columns les même que le Table Comparison.

    Mais bon cela ne marche pas du tou...

  4. #4
    Membre confirmé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Mai 2006
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2006
    Messages : 363
    Points : 521
    Points
    521
    Par défaut
    il ne faut pas mettre le id_cli dans la box à droite

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    il ne faut pas mettre le id_cli dans la box à droite
    Tu rigoles, bien sûr qu'il faut, ça me permet de savoir si c'est le bon champ à comparer ou non !!

    Bon j'ai résolu mon problème tout seul en fait : il s'agissait d'une petite erreur minime : j'avais mis le type DATE_DEB en Date plutôt que DATETIME, et de plus je m'étais trompé de table pour la comparaison

    Mais bon j'ai réussi, ça marche bien history preserving en fait !!

  6. #6
    Membre confirmé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Mai 2006
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2006
    Messages : 363
    Points : 521
    Points
    521
    Par défaut
    dans le history preserving tu as de box:
    La box de gauche qui te donne les champs permettant d'identifier que la ligne que tu es en train d'ajouter est la même que celle de la table cible
    La box de droite sur laquelle tu indiques les champs que tu veux surveiller, ceux sur lesquels tu veux détecter les changements

    ton identifiant est la clé de la table cible, il permet donc d'identifier les lignes sur lesquels tu vas faire des update, il ne changera donc jamais, il est donc inutile de le mettre dans ta box de droite. il est d'autant plus inutile de le mettre dans cette box que si tu fais ton traitement sur une grosse volumétrie de données, cela t'ajoutera un vérification toujours vraie pour chaque ligne

    Exemple :
    Tu as dans ta table cible :
    1;Region3;Region3;Region3;10/11/2007;31/12/9999;1
    2;Region1;Region2;Region2;10/11/2007;31/12/9999;1
    3;Region1;Region2;Region3;09/11/2007;10/11/2007;0
    3;Region1;Region2;Region1;10/11/2007;31/12/9999;1

    tu ajoutes les lignes suivantes :
    3;Region1;Region2;Region3
    4;Region4;Region5;Region6

    Durant l'exécution :
    pour la première ligne insérée, ton table comparison va vérifier les lignes de ta table dont l'id_cli est 3 et dont au moins une des 3 régions est différente
    Il va trouver une ligne (ma ligne en italique), donc ta ligne à insérer va passer en update
    Elle sera ensuite prise en charge par ton history preserving qui va te modifier la ligne actuellement active et ajouter ta nouvelle ligne avec les dates et flag qui vont bien

    Si tu suis ton raisonnement, le résultat sera le même, sauf que tu feras le test suivant : ton table comparison va vérifier les lignes de ta table dont l'id_cli est 3 et dont au moins une des 3 régions est différente ou dont le id_cli a été modifié
    La partie en italique est inutile

    Ça fait 14 mois que je me tape du BODI à peu près tous les jours, donc j'ai eu le temps de m'amuser un peu avec ses fonctionnalités

    Un conseil en passant, ne crées pas de fonctions à plusieurs opérandes, ta version de BODI ne le supporte pas

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut


    Ok je te remercie beaucoup pour ta réponse détaillée !!
    Je débute en BODI et je me suis laissé corrompre par la doc technique qui, elle, inclus les champs id dans les 2 box... Va savoir pourquoi !!

    Mais ton raisonnement est plus logique...

    Merci du tuyau au passage pour les opérandes !!
    J'espère te retrouver si j'ai un autre pb sous BODI

    Merci beaucoup en tous cas !!

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

Discussions similaires

  1. [SQL Server] Error converting data type varchar...
    Par Sir Tengu dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 13/06/2003, 10h46
  2. import de bd access 97 => sqlserveur : Data overf
    Par neo.51 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/03/2003, 15h17
  3. Query data set
    Par Sandra dans le forum JBuilder
    Réponses: 3
    Dernier message: 20/01/2003, 10h08
  4. [VB6] Erreur 9 sur redim preserve
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/10/2002, 17h29
  5. [Pointer]Treeview.Data
    Par rbag dans le forum Composants VCL
    Réponses: 7
    Dernier message: 31/08/2002, 01h44

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