Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
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 ?

1 Solution

Accepted Solutions
kevinchevrier
Partner - Creator III
Partner - Creator III

Sabrina,

Dans ce cas, le left join (exemple que je t'ai mis plus haut) me parait le plus adapté.

Kevin

View solution in original post

13 Replies
kevinchevrier
Partner - Creator III
Partner - Creator III

Bonjour Sabrina,

RESIDENT te permet de remplacer le FROM en appelant une table que tu as précédemment créé.

Exemple :

TABLE A:

Load *

FROM unfichier;

TABLE B:

Load IDENTIFIANT

RESIDENT TABLE A;

left join

Load *

FROM fichiertableB;

et ainsi de suite

Effectivement, si tu fais cela, ton appli devrait être moins lourde.

Kevin

kevinchevrier
Partner - Creator III
Partner - Creator III

Une autre solution serait d'utiliser la fonction exists aussi dans ton cas :

http://help.qlik.com/fr-FR/sense/3.2/Subsystems/Hub/Content/Scripting/InterRecordFunctions/Exists.ht...

Mais je pense que ce serait plus gourmand car tu dois charger toutes tes tables au préalable.

Kevin

lcloatre
Partner - Creator III
Partner - Creator III

Sabrina,

La jointure se fera sur tous les champs qui ont le même nom.

Assures-toi bien que les noms soient identiques et attention à la casse !!

sfatoux72
Partner - Specialist
Partner - Specialist

‌Bonjour Sabrina,

Quelle est est ta source? base de données, fichiers Excel, fichiers plats

Briinou
Contributor III
Contributor III
Author

Bonjour Sébastien,

Mes tables proviennent de SQL Server.

Pour rappel, j'importe en premier ma table A, qui correspond à la population de que j'étudie.
Ensuite, je ramène plusieurs tables qui me permettent d'étoffer la connaissance de la personne (une table géographique, une table caractéristiques indiv, une table contrats,...)

Actuellement, pour les trois dernières tables, je charge l'ensemble des données présentes dans les tables. Aussi, je me retrouve à charger presque 1 000 000 de lignes qui ne me serviront à rien dans mon analyse.

Briinou
Contributor III
Contributor III
Author

Bonjour Kevin,

Je vais voir de ce côté

Merci !

Briinou
Contributor III
Contributor III
Author

No souci de ce côté là !

kevinchevrier
Partner - Creator III
Partner - Creator III

Sabrina,

Dans ce cas, le left join (exemple que je t'ai mis plus haut) me parait le plus adapté.

Kevin

Briinou
Contributor III
Contributor III
Author

Salut,

Super ça marche nikel.. Par contre, je suis étonnée de voir quand même toutes les lignes de mes grosses tables se charger dans mon script...

TABLE_A << BASE_CLIENT_SUIVI 2 102 lignes récupérées

TABLE_B_GENERALITES << TABLE_A 2 102 lignes récupérées

BASE_CLIENT_GENERALITES << BASE_CLIENT_GENERALITES 1 000 000 lignes récupérées

Si je comprends bien : le script charge quand même toute la table "BASE_CLIENT_GENERALITES" mais ne conserve que les lignes dont l'ID est présent dans la table A.

Du coup, le temps d'exécution du script reste le même mais l'app est bel et bien moins lourde ! Je passe de 64 MO à à peine 2 MO.