# Join

join-prefixet länkar den inlästa tabellen till en existerande namngiven tabell eller den senast skapade datatabellen.

Effekten av att sammanfoga data är att måltabellen utökas med ytterligare en uppsättning fält eller attribut, nämligen sådana som inte redan finns i måltabellen. Alla vanliga fältnamn mellan källdatauppsättningen och måltabellen används för att räkna ut hur du associerar de nya inkommande posterna. Detta kallas vanligtvis för en natural join. En Qlik join-åtgärd kan leda till att den resulterande måltabellen har fler eller färre poster än i början, beroende på dess unika karaktär och vilken typ av join som tillämpas.

Det finns fyra join-typer

Left join

Left join är det vanligaste join-typen. Om du till exempel har en transaktionsdatauppsättning och vill kombinera den med en referensdatauppsättning, skulle du vanligtvis använda en `Left Join`. Du skulle ladda transaktionstabellen först och sedan ladda referensdatauppsättningen medan du ansluter den via ett `Left Join`-prefix till den redan laddade transaktionstabellen. En `Left Join` skulle behålla alla transaktioner som de är och lägga till de kompletterande referensdatafälten där en matchning hittas.

Inre koppling

När du har två datauppsättningar och bara är intresserad av resultat där det finns en matchande association, överväg att använda en `Inner Join`. Detta kommer att eliminera alla poster från både källdata som laddats och måltabellen om ingen matchning hittas. Som ett resultat kan detta lämna din måltabell med färre poster än innan join-åtgärden ägde rum.

Outer join

När du behöver behålla både målposterna och alla inkommande poster använder du en `Outer Join`. Om ingen matchning hittas behålls varje uppsättning poster fortfarande medan fälten från den motsatta sidan av kopplingen förblir obefolkade (null).

Om nyckelordet typ utelämnas är standardtyp för join en yttre join.

Right join

Denna join-typ behåller alla poster som håller på att laddas, samtidigt som posterna i tabellen som denna join är inriktad på reduceras till endast de poster där det finns en associationsmatchning i de inkommande posterna. Detta är en specifik join-typ som ibland används som ett sätt att trimma ner en redan förinläst tabell med poster till en nödvändig delmängd.

Exempel på resultatuppsättningar från olika typer av join-åtgärder

Exempel på resultatuppsättningar från olika typer av join-åtgärder

Exempel på resultatuppsättningar från olika typer av join-åtgärder ![Exempel på resultatuppsättningar från olika typer av join-åtgärder, med en före- och efterrepresentation av datatabellerna efter varje åtgärd.](https://help.qlik.com/sv-SE/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-join-examples-operations.png)

Anteckning om informationOm det inte finns några gemensamma fältnamn mellan källan och målet för en join-åtgärd, kommer kopplingen att resultera i en kartesisk produkt av alla rader – detta kallas en cross join.

Exempel på resultatuppsättning från en cross join-åtgärd

Exempel på resultatuppsättning från en cross join-åtgärd

Exempel på resultatuppsättning från en cross join-åtgärd ![Före- och efterjämförelse av indata med utdata efter en cross join-åtgärd (vilket kan innebära en join-åtgärd av vilken typ som helst).](https://help.qlik.com/sv-SE/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-examples-join-no-common-fields.png)

Syntax:

[inner | outer | left | right ]Join [ (tablename ) ]( loadstatement | selectstatement )

Argument

| Argument | Beskrivning |
| --- | --- |
| tablename | Namnet på den tabell som ska jämföras med den inlästa tabellen. |
| loadstatementeller selectstatement | LOAD- eller SELECT-satsen för den laddade tabellen. |

Dessa ämnen kan hjälpa dig att arbeta med den här funktionen:

Relaterade ämnen

| Avsnitt | Beskrivning |
| --- | --- |
| [Kombinera tabeller med Join och Keep](https://help.qlik.com/sv-SE/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm) | Det här ämnet ger ytterligare förklaringar av begreppen join och keep för datauppsättningar. |
| [Keep](https://help.qlik.com/sv-SE/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm) | `Keep`-laddningsprefixet liknar `Join`-prefixet, men det kombinerar inte käll- och måldatauppsättningarna. Istället trimmar den varje datauppsättning enligt vilken typ av åtgärd som används (inner, outer, left eller right). |

## Exempel 1 – Left join: Berika en måltabell med en referensdatauppsättning

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som representerar ändringsposter, som läses in i en tabell med namnet `Changes`. Den inkluderar ett nyckelfält för status-ID.

* En andra datauppsättning som representerar ändringsstatusar, som laddas och kombineras med de ursprungliga ändringsposterna genom att sammanfoga den med ett left `Join`-laddningsprefix.

Denna vänstra koppling säkerställer att ändringsposterna förblir intakta samtidigt som statusattribut läggs till där en matchning i de inkommande statusposterna hittas baserat på ett gemensamt status-ID.

Laddningsskript

```
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');
```

Resultat

Öppna datamodellvyn och notera formen på datamodellen. Endast en denormaliserad tabell finns. Det är en kombination av alla ursprungliga ändringsposter, med matchande statusattribut sammanfogade för varje ändringspost.

Resulterande intern datamodell

| Ändringar |
| --- |
| Ändrings-ID |
| Status-ID |
| Schemalagt startdatum |
| Schemalagt slutdatum |
| Affärspåverkan |
| Status |
| Underordnad status |

Om du utökar förhandsgranskningsfönstret i datamodellvyn kommer du att se en del av denna fullständiga resultatuppsättning organiserad i en tabell:

Förhandsgranskning av ändringstabellen i datamodellvyn

| Ändrings-ID | Status-ID | Schemalagt startdatum | Schemalagt slutdatum | Affärspåverkan | Status | Underordnad status |
| --- | --- | --- | --- | --- | --- | --- |
| 10030 | 4 | 19/01/2022 | 23/02/2022 | Inga | Stängt | Avbruten |
| 10031 | 3 | 20/01/2022 | 25/03/2022 | Lågt | Stängt | Slutfört |
| 10015 | 3 | 04/01/2022 | 15/02/2022 | Lågt | Stängt | Slutfört |
| 10103 | 1 | 02/04/2022 | 29/05/2022 | Medel | Öppna | Inte startad |
| 10116 | 1 | 15/04/2022 | 24/04/2022 | Inga | Öppna | Inte startad |
| 10134 | 1 | 03/05/2022 | 08/07/2022 | Lågt | Öppna | Inte startad |
| 10264 | 1 | 10/09/2022 | 17/10/2022 | Medel | Öppna | Inte startad |
| 10040 | 1 | 29/01/2022 | 22/04/2022 | Inga | Öppna | Inte startad |
| 10323 | 1 | 08/11/2022 | 26/11/2022 | Högt | Öppna | Inte startad |
| 10187 | 2 | 25/06/2022 | 24/08/2022 | Lågt | Öppna | Påbörjad |
| 10185 | 2 | 23/06/2022 | 08/09/2022 | Inga | Öppna | Påbörjad |
| 10220 | 2 | 28/07/2022 | 06/09/2022 | Inga | Öppna | Påbörjad |
| 10326 | 2 | 11/11/2022 | 05/12/2022 | Inga | Öppna | Påbörjad |
| 10138 | 2 | 07/05/2022 | 03/08/2022 | Inga | Öppna | Påbörjad |
| 10334 | 2 | 19/11/2022 | 06/02/2023 | Lågt | Öppna | Påbörjad |

Eftersom den femte raden i tabellen Status (status-ID: "5", status: "stängd", understatus: "inaktuell") inte motsvarar någon av posterna i tabellen Ändringar, visas informationen i denna rad inte i resultatuppsättningen ovan.

Gå tillbaka till Skriptredigeraren. Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension: `Status`.

Lägg till måttet:

`=Count([Change ID])`

Nu kan du inspektera antalet ändringar efter status.

Resultattabell

| Status | =Count([Change ID]) |
| --- | --- |
| Öppna | 12 |
| Stängt | 3 |

## Exempel 2 – Inner join: Kombinera endast matchande poster

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som representerar ändringsposter, som läses in i en tabell med namnet `Changes`.

* En andra datauppsättning som representerar ändringsposter med ursprung i källsystemet `JIRA`. Denna laddas och kombineras med de ursprungliga ändringsposterna genom att sammanfoga den med ett `Inner Join`-laddningsprefix.

Denna `Inner Join` säkerställer att endast de fem ändringsposterna som finns i båda datamängderna behålls.

Laddningsskript

```
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');
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `Source System`

* `Change ID`

* `Business Impact`

Nu kan du inspektera de fem resulterande posterna. Den resulterande tabellen från en `Inner Join` kommer endast att innehålla poster med matchande information i båda datauppsättningarna.

Resultattabell

| Källsystem | Ändrings-ID | Affärspåverkan |
| --- | --- | --- |
| JIRA | 10030 | Inga |
| JIRA | 10134 | Lågt |
| JIRA | 10220 | Inga |
| JIRA | 10323 | Högt |
| JIRA | 10334 | Lågt |

## Exempel 3 – Yttre sammanfogning: Kombinera överlappande rekorduppsättningar

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som representerar ändringsposter, som läses in i en tabell med namnet `Changes`.

* En andra datauppsättning som representerar ändringsposter med ursprung i källsystemet `JIRA`. Denna laddas och kombineras med de ursprungliga ändringsposterna genom att sammanfoga den med ett `Outer Join`-laddningsprefix.

Detta säkerställer att alla överlappande ändringsposter från båda datamängderna bevaras.

Laddningsskript

```
// 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');
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `Source System`

* `Change ID`

* `Business Impact`

Nu kan du inspektera de 10 resulterande posterna.

Resultattabell

| Källsystem | Ändrings-ID | Affärspåverkan |
| --- | --- | --- |
| JIRA | 10030 | Inga |
| JIRA | 10134 | Lågt |
| JIRA | 10220 | Inga |
| JIRA | 10323 | - |
| JIRA | 10334 | Lågt |
| JIRA | 10597 | - |
| - | 10015 | Lågt |
| - | 10031 | Lågt |
| - | 10040 | Inga |
| - | 10138 | Inga |

## Exempel 4 – Högerkoppling: Trimma ner en måltabell med en sekundär huvuddatauppsättning

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som representerar ändringsposter, som läses in i en tabell med namnet Changes.

* En andra datauppsättning som representerar ändringsposter som härrör från källsystemet Teamwork. Denna läses in och kombineras med originalposterna genom att sammanfoga den med ett Right Join-inläsningsprefix.

Detta säkerställer att endast Teamwork-ändringsposter sparas, samtidigt som inga Teamwork-poster förloras om måltabellen inte har en matchande Change ID.

Laddningsskript

```
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');
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* Source System

* Change ID

* Business Impact

Nu kan du inspektera de fem resulterande posterna.

Resultattabell

| Källsystem | Ändrings-ID | Affärspåverkan |
| --- | --- | --- |
| Teamarbete | 10015 | Lågt |
| Teamarbete | 10031 | Lågt |
| Teamarbete | 10040 | Inga |
| Teamarbete | 10103 | Medel |
| Teamarbete | 50231 | - |

## Mer information

* [Load](https://help.qlik.com/sv-SE/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm)
* [Select](https://help.qlik.com/sv-SE/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Select.htm)
* [Inner](https://help.qlik.com/sv-SE/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Inner.htm)
* [Outer](https://help.qlik.com/sv-SE/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Outer.htm)
* [Left](https://help.qlik.com/sv-SE/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Left.htm)
* [Right](https://help.qlik.com/sv-SE/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Right.htm)
* [Keep](https://help.qlik.com/sv-SE/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm)
* [Kombinera tabeller med Join och Keep](https://help.qlik.com/sv-SE/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm)