# Join

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.

Voorbeelden van resultaatsets van verschillende typen samenvoegbewerkingen

Voorbeelden van resultaatsets van verschillende typen samenvoegbewerkingen

Voorbeelden van resultaatsets van verschillende typen samenvoegbewerkingen ![Voorbeeldresultatensets van verschillende typen samenvoegbewerkingen, met een voor-en-na-weergave van de gegevenstabellen na elke bewerking.](https://help.qlik.com/nl-NL/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-join-examples-operations.png)

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.

Voorbeeld resultaatset van een 'cross join'-bewerking

Voorbeeld resultaatset van een 'cross join'-bewerking

Voorbeeld resultaatset van een 'cross join'-bewerking ![Voor-en-na vergelijking van invoergegevens met uitvoer na een cross-join-bewerking (waarbij een join-bewerking van elk type kan betrokken zijn).](https://help.qlik.com/nl-NL/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-examples-join-no-common-fields.png)

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:

Gerelateerde onderwerpen

| Onderwerp | Beschrijving |
| --- | --- |
| [Tabellen samenvoegen met Join en Keep](https://help.qlik.com/nl-NL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm) | In dit onderwerp vindt u meer uitleg over de concepten 'samenvoegen' en 'bewaren' van gegevenssets. |
| [Keep](https://help.qlik.com/nl-NL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm) | Het laadvoorvoegsel `Keep` is vergelijkbaar met het voorvoegsel `Join`, maar combineert de bron- en doelgegevenssets niet. In plaats daarvan trimt het elke gegevensverzameling op basis van het type bewerking dat is aangenomen (binnen, buiten, links of rechts). |

## Voorbeeld 1 - Left join: Een doeltabel verrijken met een referentiegegevensset

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Load-script en resultaten

Overzicht

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuwe sectie.

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Load-script en resultaten

Overzicht

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuwe sectie.

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.

Resultatentabel

| Bronsysteem | Wijzigings-id | Bedrijfsimpact |
| --- | --- | --- |
| JIRA | 10030 | Geen |
| JIRA | 10134 | Laag |
| JIRA | 10220 | Geen |
| JIRA | 10323 | Hoog |
| JIRA | 10334 | Laag |

## Voorbeeld 3 – Outer join: Overlappende recordsets combineren

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Load-script en resultaten

Overzicht

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuwe sectie.

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)

#### Load-script en resultaten

Overzicht

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuwe sectie.

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.

Resultatentabel

| Bronsysteem | Wijzigings-id | Bedrijfsimpact |
| --- | --- | --- |
| Teamwerk | 10015 | Laag |
| Teamwerk | 10031 | Laag |
| Teamwerk | 10040 | Geen |
| Teamwerk | 10103 | Gemiddeld |
| Teamwerk | 50231 | - |

## Meer informatie

* [Load](https://help.qlik.com/nl-NL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm)
* [Select](https://help.qlik.com/nl-NL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Select.htm)
* [Inner](https://help.qlik.com/nl-NL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Inner.htm)
* [Outer](https://help.qlik.com/nl-NL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Outer.htm)
* [Left](https://help.qlik.com/nl-NL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Left.htm)
* [Right](https://help.qlik.com/nl-NL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Right.htm)
* [Keep](https://help.qlik.com/nl-NL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm)
* [Tabellen samenvoegen met Join en Keep](https://help.qlik.com/nl-NL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm)