Qlik Community

Groupe des Utilisateurs Francophones

Vous êtes francophone? Ce groupe est pour vous. Venez découvrir comment démarrer avec Qlik Sense et QlikView, poser vos questions et partager vos tutos et astuces avec les membres de notre communauté.

Highlighted
sabrinag
New Contributor II

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 ?

Tags (1)
1 Solution

Accepted Solutions
kevinchevrier
Contributor III

Re: Charger une table selon les ID de la première

Sabrina,

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

Kevin

13 Replies
kevinchevrier
Contributor III

Re: Charger une table selon les ID de la première

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
Contributor III

Re: Charger une table selon les ID de la première

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
Contributor III

Re: Charger une table selon les ID de la première

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
Valued Contributor

Re: Charger une table selon les ID de la première

‌Bonjour Sabrina,

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

sabrinag
New Contributor II

Re: Charger une table selon les ID de la première

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.

sabrinag
New Contributor II

Re: Charger une table selon les ID de la première

Bonjour Kevin,

Je vais voir de ce côté

Merci !

sabrinag
New Contributor II

Re: Charger une table selon les ID de la première

No souci de ce côté là !

kevinchevrier
Contributor III

Re: Charger une table selon les ID de la première

Sabrina,

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

Kevin

sabrinag
New Contributor II

Re: Charger une table selon les ID de la première

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.