Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

flager les données qui sont présentes dans une table ''référentiel''

Bonjour à tous

Quelqu’un sait-il svp la façon dont il faut aborder la problématique suivante ? :

Je cherche àfaire une sorte de jointure entre deux tables qui ont été chargées précédemment à partir de 2 fichier XLS.

En effet pour deux colonnes (2 données) de ma table B, je souhaiterai flager toutes les données qui sont présentes dans ma table ''référentiel'' précédemment chargée a savoir une  colonne de ma table A …

Or, je ne sais pas comment évoquer une table existante dans les règles du load d'un fichier... (j'ai l'impression que c'est interdit)

De même, je ne sais pas faire appel a 2 tables dans le load d'une table 'résident'

Quelqu'un peut il svp me mettre sur une piste svp ? un exemple ?

Merci beaucoup

Sebastien

1 Solution

Accepted Solutions
martin59
Specialist II
Specialist II

Visiblement le fichier Excel contenant le résultat n'a pas été chargé...

Si je me refert donc à votre demande initiale qui était :

En effet pour deux colonnes (2 données) de ma table B, je souhaiterai flager toutes les données qui sont présentes dans ma table ''référentiel'' précédemment chargée a savoir une  colonne de ma table A…

Admettions que nous donnions au flag la valeur :

     - 0 si TRANSFEROR et TRANSFEREE ne sont pas dans le champ TRANSF de la table A

     - 1 si TRANSFEROR ou TRANSFEREE est dans le champ TRANSF de la table A

     - 2 si TRANSFEROR et TRANSFEREE est dans le champ TRANSF de la table A

Dans le script de chargement des données de la table B, vous pouvez utiliser cette formule :

LOAD SECURITY,

     TRANSFEROR,

     TRANSFEREE,

     if(

          Exists(TRANSF, TRANSFEROR) and Exists(TRANSF, TRANSFEREE),

          1,

          if(

               Exists(TRANSF, TRANSFEROR) or Exists(TRANSF, TRANSFEREE),

               2,

               0)) as Flag

FROM B.TXT (txt);

J'espère que cela pourra vous aider un peu plus...

Martin Favier

View solution in original post

13 Replies
martin59
Specialist II
Specialist II

Bonjour Sebastien,

Je viens de vous répondre sur votre autre post.

J'espère que ceci vous aiguillera dans vos recherches.

Martin Favier

martin59
Specialist II
Specialist II

Pour plus de simplicité, je vous remet ici le contenu :

sebtillier a écrit:

En effet pour deux colonnes (2 données) de ma table B, je souhaiterai flager toutes les données qui sont présentes dans ma table ''référentiel'' précédemment chargée a savoir une  colonne de ma table A …

Or, je ne sais pas comment évoquer une table existante dans les règles du load d'un fichier... (j'ai l'impression que c'est interdit)

Vous pouvez pour cela utiliser la fonction Exists().

Je pourrais vous donner plus de détails sur cette fonction si vous nous transmettez la structure de vos fichiers Excel.

sebtillier a écrit:

De même, je ne sais pas faire appel a 2 tables dans le load d'une table 'résident'

L'instruction Resident permet de travailler sur une table déjà chargée dans la mémoire de QV. Si vous voulez travailler sur deux tables, vous devrez plutôt utiliser les jointures ou concatenations (JOIN, CONCATENATE)

Martin Favier

Not applicable
Author

Merci beaucoup Martin

Ci joint les structures des deux fichiers.

Dans le referentiel A, la colonne que je souhaite matcher ('' TRANSF'' )

est en rouge.

Pour le fichier B, voici un extrait du loader mis en place.

B :

LOAD

replace(@18:31,'-','') as TRANSF1,

replace(@36:49,'-','') as TRANSF2

num(@53:62),

num(@63:74) as FEES,

RecNo() as enreg

FROM

(fix, codepage is 1252);

Si TRansf1 et Transf2 sont present dans TRANSF du fichier A, alors, je

vais devoir dans une feuille excel de restitution qui reprendra les ligne

de B, restituer ''FEES'' sur deux lignes (cad diviser le FEES par 2 et

creer une ligne pour TRANSF1, une autre ligne pour TRANSF2). Si seul TRANSF

1 ou TRANSF2 sont trouvés dans le referentiel, alors, une seule ligne en

sortie avec le FEES associé.

J'avais donc dans l'idée de creer une colonne lors du load de B afin de la

valoriser, par exemple, pour chaqune des ses lignes "2" si les deux champs

TRANSF1 et TRANSF2 de la ligne etaient trouvés dans A.

Je suis preneur de votre proposition de m'envoyer un exemple de

l'utilisation de la fonction Exists, La doc sur ce point ne me permets pas

en l'etat d'avancer veritablement.

Merci encore

Sebastien

(See attached file: B.TXT)(See attached file: A.xls)

- Re: flager les données qui sont

présentes dans une table ''référentiel''

(Internet)

qcwebmaster

A :

Sebastien TILLIER

15/01/2013 11:04

Veuillez répondre à jive-1043897007-24f1-2-6fmu

martin59
Specialist II
Specialist II

Auriez-vous un aperçu du résultat souhaité ?

Martin Favier

Not applicable
Author

Re bonjour Martin

Voici donc de nouvelles versions (plus simples des fichiers A et B) ainsi

surtout qu'une illustration de la feuille excel attendue en sortie. (avec

dans la feuille result, quelques commentaires)

La dificulté pour moi reside surtout dans la facon d'aborder le cas N° 1...

cas faire des jointures

Merci encore

Sebastien

(See attached file: B.TXT)(See attached file: A.xls)(See attached file:

result.xls)

- Re: flager les données qui sont

présentes dans une table ''référentiel''

(Internet)

qcwebmaster

A :

Sebastien TILLIER

15/01/2013 12:08

Veuillez répondre à jive-1043897007-24f1-2-6fnm

martin59
Specialist II
Specialist II

Merci,

J'essaie de regarder ça ce soir et reviens vers vous...

Martin Favier

Not applicable
Author

merci !

- Re: flager les données qui sont

présentes dans une table ''référentiel''

(Internet)

qcwebmaster

A :

Sebastien TILLIER

15/01/2013 17:22

Veuillez répondre à jive-1043897007-24f1-2-6fst

martin59
Specialist II
Specialist II

Visiblement le fichier Excel contenant le résultat n'a pas été chargé...

Si je me refert donc à votre demande initiale qui était :

En effet pour deux colonnes (2 données) de ma table B, je souhaiterai flager toutes les données qui sont présentes dans ma table ''référentiel'' précédemment chargée a savoir une  colonne de ma table A…

Admettions que nous donnions au flag la valeur :

     - 0 si TRANSFEROR et TRANSFEREE ne sont pas dans le champ TRANSF de la table A

     - 1 si TRANSFEROR ou TRANSFEREE est dans le champ TRANSF de la table A

     - 2 si TRANSFEROR et TRANSFEREE est dans le champ TRANSF de la table A

Dans le script de chargement des données de la table B, vous pouvez utiliser cette formule :

LOAD SECURITY,

     TRANSFEROR,

     TRANSFEREE,

     if(

          Exists(TRANSF, TRANSFEROR) and Exists(TRANSF, TRANSFEREE),

          1,

          if(

               Exists(TRANSF, TRANSFEROR) or Exists(TRANSF, TRANSFEREE),

               2,

               0)) as Flag

FROM B.TXT (txt);

J'espère que cela pourra vous aider un peu plus...

Martin Favier

Not applicable
Author

Bonjour et merci,

Je vais regarder (je n'etais pas present hier)

Concernant le pbl de ''chargement'' du tableau Excel Result, Je l'avais

join au mail. Est-ce bien la procedure pour partager des documents ?

Si il me faut par la suite proceder autrement, n'(hesitez pas svp a me le

dire).

Bonne reception

Sebastien

- Re: flager les données qui sont

présentes dans une table ''référentiel''

(Internet)

qcwebmaster

A :

Sebastien TILLIER

15/01/2013 21:23

Veuillez répondre à jive-1043897007-24f1-2-6fug