Combinaison de tables grâce à Join et Keep
Une jointure est une opération qui utilise deux tables et les combine en une seule. Les enregistrements de la table résultante sont des combinaisons d'enregistrements des tables d'origine, en général sur la base d'une valeur commune pour un ou plusieurs champs communs aux deux enregistrements contribuant à une combinaison donnée, ce qu'on appelle une jointure naturelle. Dans Qlik Sense, les jointures peuvent être réalisées dans le script, ce qui génère des tables logiques.
Il est possible de joindre des tables figurant déjà dans le script. Dans ce cas, la logique de Qlik Sense ne considère pas les tables séparées, mais plutôt le résultat de la jointure, à savoir une seule table interne. Cette solution s'avère nécessaire dans certaines situations, mais elle présente des inconvénients :
- Les tables chargées deviennent souvent plus volumineuses et Qlik Sense fonctionne plus lentement.
- Certaines informations risquent de se perdre : il se peut que la fréquence (le nombre d'enregistrements) précisée dans la table de départ ne soit plus disponible.
La fonctionnalité Keep, qui a pour effet de réduire l'une ou l'autre table, ou les deux, à l'intersection des données avant que les tables ne soient stockées dans Qlik Sense, a été conçue dans le but de réduire le nombre de cas où l'utilisation de jointures explicites est nécessaire.
Join
La façon la plus simple de créer une jointure consiste à utiliser le préfixe Join dans le script, qui joint la table interne à une autre table existante ou à la dernière table créée. La jointure est une jointure externe, qui permet de créer toutes les combinaisons possibles de valeurs des deux tables.
La table interne résultante comprend les champs a, b, c et d. Le nombre d'enregistrements varie en fonction des valeurs de champ des deux tables.
Pour plus d'informations, voir Join.
Utilisation de Join
Le préfixe Join explicite dans le langage de script de Qlik Sense procède à une jointure complète des deux tables. Le résultat en est une seule table. De telles jointures produisent souvent des tables très volumineuses.
Procédez comme suit :
- Ouvrez l'application Advanced Scripting Tutorial.
- Ajoutez une nouvelle section de script dans l'éditeur de chargement de données.
- Appelez la section Transactions.
-
Sous DataFiles dans le menu droit, cliquez sur Sélectionner des données.
- Téléchargez, puis sélectionnez Transactions.csv.
- Dans la fenêtre Sélectionner des données depuis, cliquez sur Insérer le script.
- Téléchargez, puis sélectionnez Salesman.xlsx.
- Dans la fenêtre Sélectionner des données depuis, cliquez sur Insérer le script.
- Cliquez sur Charger les données.
- Ouvrez le Visionneur de modèle de données. Le modèle de données a l'aspect suivant :
Le script devrait avoir l'aspect suivant :
Cependant, l'obtention des tables Transactions et Salesman séparées ne correspond pas forcément au résultat escompté. Il peut s'avérer préférable de joindre les deux tables.
Procédez comme suit :
- Pour définir un nom pour la table jointe, ajoutez la ligne suivante au-dessus de la première instruction LOAD :
- Pour joindre les tables Transactions et Salesman, ajoutez la ligne suivante au-dessus de la deuxième instruction LOAD :
- Cliquez sur Charger les données.
- Ouvrez le Visionneur de modèle de données. Le modèle de données a l'aspect suivant :
Transactions:
Join(Transactions)
Le script devrait avoir l'aspect suivant :
Transactions:
LOAD
"Transaction ID",
"Salesman ID",
Product,
"Serial No",
"ID Customer",
"List Price",
"Gross Margin"
FROM [lib://DataFiles/Transactions.csv]
(txt, codepage is 28591, embedded labels, delimiter is ',', msq);
Join(Transactions)
LOAD
"Salesman ID",
Salesman,
"Distributor ID"
FROM [lib://DataFiles/Salesman.xlsx]
(ooxml, embedded labels, table is Salesman);
Tous les champs des tables Transactions et Salesman sont à présent réunis dans une seule table Transactions.
Keep
L'une des principales caractéristiques de Qlik Sense est sa capacité à effectuer des associations entre plusieurs tables au lieu de les joindre, ce qui réduit l'espace mémoire utilisé, augmente la vitesse et offre une grande souplesse. La fonctionnalité Keepa été conçue pour réduire le nombre de cas d'utilisation de jointures explicites.
Le préfixe Keep placé entre deux instructions LOAD ou SELECT réduit l'une ou l'autre table, ou les deux, à l'intersection de leurs données avant qu'elles ne soient stockées dans Qlik Sense. Le préfixe Keep doit toujours être précédé d'un des mots clés Inner, Left ou Right. La sélection des enregistrements à partir des tables suit le même principe que la jointure correspondante. Cependant, les deux tables ne sont pas jointes et sont stockées dans Qlik Sense comme deux tables nommées distinctes.
Pour plus d'informations, voir Keep.
Inner
Dans le script de chargement de données, les préfixes Join et Keep peuvent être précédés du préfixe Inner.
Utilisé avant Join, il indique que la jointure des deux tables doit être une jointure interne. La table obtenue contient ainsi uniquement des combinaisons des deux tables avec un ensemble de données complet des deux côtés.
S'il est utilisé avant Keep, il indique que les deux tables doivent être réduites à leur intersection commune avant d'être stockées dans Qlik Sense.
Ces exemples font appel aux tables source Table1 et Table2.
Notez que ces derniers ne sont que des exemples. Il n'y a aucun exercice correspondant à terminer dans Qlik Sense.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Inner Join
Pour commencer, on procède à une jointure Inner Join des tables, ce qui entraîne une table VTable ne contenant qu'une seule ligne, le seul enregistrement existant dans les deux tables, les données des deux tables étant combinées.
A | B | C |
---|---|---|
1 | aa | xx |
Inner Keep
Si Inner Keep est utilisé à la place, vous disposez toujours de deux tables. Les deux tables sont associées par le champ commun A.
A | B |
---|---|
1 | aa |
A | C |
---|---|
1 | xx |
Pour plus d'informations, voir Inner.
Left
Dans le script de chargement de données, les préfixes Join et Keep peuvent être précédés du préfixe left.
Utilisé avant Join, il indique que la jointure des deux tables doit être une jointure gauche. La table résultante contient ainsi uniquement des combinaisons des deux tables avec un ensemble de données complet provenant de la première table.
S'il est utilisé avant Keep, il indique que la seconde table doit être réduite à son intersection commune avec la première table avant d'être stockée dans Qlik Sense.
Ces exemples font appel aux tables source Table1 et Table2.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Pour commencer, on procède à une jointure Left Join des tables, ce qui entraîne une table VTable contenant toutes les lignes de la table Table1 associées aux champs des lignes correspondantes de la table Table2.
A | B | C |
---|---|---|
1 | aa | xx |
2 | cc | - |
3 | ee | - |
Si Left Keep est utilisé à la place, vous disposez toujours de deux tables. Les deux tables sont associées par le champ commun A.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
Pour plus d'informations, voir Left.
Right
Les préfixes Join et Keep du langage de script Qlik Sense peuvent être précédés du préfixe right.
Utilisé avant Join, il indique que la jointure des deux tables doit être une jointure droite. La table résultante contient ainsi uniquement des combinaisons des deux tables avec un ensemble de données complet provenant de la seconde table.
S'il est utilisé avant Keep, il indique que la première table doit être réduite à son intersection commune avec la seconde table avant d'être stockée dans Qlik Sense.
Ces exemples font appel aux tables source Table1 et Table2.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Pour commencer, on procède à une jointure Right Join des tables, ce qui entraîne une table VTable contenant toutes les lignes de la table Table2 associées aux champs des lignes correspondantes de la table Table1.
A | B | C |
---|---|---|
1 | aa | xx |
4 | - | yy |
Si Right Keep est utilisé à la place, vous disposez toujours de deux tables. Les deux tables sont associées par le champ commun A.
A | B |
---|---|
1 | aa |
A | C |
---|---|
1 | xx |
4 | yy |
Pour plus d'informations, voir Right.