Tabellen samenvoegen met Join en Keep
Een join is een bewerking waarmee twee tabellen worden samengevoegd tot één tabel. De records van de resulterende tabel zijn een combinatie van de records in de oorspronkelijke tabellen. Deze combinaties zijn doorgaans zodanig dat de twee records die een combinatie vormen in de resulterende tabel een gemeenschappelijke waarde hebben voor een of meerdere gemeenschappelijke velden: een zogeheten natuurlijke join. In Qlik Sense kunt u joins maken in het script, resulterend in logische tabellen.
Het is mogelijk tabellen al in het script samen te voegen. De Qlik Sense-logica ziet dan niet de afzonderlijke tabellen, maar het resultaat van de join: één interne tabel. In sommige situaties is dit nodig, maar er zijn nadelen:
- De geladen tabellen worden vaak groter en Qlik Sense werkt trager.
- Een aantal gegevens kan verloren gaan: de frequentie (het aantal records) binnen de oorspronkelijke tabel is mogelijk niet meer beschikbaar.
De functie Keep reduceert een of beide tabellen tot de gemeenschappelijke tabelgegevens voordat de tabellen in Qlik Sense worden opgeslagen. Dit vermindert het aantal gevallen waarbij expliciete joins nodig zijn.
Join
De eenvoudigste manier om een join te maken is met het prefix Join in het script, waarmee de interne tabel met een andere benoemde tabel of met de laatste eerder gemaakte tabel wordt samengevoegd. Het gaat hier om een outer join, waarbij alle mogelijke combinaties van waarden uit de twee tabellen worden gemaakt.
Voorbeeld:
De resulterende interne tabel bevat de velden a, b, c en d. Het aantal records is afhankelijk van de veldwaarden van de twee tabellen.
Ga voor meer informatie naar Join.
Join gebruiken
Het expliciete prefix Join in de scripttaal van Qlik Sense zorgt voor een volledige koppeling van de twee tabellen. Het resultaat is één tabel. Zulke joins resulteren vaak in zeer grote tabellen.
Doe het volgende:
- Open de app Zelfstudie voor geavanceerd scriptgebruik.
- Voeg een nieuwe scriptsectie toe in de Editor voor het laden van gegevens.
- Roep de sectie Transactions aan.
-
Onder DataFiles in het rechtermenu klikt u op Gegevens selecteren.
- Upload en selecteer Transactions.csv.
- In het venster Selecteer gegevens uit klikt u op Script invoeren.
- Upload en selecteer Salesman.xlsx.
- In het venster Selecteer gegevens uit klikt u op Script invoeren.
- Klik op Gegevens laden.
- Open de gegevensmodelviewer. Het gegevensmodel ziet er als volgt uit:
Uw script zou er als volgt moeten uitzien:
Als de tabellen Transactions en Salesman gescheiden zijn, levert dit echter mogelijk niet het vereiste resultaat op. Het is wellicht beter om de twee tabellen samen te voegen.
Doe het volgende:
- Om de samengevoegde tabel een naam te geven plaatst u de volgende regel boven de eerste LOAD-opdracht:
- Als u de tabellen Transactions en Salesman wilt samenvoegen, voegt u de volgende regel toe boven de tweede LOAD-opdracht:
- Klik op Gegevens laden.
- Open de gegevensmodelviewer. Het gegevensmodel ziet er als volgt uit:
Transactions:
Join(Transactions)
Uw script zou er als volgt moeten uitzien:
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);
Alle velden van de tabellen Transactions en Salesman worden nu samengevoegd in een enkele tabel Transactions.
Keep
Een van belangrijkste functies in Qlik Sense is de mogelijkheid om tabellen met elkaar te associëren in plaats van ze samen te voegen. Dit vereist minder geheugen, verhoogt de snelheid en biedt een enorme flexibiliteit. De functionaliteit van Keep is ontworpen om het aantal gevallen te beperken waarin expliciete joins moeten worden gebruikt.
Het prefix Keep tussen twee LOAD- of SELECT-opdrachten reduceert een of beide tabellen tot de gemeenschappelijke tabelgegevens voordat ze in Qlik Sense worden opgeslagen. Het prefix Keep moet worden voorafgegaan door een van de volgende trefwoorden Inner, Left of Right. De selectie van records uit de tabellen gebeurt net zoals bij een overeenkomstige join. De twee tabellen worden echter niet samengevoegd maar als twee afzonderlijk benoemde tabellen in Qlik Sense opgeslagen.
Ga voor meer informatie naar Keep.
Inner
De prefixen Join en Keep in het load-script kunnen worden voorafgegaan door het prefix Inner.
Indien gebruikt voor Join, geeft het prefix aan dat een inner join moet worden gebruikt tussen de twee tabellen. De resulterende tabel bevat dan alleen combinaties tussen de twee tabellen met een volledige gegevensset van beide kanten.
Indien gebruikt voor Keep, geeft de opdracht aan dat de twee tabellen worden gereduceerd tot gegevens die passen bij beide tabellen, voordat deze worden opgeslagen in Qlik Sense.
Voorbeeld:
In deze voorbeelden gebruiken we de brontabellen Table1 en Table2.
Onthoud dat dit slechts voorbeelden zijn. Er zijn geen bijbehorende oefeningen in Qlik Sense.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Inner Join
Eerst voeren we een Inner Join uit op de tabellen, wat een VTable oplevert die één rij, het enige record dat in beide tabellen voorkomt, met gegevens uit beide tabellen bevat.
A | B | C |
---|---|---|
1 | aa | xx |
Inner Keep
Als we in plaats daarvan een Inner Keep uitvoeren, hebben we nog steeds twee tabellen. De twee tabellen zijn via het gemeenschappelijke veld A met elkaar verbonden.
A | B |
---|---|
1 | aa |
A | C |
---|---|
1 | xx |
Ga voor meer informatie naar Inner.
Left
De prefixen Join en Keep in het script voor het laden van gegevens kunnen worden voorafgegaan door het prefix left.
Indien gebruikt voor Join, geeft het prefix aan dat een left join moet worden gebruikt tussen de twee tabellen. De resulterende tabel bevat dan alleen combinaties tussen de twee tabellen met een volledige gegevensset van de eerste tabel.
Indien gebruikt voor Keep, geeft dit aan dat de tweede tabel wordt gereduceerd tot gegevens die passen bij de eerste tabel, voordat deze wordt opgeslagen in Qlik Sense.
Voorbeeld:
In deze voorbeelden gebruiken we de brontabellen Table1 en Table2.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Eerst voeren we een Left Join uit op de tabellen, wat resulteert in een VTable die alle rijen uit Table1 bevat, gecombineerd met velden uit de bijpassende rijen in Table2.
A | B | C |
---|---|---|
1 | aa | xx |
2 | cc | - |
3 | ee | - |
Als we in plaats daarvan een Left Keep uitvoeren, hebben we nog steeds twee tabellen. De twee tabellen zijn via het gemeenschappelijke veld A met elkaar verbonden.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
Ga voor meer informatie naar Left.
Right
De prefixen Join en Keep in de scripttaal van Qlik Sense kunnen worden voorafgegaan door het prefix right.
Indien gebruikt voor Join, geeft het prefix aan dat een right join moet worden gebruikt tussen de twee tabellen. De resulterende tabel bevat dan alleen combinaties tussen de twee tabellen met een volledige gegevensset van de tweede tabel.
Indien gebruikt voor Keep, geeft dit aan dat de eerste tabel wordt gereduceerd tot gegevens die passen bij de eerste tabel, voordat deze wordt opgeslagen in Qlik Sense .
Voorbeeld:
In deze voorbeelden gebruiken we de brontabellen Table1 en Table2.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Eerst voeren we een Right Join uit op de tabellen, wat resulteert in een VTable die alle rijen uit Table2 bevat, gecombineerd met velden uit de bijpassende rijen in Table1.
A | B | C |
---|---|---|
1 | aa | xx |
4 | - | yy |
Als we in plaats daarvan een Right Keep uitvoeren, hebben we nog steeds twee tabellen. De twee tabellen zijn via het gemeenschappelijke veld A met elkaar verbonden.
A | B |
---|---|
1 | aa |
A | C |
---|---|
1 | xx |
4 | yy |
Ga voor meer informatie naar Right.