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.
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.
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:
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
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
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
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
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
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
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
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
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.
Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!