# Join

Prefiks join powoduje sprzężenie załadowanej tabeli z istniejącą tabelą nazwaną lub ostatnio utworzoną tabelą danych.

Efektem sprzężenia danych jest rozszerzenie tabeli docelowej o dodatkowy zestaw pól lub atrybutów, czyli tych, których nie ma jeszcze w tabeli docelowej. Wszelkie wspólne nazwy pól między źródłowym zestawem danych a tabelą docelową są używane do określenia sposobu powiązania nowych rekordów przychodzących. Jest to powszechnie określane jako „sprzężenie naturalne”. Operacja sprzężenia Qlik może prowadzić do tego, że wynikowa tabela docelowa będzie miała więcej lub mniej rekordów niż na początku, w zależności od unikatowości asocjacji łączenia i typu zastosowanego sprzężenia.

Istnieją cztery rodzaje sprzężeń:

Left join

Sprzężenia Left join są najczęściej występującym typem sprzężenia. Na przykład, jeśli masz zestaw danych transakcyjnych i chcesz połączyć go z zestawem danych referencyjnych, zwykle użyjesz `Left Join`. Najpierw należy załadować tabelę transakcji, a następnie załadować zestaw danych referencyjnych podczas sprzęgania jej za pomocą prefiksu `Left Join` z już załadowaną tabelą transakcji. `Left Join` zachowałoby wszystkie transakcje bez zmian i dodałoby dodatkowe pola danych referencyjnych, w których znaleziono dopasowanie.

Inner join

Jeśli masz dwa zestawy danych, w których interesują Cię tylko wyniki z pasującą asocjacją, rozważ użycie `Inner Join`. Spowoduje to wyeliminowanie wszystkich rekordów zarówno z załadowanych danych źródłowych, jak i z tabeli docelowej, jeśli nie zostanie znalezione dopasowanie. W rezultacie może to spowodować pozostawienie w tabeli docelowej mniejszej liczby rekordów niż przed wykonaniem operacji sprzęgania.

Outer join

Jeśli musisz zachować zarówno rekordy docelowe, jak i wszystkie rekordy przychodzące, użyj `Outer Join`. Jeśli nie zostanie znalezione żadne dopasowanie, każdy zestaw rekordów jest nadal zachowywany, podczas gdy pola po przeciwnej stronie sprzężenia pozostaną niewypełnione (null).

Jeśli słowo kluczowe type zostanie pominięte, domyślnym typem sprzężenia jest outer join.

Right join

Ten typ sprzężenia zachowuje wszystkie rekordy, które mają zostać załadowane, jednocześnie redukując rekordy w tabeli będącej celem sprzężenia tylko do tych rekordów, dla których istnieje dopasowanie asocjacji w rekordach przychodzących. Jest to niszowy typ sprzężenia, który jest czasami używany jako środek do przycinania już załadowanej tabeli rekordów do wymaganego podzestawu.

Przykładowe zestawy wyników z różnych typów operacji sprzęgania

Przykładowe zestawy wyników z różnych typów operacji sprzęgania

Przykładowe zestawy wyników z różnych typów operacji sprzęgania ![Przykładowe zestawy wyników z różnych typów operacji sprzęgania z reprezentacją tabel danych przed i po każdej operacji.](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-join-examples-operations.png)

InformacjaJeśli nie ma wspólnych nazw pól między źródłem i celem operacji sprzężenia, da ona w wyniku iloczyn kartezjański wszystkich wierszy – nazywa się to „sprzężeniem krzyżowym”.

Przykładowy zestaw wyników z operacji „sprzężenia krzyżowego”

Przykładowy zestaw wyników z operacji „sprzężenia krzyżowego”

Przykładowy zestaw wyników z operacji „sprzężenia krzyżowego” ![Porównanie danych wejściowych z danymi wyjściowymi przed i po operacji sprzężenia krzyżowego (która może obejmować operację sprzężenia dowolnego typu).](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-examples-join-no-common-fields.png)

Składnia:

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

Argumenty

| Argument | Opis |
| --- | --- |
| tablename | Tabela nazwana, która ma być porównana do załadowanej tabeli. |
| loadstatementlub selectstatement | Instrukcja LOAD lub SELECT dla załadowanej tabeli. |

W pracy z tą funkcją mogą Ci pomóc poniższe tematy:

Tematy pokrewne

| Temat | Opis |
| --- | --- |
| [Łączenie tabel operatorami Join i Keep](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm) | Ten temat zawiera dalsze wyjaśnienia pojęć „sprzęgania” i „zachowywania” zbiorów danych. |
| [Keep](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm) | Prefiks ładowania `Keep` jest podobny do prefiksu `Join`, ale nie łączy źródłowego i docelowego zestawu danych. Zamiast tego przycina każdy zestaw danych zgodnie z typem przyjętej operacji (inner, outer, left lub right). |

## Przykład 1 — Left join: Wzbogacenie tabeli docelowej referencyjnym zestawem danych

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych reprezentujący rekordy zmian, który jest ładowany do tabeli o nazwie `Changes`. Zawiera pole Status ID.

* Drugi zestaw danych reprezentujący statusy zmian, który jest ładowany i łączony z oryginalnymi rekordami zmian przez sprzężenie go przy użyciu prefiksu ładowania Left `Join`.

To sprzężenie Left join zapewnia, że rekordy zmian pozostaną nienaruszone podczas dodawania atrybutów statusu, w przypadku gdy dopasowanie w przychodzących rekordach statusu zostanie znalezione na podstawie wspólnego identyfikatora statusu.

Skrypt ładowania

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

Wyniki

Otwórz Przeglądarkę modelu danych i zauważ kształt modelu danych. Obecna jest tylko jedna zdenormalizowana tabela. Jest to połączenie wszystkich oryginalnych rekordów zmian, z pasującymi atrybutami statusu dołączonymi do każdego rekordu zmiany.

Wynikowy wewnętrzny model danych

| Changes |
| --- |
| Change ID |
| Status ID |
| Scheduled Start Date |
| Scheduled End Date |
| Business Impact |
| Status |
| Sub Status |

Jeśli rozwiniesz okno podglądu w Przeglądarce modelu danych, zobaczysz część tego pełnego zestawu wyników zorganizowaną w formie tabeli:

Podgląd tabeli Zmiany w Przeglądarce modelu danych

| Change ID | Status ID | Scheduled Start Date | Scheduled End Date | Business Impact | Status | Sub Status |
| --- | --- | --- | --- | --- | --- | --- |
| 10030 | 4 | 19/01/2022 | 23/02/2022 | None | Closed | Cancelled |
| 10031 | 3 | 20/01/2022 | 25/03/2022 | Low | Closed | Zakończono |
| 10015 | 3 | 04/01/2022 | 15/02/2022 | Low | Closed | Zakończono |
| 10103 | 1 | 02/04/2022 | 29/05/2022 | Średni | Open | Not Started |
| 10116 | 1 | 15/04/2022 | 24/04/2022 | None | Open | Not Started |
| 10134 | 1 | 03/05/2022 | 08/07/2022 | Low | Open | Not Started |
| 10264 | 1 | 10/09/2022 | 17/10/2022 | Średni | Open | Not Started |
| 10040 | 1 | 29/01/2022 | 22/04/2022 | None | Open | Not Started |
| 10323 | 1 | 08/11/2022 | 26/11/2022 | Wysoka | Open | Not Started |
| 10187 | 2 | 25/06/2022 | 24/08/2022 | Low | Open | Started |
| 10185 | 2 | 23/06/2022 | 08/09/2022 | None | Open | Started |
| 10220 | 2 | 28/07/2022 | 06/09/2022 | None | Open | Started |
| 10326 | 2 | 11/11/2022 | 05/12/2022 | None | Open | Started |
| 10138 | 2 | 07/05/2022 | 03/08/2022 | None | Open | Started |
| 10334 | 2 | 19/11/2022 | 06/02/2023 | Low | Open | Started |

Ponieważ piąty wiersz w tabeli Status (Identyfikator statusu: „5”, Status: „Closed”, Status podrzędny: „Obsolete”) nie odpowiada żadnemu rekordowi w tabeli Changes, informacje w tym wierszu nie pojawiają się w zestawie wyników powyżej.

Wróć do Edytora ładowania danych. Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar: `Status`.

Dodaj tę miarę:

`=Count([Change ID])`

Teraz możesz sprawdzić liczbę zmian według statusu.

Tabela wynikowa

| Status | =Count([Change ID]) |
| --- | --- |
| Open | 12 |
| Closed | 3 |

## Przykład 2 — Inner join: Łączenie tylko pasujących rekordów

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych reprezentujący rekordy zmian, który jest ładowany do tabeli o nazwie `Changes`.

* Drugi zestaw danych reprezentujący rekordy zmian pochodzące z systemu źródłowego `JIRA`. Jest ładowany i łączony z oryginalnymi rekordami zmian przez sprzężenie go przy użyciu prefiksu ładowania `Inner Join`.

`Inner Join` zapewnia, że zachowanych jest tylko pięć rekordów zmian, które znajdują się w obu zestawach danych.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `Source System`

* `Change ID`

* `Business Impact`

Teraz możesz sprawdzić pięć wynikowych rekordów. Tabela wynikająca z `Inner Join` będzie zawierała tylko rekordy z pasującymi informacjami w obu zestawach danych.

Tabela wynikowa

| Source System | Change ID | Business Impact |
| --- | --- | --- |
| JIRA | 10030 | None |
| JIRA | 10134 | Low |
| JIRA | 10220 | None |
| JIRA | 10323 | High |
| JIRA | 10334 | Low |

## Przykład 3 — Outer join: Łączenie nakładających się zestawów rekordów

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych reprezentujący rekordy zmian, który jest ładowany do tabeli o nazwie `Changes`.

* Drugi zestaw danych reprezentujący rekordy zmian pochodzące z systemu źródłowego `JIRA`. Jest ładowany i łączony z oryginalnymi rekordami zmian przez sprzężenie go przy użyciu prefiksu ładowania `Outer Join`.

Zapewnia to zachowanie wszystkich nakładających się rekordów zmian z obu zestawów danych.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `Source System`

* `Change ID`

* `Business Impact`

Teraz możesz sprawdzić 10 wynikowych rekordów.

Tabela wynikowa

| Source System | Change ID | Business Impact |
| --- | --- | --- |
| JIRA | 10030 | None |
| JIRA | 10134 | Low |
| JIRA | 10220 | None |
| JIRA | 10323 | - |
| JIRA | 10334 | Low |
| JIRA | 10597 | - |
| - | 10015 | Low |
| - | 10031 | Low |
| - | 10040 | None |
| - | 10138 | None |

## Przykład 4 – Right join: Przycinanie tabeli docelowej przez dodatkowy główny zbiór danych

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych reprezentujący rekordy zmian, który jest ładowany do tabeli o nazwie Changes.

* Drugi zestaw danych reprezentujący rekordy zmian pochodzące z systemu źródłowego Teamwork. Jest ładowany i łączony z oryginalnymi rekordami przez sprzężenie go przy użyciu prefiksu ładowania Right Join.

Gwarantuje to, że przechowywane są tylko rekordy zmian Teamwork, bez utraty żadnych rekordów Teamwork, jeśli tabela docelowa nie ma pasującego Change ID.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* Source System

* Change ID

* Business Impact

Teraz możesz sprawdzić pięć wynikowych rekordów.

Tabela wynikowa

| Source System | Change ID | Business Impact |
| --- | --- | --- |
| Teamwork | 10015 | Low |
| Teamwork | 10031 | Low |
| Teamwork | 10040 | None |
| Teamwork | 10103 | Średni |
| Teamwork | 50231 | - |

## Dowiedz się więcej

* [Load](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm)
* [Select](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Select.htm)
* [Inner](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Inner.htm)
* [Outer](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Outer.htm)
* [Left](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Left.htm)
* [Right](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Right.htm)
* [Keep](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm)
* [Łączenie tabel operatorami Join i Keep](https://help.qlik.com/pl-PL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm)