Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Briinou
Contributor III
Contributor III

Charger une table selon les ID de la première

Bonjour,

Mon App QV actuelle ramène 4 grosses tables. La première est ma table cible. Les trois autres me permettent de catégoriser les personnes présentent dans la 1ère (sexe, age, lieu d'habitation,...).

Schéma :

Table A : table cible population (IDENTIFIANT, ...)

Table B : table des appartenances géographiques du client (IDENTIFIANT, adresse, CP, VILLE, DEP,...)

Table C : table des caractéristiques individuelles (IDENTIFIANT, sexe, âge, profession,...)

Table D : table des contrats souscrits par le client (IDENTIFIANT, Numéro de contrat,...)

Actuellement, toutes les lignes des trois tables sont ramenées (les personnes présentes dans la 1ère table mais aussi ceux qui ne le sont pas, environ 500 000 lignes pour chacune de ces tables) et cela pèse lourd quand je dois recharger la donnée.

Est-ce qu'en utilisant la propriété "Resident", cela pourrait contourner le problème ? A savoir, importer de mes tables B, C et D, seulement les lignes des identifiants présents dans A ?

Si oui, j'ai lu des sujets dessus, mais je ne comprends pas où placer ce fameux "Resident"..
Si non, pouvez-vous m'éclairer sur ce point ?

13 Replies
kevinchevrier
Partner - Creator III
Partner - Creator III

Sabrina,

As-tu fais ton left join également avec BASE_CLIENT_GENERALITES ?


- Soit tu fais une seule table avec toutes tes tables :

TABLE A:

Load *

FROM unfichier;

TABLE REGROUPEE:

Load IDENTIFIANT

RESIDENT TABLE A;

left join

Load *

FROM fichiertableB;

left join

Load *

FROM BASE_CLIENT_GENERALITES;

- Soi tu fais une table qui regroupe toutes tes tables avec le left join à chaque fois :

TABLE REGROUPEE:

Load *

FROM FICHIER A;

left join

Load *

FROM FICHIER B;

left join

Load *

FROM BASE_CLIENT_GENERALITES;

- Soit tu veux distinguer tes tables et alors tu fais :

TABLE A:

Load *

FROM unfichier;

TABLE B:

Load IDENTIFIANT

RESIDENT TABLE A;

left join

Load *

FROM fichiertableB;

TABLE BASE_CLIENT_GENERALITES:

Load IDENTIFIANT

RESIDENT TABLE A;

left join

Load *

FROM BASE_CLIENT_GENERALITES;

Kevin

Briinou
Contributor III
Contributor III
Author

Pour ma part, je distingue les tables entre elles (donc, ta troisième méthode). Voici le script que j'utilise, peut-être que cela vient de la partie "SQL" ?

Voici le code que j'utilise

TABLE_B :

LOAD IDENTIFIANTS

RESIDENT TABLE_A ; //Table_A correspond à ma table de "base"

left join

LOAD IDENTIFIANT,

CHAMP_1,

CHAMP_2,

CHAMP_3,

CHAMP_4

CHAMP_5;

  SQL SELECT *

FROM "BDD.BASE_CLIENT_GENERALITES";

Au préalable, j'ai fais une connexion avec SQL Server (sur lequel mes tables sont stockées).

kevinchevrier
Partner - Creator III
Partner - Creator III

Tu as un S à IDENTIFIANTS dans ton premier et pas dans ton second load. La jointure ne se fait donc pas.

Kevin

Briinou
Contributor III
Contributor III
Author

Un grand merci pour ton aide !