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

Développement de jobs Discussion :

Vérifier qu'une valeur est conforme à une table repère


Sujet :

Développement de jobs

  1. #1
    Membre du Club
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2009
    Messages : 56
    Points : 55
    Points
    55
    Par défaut Vérifier qu'une valeur est conforme à une table repère
    Bonjour,
    J'ai 2 tables (j'avoue que la modélisation de cette bd dont j'ai "héritée" laisse à désirer ):
    1. Table1 qui contient (pour simplifier) des couples (code, valeur, région) du genre (code1, X, region1), (code1, null, region2), (code2, X, region2),...

    1. Table2 contient les valeurs normalement possibles pour chaque code de T1 du genre (code1, X), (code1, Y), (code1, Z), (code2, A),...

    Je souhaite créer un job qui me permette de vérifier que pour chaque ligne de T1 la valeur d'un code est conforme (ou pas) à celle prévue dans T2 , en ajoutant une colonne "Controle" dans T1 qui prend les valeurs OK ou KO.
    Quelqu'un aurait-il une idée des composants à utiliser?
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Ce que je ferais (pour une bdd oracle par exemple) :

    tOracleInput avec pour requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select table1.code, table1.region, table1.valeur, table2.code AS newCol
    from table1
    left outer join table2
    on table1.code = table2.code
    puis un tMap ou un tJavaRow qui remplace pour valeur de sortie newCol pour OK ou KO avec un condition du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (!Relational.ISNULL(row1.neCol) && !row1.neCol.equals("")) ? "ok" : "ko"
    Et une sortie pour finir

    nb : Mes champs sont de type String c'est pour ça que j'utilise .equals("")
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  3. #3
    Membre du Club
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2009
    Messages : 56
    Points : 55
    Points
    55
    Par défaut
    Merci Jsd03 pour ta réponse.
    J'ai effectivement pensé à une solution de ce type c'est dailleurs celle sur laquelle je suis en train de travailler:
    1. Une jointure entre Table1 et Table2 sur le champ code
    2. Un code java dans un Tmap pour calculer la valeur de newCol à partir de T1.code et de T2.code.

    Sauf qu'avec la jointure, pour chaque ligne de table 1, j'associe toutes les lignes de Table 2 => un exemple de lignes après jointure en me basant sur les exemples du 1er post:
    T1.code,T1.Valeur, T1.Région, T2.code, T2.valeur (libellés des colonnes)
    code1, X, region1, code1, X, 'OK'
    code1, X, region1, code1, Y, 'KO'
    code1, X, region1, code1, Z, 'KO'

    Le problème, c'est que je n'ai pas besoin des 2 dernières lignes (qui sont dailleurs incorrectes)...

  4. #4
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Tu ne les veux pas en sortie de ta requête ? ou en sortie de ton tMap ?
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  5. #5
    Membre du Club
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2009
    Messages : 56
    Points : 55
    Points
    55
    Par défaut
    Je ne les veux pas en sortie de mon tmap.

  6. #6
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    tu peux ajouter une condition sur ta sortie (bouton avec une flèche verte) et indiquer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    row1.valeur.equals("OK")
    row1 étant le nom de ton entrée.

    Par contre je ne comprend pas bien l'utilité de ne gardé que les "OK" en sortie de tMap alors que tu pourrais le faire directement dans ta requête pour récupérer uniquement les données qui matchent avec la table2 comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT table1.code, table1.region, table1.valeur, table2.code AS newCol
    FROM table1
    JOIN table2
    ON table1.code = table2.code
    Ou alors tu veux aussi que sa matchent avec la valeur du code et le code ?? Alors ce serait plutôt cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select table1.code, table1.region, table1.valeur, table2.code
    from table1
    join table2
    on table1.code = table2.code
    and table1.valeur = table2.valeur;
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  7. #7
    Membre du Club
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2009
    Messages : 56
    Points : 55
    Points
    55
    Par défaut
    Encore merci pour tes réponses.
    En fait ce que je souhaite c'est obtenir toutes les lignes de la table1 avec le flag de controle à OK ou à KO. J'en ai besoin pour faire des stats sur la qualité des données par région. Je ne peux donc faire de filtre à la sortie de mon tmap.
    Je viens de faire la rencontre du composant tDenormalize et je suis en train de faire des tests...
    N'hésite pas à me donner des idées !

  8. #8
    Membre du Club
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2009
    Messages : 56
    Points : 55
    Points
    55
    Par défaut Variable de contexte dans requête SQL
    Bonjour,

    Comment insère-t-on des variables de contexte dans une requête portée par un composant tDBInput?

  9. #9
    Membre du Club
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2009
    Messages : 56
    Points : 55
    Points
    55
    Par défaut
    Désolée pour le précédent post, il n'a rien à faire là...

  10. #10
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Citation Envoyé par lylau Voir le message
    Merci Jsd03 pour ta réponse.
    J'ai effectivement pensé à une solution de ce type c'est dailleurs celle sur laquelle je suis en train de travailler:
    1. Une jointure entre Table1 et Table2 sur le champ code
    2. Un code java dans un Tmap pour calculer la valeur de newCol à partir de T1.code et de T2.code.

    Sauf qu'avec la jointure, pour chaque ligne de table 1, j'associe toutes les lignes de Table 2 => un exemple de lignes après jointure en me basant sur les exemples du 1er post:
    T1.code,T1.Valeur, T1.Région, T2.code, T2.valeur (libellés des colonnes)
    code1, X, region1, code1, X, 'OK'
    code1, X, region1, code1, Y, 'KO'
    code1, X, region1, code1, Z, 'KO'

    Le problème, c'est que je n'ai pas besoin des 2 dernières lignes (qui sont dailleurs incorrectes)...
    j'ai une question, pourquoi dans ton post si dessus tu marques que les deux dernières lignes sont incorrectes ?
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  11. #11
    Membre du Club
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2009
    Messages : 56
    Points : 55
    Points
    55
    Par défaut
    j'ai une question, pourquoi dans ton post si dessus tu marques que les deux dernières lignes sont incorrectes ?
    Sauf qu'avec la jointure, pour chaque ligne de table 1, j'associe toutes les lignes de Table 2 => un exemple de lignes après jointure en me basant sur les exemples du 1er post:
    T1.code,T1.Valeur, T1.Région, T2.code, T2.valeur (libellés des colonnes)
    code1, X, region1, code1, X, 'OK'
    code1, X, region1, code1, Y, 'KO'
    code1, X, region1, code1, Z, 'KO'
    Ces deux dernières lignes sont incorrectes parque la fonction que j'ai dans mon tmap ne vérifie la valeur que ligne par ligne, ainsi pour la ligne 1, la valeur X est comparée à la valeur X (issue de T2) et la fonction retourne OK . Sur la ligne 2, elle retourne KO parce qu'elle la compare à Y. Sauf que X,Y, Z sont les composantes de la liste de valeurs autorisées pour code1. Donc le résultat devrait être OK pour la ligne 1.

    Pour contourner ce problème, à la sortie de mon tmap, j'ai utilisé un tdenormalize sur la colonne des listes de valeurs et sur la colonne de controle. Ensuite un autre tmap qui transforme la colonne de ctrl en 'ok' si elle contient un couple 'ko, ok'. Je conserve la colonne des liste de valeur pour information.
    Je me suis grattée la tête toute la journée d'hier et ça marche plutôt pas mal . Merci pour ton aide.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/11/2010, 13h42
  2. [DATA] Vérifier si une valeur est dans une table sans PROC SQL
    Par Filippo dans le forum SAS Base
    Réponses: 5
    Dernier message: 02/12/2009, 11h05
  3. Macro qui vérifie qu'une valeur est dans une table
    Par Filippo dans le forum Macro
    Réponses: 2
    Dernier message: 23/11/2009, 09h57
  4. savoir si une valeur est dans une table
    Par pedro99 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 06/06/2008, 09h44
  5. Réponses: 2
    Dernier message: 13/03/2006, 11h47

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