Het prefix join koppelt de geladen tabel aan een bestaande benoemde tabel of de laatste eerder gemaakte gegevenstabel.
Het effect van het samenvoegen van gegevens is dat de doeltabel wordt uitgebreid met een extra set velden of attributen, namelijk die welke nog niet in de doeltabel aanwezig zijn. Alle gemeenschappelijke veldnamen tussen de brongegevensset en de doeltabel worden gebruikt om uit te zoeken hoe de nieuwe binnenkomende records moeten worden gekoppeld. Dit wordt gewoonlijk een 'natuurlijke join' genoemd. Een Qlik-samenvoegbewerking kan ertoe leiden dat de resulterende doeltabel meer of minder records heeft dan waarmee hij begon, afhankelijk van de uniekheid van de join-koppeling en het type join dat wordt gebruikt.
Er zijn vier soorten joins:
Left join
Left joins zijn het meest voorkomende join-type. Als u bijvoorbeeld een transactiegegevensset hebt en deze wilt combineren met een referentiegegevensset, gebruikt u doorgaans een Left Join. U zou eerst de transactietabel laden en vervolgens de referentiegegevensset laden terwijl u deze via een Left Join-voorvoegsel aan de reeds geladen transactietabel toevoegt. Een Left Join zou alle transacties ongewijzigd laten en de aanvullende referentiegegevensvelden toevoegen waar een overeenkomst wordt gevonden.
Inner join
Als u twee datasets hebt waarbij u alleen om resultaten geeft als er een overeenkomende koppeling is, overweeg dan om een Inner Join te gebruiken. Hierdoor worden alle records verwijderd uit zowel de geladen brongegevens als de doeltabel als er geen overeenkomst wordt gevonden. Als gevolg hiervan kan uw doeltabel minder records bevatten dan voordat de samenvoegbewerking plaatsvond.
Outer join
Als u zowel de doelrecords als alle inkomende records moet bewaren, gebruikt u een Outer Join. Als er geen overeenkomst wordt gevonden, wordt elke set records nog steeds bewaard, terwijl de velden aan de andere kant van de join niet ingevuld blijven (null).
Als het type trefwoord wordt weggelaten, dan is het standaard join-type een outer join.
Right join
Dit type join houdt alle records die op het punt staan te worden geladen, terwijl de records in de tabel waarop de join is gericht, worden beperkt tot alleen die records waarbij er een koppelingsovereenkomst is in de inkomende records. Dit is een niche-jointype dat soms wordt gebruikt om een reeds vooraf geladen tabel met records in te korten tot een vereiste subset.
InformatieAls er geen gemeenschappelijke veldnamen zijn tussen de bron en het doel van een samenvoegbewerking, resulteert de join in een cartesiaans product van alle rijen - dit wordt een 'cross join' genoemd.
Syntaxis:
[inner | outer | left | right ]Join[ (tablename )
]( loadstatement | selectstatement )
Argumenten
Argument
Beschrijving
tablename
De benoemde tabel die moet worden vergeleken met de geladen tabel.
loadstatementof selectstatement
De LOAD of SELECT-opdracht voor de geladen tabel.
Deze onderwerpen kunnen u helpen bij het werken met deze functie:
Het laadvoorvoegsel Keep is vergelijkbaar met het voorvoegsel Join, maar combineert de bron- en doelgegevenssets niet. In plaats daarvan trimt het elke gegevensset op basis van het type bewerking dat is aangenomen (binnen, buiten, links of rechts).
Voorbeeld 1 - Left join: Een doeltabel verrijken met een referentiegegevensset
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een gegevensset die wijzigingsrecords vertegenwoordigt, die in een tabel met de naam Changes wordt geladen. Bevat een sleutelveld Status-id.
Een tweede gegevensset die wijzigingsstatussen vertegenwoordigt, die wordt geladen en gecombineerd met de originele wijzigingsrecords door deze te combineren met een linker Join-laadvoorvoegsel.
Deze left join zorgt ervoor dat de wijzigingsrecords intact blijven terwijl er statusattributen worden toegevoegd waar een match in de inkomende statusrecords wordt gevonden op basis van een gemeenschappelijk Status-id.
Load-script
Changes:
Load * inline [
Change ID Status ID Scheduled Start Date Scheduled End Date Business Impact
10030 4 19/01/2022 23/02/2022 None
10015 3 04/01/2022 15/02/2022 Low
10103 1 02/04/2022 29/05/2022 Medium
10185 2 23/06/2022 08/09/2022 None
10323 1 08/11/2022 26/11/2022 High
10326 2 11/11/2022 05/12/2022 None
10138 2 07/05/2022 03/08/2022 None
10031 3 20/01/2022 25/03/2022 Low
10040 1 29/01/2022 22/04/2022 None
10134 1 03/05/2022 08/07/2022 Low
10334 2 19/11/2022 06/02/2023 Low
10220 2 28/07/2022 06/09/2022 None
10264 1 10/09/2022 17/10/2022 Medium
10116 1 15/04/2022 24/04/2022 None
10187 2 25/06/2022 24/08/2022 Low
] (delimiter is '\t');
Status:
Left Join (Changes)
Load * inline [
Status ID Status Sub Status
1 Open Not Started
2 Open Started
3 Closed Completed
4 Closed Cancelled
5 Closed Obsolete
] (delimiter is '\t');
Resultaten
Open de gegevensmodelviewer en let op de vorm van het gegevensmodel. Er is slechts één gedenormaliseerde tabel aanwezig. Het is een combinatie van alle originele wijzigingsrecords, met de overeenkomende statusattributen samengevoegd met elk wijzigingsrecord.
Resulterend intern gegevensmodel
Wijzigingen
Wijzigings-id
Status-id
Geplande begindatum
Geplande einddatum
Bedrijfsimpact
Status
Substatus
Als u het voorbeeldvenster in de gegevensmodelviewer uitvouwt, ziet u een deel van deze volledige resultatenset, georganiseerd in een tabel:
Voorbeeld van de tabel Wijzigingen in de gegevensmodelviewer
Wijzigings-id
Status-id
Geplande begindatum
Geplande einddatum
Bedrijfsimpact
Status
Substatus
10030
4
19/01/2022
23/02/2022
Geen
Gesloten
Geannuleerd
10031
3
20/01/2022
25/03/2022
Laag
Gesloten
Voltooid
10015
3
04/01/2022
15/02/2022
Laag
Gesloten
Voltooid
10103
1
02/04/2022
29/05/2022
Gemiddeld
Openen
Niet gestart
10116
1
15/04/2022
24/04/2022
Geen
Openen
Niet gestart
10134
1
03/05/2022
08/07/2022
Laag
Openen
Niet gestart
10264
1
10/09/2022
17/10/2022
Gemiddeld
Openen
Niet gestart
10040
1
29/01/2022
22/04/2022
Geen
Openen
Niet gestart
10323
1
08/11/2022
26/11/2022
Hoog
Openen
Niet gestart
10187
2
25/06/2022
24/08/2022
Laag
Openen
Gestart
10185
2
23/06/2022
08/09/2022
Geen
Openen
Gestart
10220
2
28/07/2022
06/09/2022
Geen
Openen
Gestart
10326
2
11/11/2022
05/12/2022
Geen
Openen
Gestart
10138
2
07/05/2022
03/08/2022
Geen
Openen
Gestart
10334
2
19/11/2022
06/02/2023
Laag
Openen
Gestart
Omdat de vijfde rij in de tabel Status (Status-id: '5', Status: 'Closed', substatus: 'Obsolete') niet overeenkomt met records in de tabel Changes, verschijnen de gegevens in deze rij niet in de bovenstaande resultaten.
Ga terug naar de editor voor laden van gegevens. Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie: Status.
Voeg deze meting toe:
=Count([Change ID])
Nu kunt u het aantal wijzigingen per status bekijken.
Resultatentabel
Status
=Count([Change ID])
Openen
12
Gesloten
3
Voorbeeld 2 – Inner join: Alleen overeenkomende records combineren
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een gegevensset die wijzigingsrecords vertegenwoordigt, die in een tabel met de naam Changes wordt geladen.
Een tweede gegevensset die wijzigingsrecords uit het bronsysteem JIRA weergeeft. Deze wordt geladen en gecombineerd met de oorspronkelijke records door deze samen te voegen met een Inner Join-laadvoorvoegsel.
Dit Inner Join zorgt ervoor dat alleen de vijf wijzigingsrecords die in beide gegevenssets voorkomen, worden bewaard.
Load-script
Changes:
Load * inline [
Change ID Status ID Scheduled Start Date Scheduled End Date Business Impact
10030 4 19/01/2022 23/02/2022 None
10015 3 04/01/2022 15/02/2022 Low
10103 1 02/04/2022 29/05/2022 Medium
10185 2 23/06/2022 08/09/2022 None
10323 1 08/11/2022 26/11/2022 High
10326 2 11/11/2022 05/12/2022 None
10138 2 07/05/2022 03/08/2022 None
10031 3 20/01/2022 25/03/2022 Low
10040 1 29/01/2022 22/04/2022 None
10134 1 03/05/2022 08/07/2022 Low
10334 2 19/11/2022 06/02/2023 Low
10220 2 28/07/2022 06/09/2022 None
10264 1 10/09/2022 17/10/2022 Medium
10116 1 15/04/2022 24/04/2022 None
10187 2 25/06/2022 24/08/2022 Low
] (delimiter is '\t');
JIRA_changes:
Inner Join (Changes)
Load
[Ticket ID] AS [Change ID],
[Source System]
inline
[
Ticket ID Source System
10000 JIRA
10030 JIRA
10323 JIRA
10134 JIRA
10334 JIRA
10220 JIRA
20000 TFS
] (delimiter is '\t');
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
Source System
Change ID
Business Impact
Nu kunt u de vijf resulterende records inspecteren. De resulterende tabel van een Inner Join bevat alleen records met overeenkomende gegevens in beide gegevensverzamelingen.
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een gegevensset die wijzigingsrecords vertegenwoordigt, die in een tabel met de naam Changes wordt geladen.
Een tweede gegevensset die wijzigingsrecords uit het bronsysteem JIRA weergeeft, die wordt geladen en gecombineerd met de oorspronkelijke records door deze samen te voegen met een Outer Join-laadvoorvoegsel.
Dit zorgt ervoor dat alle overlappende wijzigingsrecords van beide gegevenssets behouden blijven.
Load-script
// 8 Change records
Changes:
Load * inline [
Change ID Status ID Scheduled Start Date Scheduled End Date Business Impact
10030 4 19/01/2022 23/02/2022 None
10015 3 04/01/2022 15/02/2022 Low
10138 2 07/05/2022 03/08/2022 None
10031 3 20/01/2022 25/03/2022 Low
10040 1 29/01/2022 22/04/2022 None
10134 1 03/05/2022 08/07/2022 Low
10334 2 19/11/2022 06/02/2023 Low
10220 2 28/07/2022 06/09/2022 None
] (delimiter is '\t');
// 6 Change records
JIRA_changes:
Outer Join (Changes)
Load
[Ticket ID] AS [Change ID],
[Source System]
inline
[
Ticket ID Source System
10030 JIRA
10323 JIRA
10134 JIRA
10334 JIRA
10220 JIRA
10597 JIRA
] (delimiter is '\t');
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
Source System
Change ID
Business Impact
Nu kunt u de 10 resulterende records inspecteren.
Resultatentabel
Bronsysteem
Wijzigings-id
Bedrijfsimpact
JIRA
10030
Geen
JIRA
10134
Laag
JIRA
10220
Geen
JIRA
10323
-
JIRA
10334
Laag
JIRA
10597
-
-
10015
Laag
-
10031
Laag
-
10040
Geen
-
10138
Geen
Voorbeeld 4 – Right join: Een doeltabel inkorten door een secundaire mastergegevensset
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een gegevensset die wijzigingsrecords vertegenwoordigt, die in een tabel met de naam Changes wordt geladen.
Een tweede gegevensverzameling met alle wijzigingsrecords van het bronsysteem Teamwork. Dit wordt geladen en met de originele records gecombineerd met behulp van een Right Join-laadprefix.
Dit zorgt ervoor dat alleen Teamwork-wijzigingsrecords worden bewaard, terwijl er geen Teamwork-records verloren gaan als de doeltabel geen overeenkomende Change ID heeft.
Load-script
Changes:
Load * inline [
Change ID Status ID Scheduled Start Date Scheduled End Date Business Impact
10030 4 19/01/2022 23/02/2022 None
10015 3 04/01/2022 15/02/2022 Low
10103 1 02/04/2022 29/05/2022 Medium
10185 2 23/06/2022 08/09/2022 None
10323 1 08/11/2022 26/11/2022 High
10326 2 11/11/2022 05/12/2022 None
10138 2 07/05/2022 03/08/2022 None
10031 3 20/01/2022 25/03/2022 Low
10040 1 29/01/2022 22/04/2022 None
10134 1 03/05/2022 08/07/2022 Low
10334 2 19/11/2022 06/02/2023 Low
10220 2 28/07/2022 06/09/2022 None
10264 1 10/09/2022 17/10/2022 Medium
10116 1 15/04/2022 24/04/2022 None
10187 2 25/06/2022 24/08/2022 Low
] (delimiter is '\t');
Teamwork_changes:
Right Join (Changes)
Load
[Ticket ID] AS [Change ID],
[Source System]
inline
[
Ticket ID Source System
10040 Teamwork
10015 Teamwork
10103 Teamwork
10031 Teamwork
50231 Teamwork
] (delimiter is '\t');
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
Source System
Change ID
Business Impact
Nu kunt u de vijf resulterende records inspecteren.
Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!