# Join

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

Efektem łączenia danych jest rozszerzenie tabeli docelowej o dodatkowy zestaw pól lub atrybutów, a mianowicie takich, które nie są jeszcze obecne w tabeli docelowej. Wszelkie wspólne nazwy pól między zestawem danych źródłowych a tabelą docelową są używane do określenia sposobu powiązania nowych przychodzących rekordów. Jest to powszechnie określane jako „naturalne złączenie” (natural join). Operacja złączenia 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 unikalności powiązania złączenia i zastosowanego typu złączenia.

[Join script prefix](https://play.vidyard.com/7xrdzssVH99Jsr8gmPunCC)

## Typy złączeń

Istnieją cztery typy złączeń:

* Left join

* Inner join

* Outer join

* Right join

Przykładowe zestawy wyników z różnych typów operacji złączenia

Przykładowe zestawy wyników z różnych typów operacji złączenia

Przykładowe zestawy wyników z różnych typów operacji złączenia ![Przykładowe zestawy wyników z różnych typów operacji złączenia, z przedstawieniem tabel danych przed i po każdej operacji. Dane wejściowe składają się z tabeli docelowej i przychodzącego zestawu danych. Tabela docelowa ma dwie kolumny z dwoma wpisami wierszy dla pól 'Trade ID' i 'Asset Class'. Przychodzące dane mają dwie kolumny z dwoma wpisami wierszy dla pól 'Trade ID' i 'Exchange'. Left Join zachowuje początkową tabelę docelową i dodaje trzecią kolumnę ze wszystkim pustym, z wyjątkiem dodania jednego z wpisów wiersza 'Exchange'. Inner Join tworzy tabelę z jednym wierszem Trade ID i trzecią kolumną, ponownie dla wpisu wiersza 'Exchange'. Outer Join zachowuje tabelę docelową i dodaje trzecią kolumnę, wraz z trzecim wierszem, do którego dołączany jest drugi wiersz przychodzącego zestawu danych. Right Join usuwa drugi wpis wiersza tabeli docelowej i zastępuje go informacjami z drugiego wpisu wiersza przychodzącego zestawu danych, dodając w procesie trzecią kolumnę.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-join-examples-operations.png)

### Left join

Left join to najczęstszy typ złączenia. Na przykład, jeśli masz zestaw danych transakcyjnych i chcesz połączyć go z referencyjnym zestawem danych, zazwyczaj użyjesz `Left Join`. Najpierw załadujesz tabelę transakcji, a następnie załadujesz referencyjny zestaw danych, łącząc go za pomocą prefiksu `Left Join` z już załadowaną tabelą transakcji. `Left Join` zachowa wszystkie transakcje w niezmienionej formie i doda uzupełniające pola danych referencyjnych tam, gdzie znaleziono dopasowanie.

Left join

Left join

Left join ![Diagram przedstawiający na wysokim poziomie kombinacje danych, które występują podczas left join.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/join-types-scripting_left.png)

### Inner join

Jeśli masz dwa zestawy danych i interesują Cię tylko wyniki, w których istnieje pasujące powiązanie, 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 znaleziono dopasowania. W rezultacie tabela docelowa może mieć mniej rekordów niż przed wykonaniem operacji złączenia.

Inner join

Inner join

Inner join ![Diagram przedstawiający na wysokim poziomie kombinacje danych, które występują podczas inner join.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/join-types-scripting_inner.png)

### Outer join (domyślne)

Jeśli musisz zachować zarówno rekordy docelowe, jak i wszystkie rekordy przychodzące, użyj `Outer Join`. Tam, gdzie nie znaleziono dopasowania, każdy zestaw rekordów jest nadal zachowywany, podczas gdy pola po przeciwnej stronie złączenia pozostaną nieuzupełnione (null).

Jeśli słowo kluczowe typu zostanie pominięte, domyślnym typem złączenia jest outer join.

Outer join

Outer join

Outer join ![Diagram przedstawiający na wysokim poziomie kombinacje danych, które występują podczas outer join.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/join-types-scripting_outer.png)

### Right join

Ten typ złączenia zachowuje wszystkie rekordy, które mają zostać załadowane, jednocześnie redukując rekordy w tabeli docelowej złączenia tylko do tych rekordów, dla których istnieje dopasowanie powiązania w rekordach przychodzących. Jest to niszowy typ złączenia, który jest czasami używany jako sposób na przycięcie już wstępnie załadowanej tabeli rekordów do wymaganego podzbioru.

Right join

Right join

Right join ![Diagram przedstawiający na wysokim poziomie kombinacje danych, które występują podczas right join.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/join-types-scripting_right.png)

### Cross join

InformacjaJeśli między źródłem a celem operacji złączenia nie ma wspólnych nazw pól, złączenie spowoduje iloczyn kartezjański wszystkich wierszy – nazywa się to „cross join”.

Przykładowy zestaw wyników operacji "cross join"

Przykładowy zestaw wyników operacji "cross join"

Przykładowy zestaw wyników operacji "cross join" ![Porównanie danych wejściowych przed i po z wynikami po operacji cross join (która może obejmować operację złączenia dowolnego typu). Dane wejściowe to tabela docelowa i przychodzący zestaw danych. Tabela docelowa składa się z trzech kolumn z dwoma wpisami wierszy. Kolumny to 'Trade ID', 'Base Currency' i 'Amount'. Przychodzący zestaw danych ma dwie kolumny ('Trade Currency' i 'Rate') oraz dwa wpisy wierszy. Wynikowa tabela ma pięć kolumn, którymi są 'Trade ID', 'Base Currency', 'Amount', 'Target Currency' i 'Rate'. Istnieją cztery wpisy wierszy, łączące wszystkie dane. Każdy wpis 'Trade ID' ma dwa wiersze z różnymi danymi w pozostałych polach.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-examples-join-no-common-fields.png)

## Składnia i argumenty

[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. |

## Powiązane tematy

Te tematy mogą pomóc w pracy z tą funkcją:

Powiązane tematy

| Temat | Opis |
| --- | --- |
| [Łączenie tabel za pomocą Join i Keep](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm) | Ten temat zawiera dalsze wyjaśnienie koncepcji „łączenia” (joining) i „zachowywania” (keeping) zestawów danych. |
| [Keep](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm) | Prefiks ładowania `Keep` jest podobny do prefiksu `Join`, ale nie łączy źródłowych i docelowych zestawów danych. Zamiast tego przycina każdy zestaw danych zgodnie z typem przyjętej operacji (inner, outer, left lub right). |

## Przykłady skryptu ładowania - Left join

Left join zachowuje wszystkie rekordy z głównej (docelowej) tabeli i dodaje pasujące dane z drugiej (źródłowej) tabeli. Jeśli nie ma dopasowania w źródle, rekord głównej tabeli nadal się pojawia, ale z pustymi polami z tabeli źródłowej.

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

#### Left join: podstawowy przykład

Dodaj skrypt przykładowy do swojej aplikacji i uruchom go. Aby zobaczyć wynik, dodaj do arkusza w swojej aplikacji pola wyszczególnione w kolumnie wyników.

Skrypt ładowania

```
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];

Table2:
Left Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ]; 
```

Więcej informacji na temat używania ładowań wbudowanych (inline loads) można znaleźć w [Używanie wbudowanych ładowań do ładowania danych](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

Wyniki

Tabela wynikowa

| Column1 | Column2 | Column3 |
| --- | --- | --- |
| A | B | C |
| 1 | aa | xx |
| 2 | cc | - |
| 3 | ee | - |

Ten przykład demonstruje wynik Left Join, gdzie łączone są tylko wartości obecne w pierwszej (lewej) tabeli.

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

#### Przykład Left join: wzbogacanie zamówień o informacje o kliencie

Przegląd

Załóżmy, że masz listę zamówień, ale nie wszystkie zamówienia mają pasujący rekord klienta.

Skrypt ładowania

```
Orders:
Load * inline [
OrderID, CustomerID, Amount
1, 101, 200
2, 102, 150
3, 104, 400
];

Customers:
Left Join (Orders)
Load * inline [
CustomerID, Name
101, Alice
102, Bob
103, Carol
];
```

Wyniki

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

Podgląd tabeli w przeglądarce modelu danych

| OrderID | CustomerID | Amount | Name |
| --- | --- | --- | --- |
| 1 | 101 | 200 | Alice |
| 2 | 102 | 150 | Bob |
| 3 | 104 | 400 | - |

OrderID 1 i 2 mają pasujących klientów. OrderID 3 nie ma pasującego klienta, więc Name jest puste.

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

#### Przykład Left join: wzbogacanie tabeli docelowej o referencyjny zestaw danych

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 klucza Status ID.

* Drugi zestaw danych reprezentujący statusy zmian, który jest ładowany i łączony z oryginalnymi rekordami zmian poprzez złączenie go za pomocą prefiksu ładowania left `Join`.

Ten left join zapewnia, że rekordy zmian pozostają nienaruszone, podczas gdy dodawane są atrybuty statusu tam, gdzie znaleziono dopasowanie w przychodzących rekordach statusu na podstawie wspólnego Status 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');

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 zwróć uwagę na 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 tabelę:

Podgląd tabeli Changes 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 | Completed |
| 10015 | 3 | 04/01/2022 | 15/02/2022 | Low | Closed | Completed |
| 10103 | 1 | 02/04/2022 | 29/05/2022 | Medium | 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 | Medium | Open | Not Started |
| 10040 | 1 | 29/01/2022 | 22/04/2022 | None | Open | Not Started |
| 10323 | 1 | 08/11/2022 | 26/11/2022 | High | 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 (Status ID: '5', Status: 'Closed', Sub Status: 'Obsolete') nie odpowiada żadnemu z rekordów w tabeli Changes, informacje w tym wierszu nie pojawiają się w powyższym zestawie wyników.

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 wyników

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

## Przykłady skryptu ładowania - Inner join

Inner join zachowuje tylko rekordy, które istnieją w obu tabelach (na podstawie pasujących wartości pól).

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

#### Inner join: podstawowy przykład

Skrypt ładowania

Dodaj skrypt przykładowy do swojej aplikacji i uruchom go. Aby zobaczyć wynik, dodaj do arkusza w swojej aplikacji pola wyszczególnione w kolumnie wyników.

```
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];

Table2:
Inner Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ];
```

Więcej informacji na temat używania ładowań wbudowanych można znaleźć w [Używanie wbudowanych ładowań do ładowania danych](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

Wyniki

Tabela wynikowa

| Column1 | Column2 | Column3 |
| --- | --- | --- |
| A | B | C |
| 1 | aa | xx |

Ten przykład demonstruje wynik Inner Join, gdzie łączone są tylko wartości obecne zarówno w pierwszej (lewej), jak i drugiej (prawej) tabeli.

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

#### Przykład Inner join: redukowanie zamówień tylko do wysłanych

Przegląd

Masz zamówienia i listę wysłanych zamówień. Chcesz tylko zamówienia, które zostały wysłane.

Skrypt ładowania

```
Orders:
Load * inline [
OrderID, Amount
1, 200
2, 150
3, 400
];

Shipped:
Inner Join (Orders)
Load * inline [
OrderID, ShipDate
2, 2022-05-01
3, 2022-05-02
4, 2022-05-03
];
```

Wyniki

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

Podgląd tabeli w przeglądarce modelu danych

| OrderID | Amount | ShipDate |
| --- | --- | --- |
| 2 | 150 | 2022-05-01 |
| 3 | 400 | 2022-05-02 |

Pojawiają się tylko OrderID 2 i 3, ponieważ istnieją w obu tabelach.

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

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

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 on ładowany i łączony z oryginalnymi rekordami poprzez złączenie go za pomocą prefiksu ładowania Inner Join.

Ten Inner Join zapewnia, że zachowane zostaną 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 wynikowa z Inner Join będzie zawierać tylko rekordy z pasującymi informacjami w obu zestawach danych.

Tabela wyników

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

## Przykłady skryptu ładowania - Outer join

Outer join zachowuje wszystkie rekordy z obu tabel. Tam, gdzie nie ma dopasowania, pola pozostają puste.

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

#### Outer join: podstawowy przykład

Skrypt ładowania

Dodaj skrypt przykładowy do swojej aplikacji i uruchom go. Aby zobaczyć wynik, dodaj do arkusza w swojej aplikacji pola wyszczególnione w kolumnie wyników.

```
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];

Table2:
Outer Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ]; 
```

Więcej informacji na temat używania ładowań wbudowanych można znaleźć w [Używanie wbudowanych ładowań do ładowania danych](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

Wyniki

Tabela wynikowa

| Column1 | Column2 | Column3 |
| --- | --- | --- |
| A | B | C |
| 1 | aa | xx |
| 2 | cc | - |
| 3 | ee | - |
| 4 | - | yy |

W tym przykładzie dwie tabele, Table1 i Table2, są scalane w jedną tabelę o nazwie Table1. W takich przypadkach prefiks outer jest często używany do łączenia kilku tabel w jedną w celu wykonywania agregacji na wartościach pojedynczej tabeli.

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

#### Outer join: tworzenie pełnej listy wszystkich klientów i zamówień

Przegląd

Chcesz uzyskać pełną listę wszystkich klientów i zamówień, nawet jeśli niektórzy klienci nie mają zamówień, a niektóre zamówienia nie mają rekordu klienta.

Skrypt ładowania

```
Orders:
Load * inline [
OrderID, CustomerID
1, 101
2, 102
3, 104
];

Customers:
Outer Join (Orders)
Load * inline [
CustomerID, Name
101, Alice
102, Bob
103, Carol
];
```

Wyniki

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

Podgląd tabeli w przeglądarce modelu danych

| OrderID | CustomerID | Name |
| --- | --- | --- |
| 1 | 101 | Alice |
| 2 | 102 | Bob |
| 3 | 104 | - |
| - | 103 | Carol |

OrderID 3 nie ma pasującego klienta (Name puste).

CustomerID 103 (Carol) nie ma pasującego zamówienia (OrderID puste).

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

#### Outer join: łączenie nakładających się zestawów rekordów

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, który jest ładowany i łączony z oryginalnymi rekordami poprzez złączenie go za pomocą prefiksu ładowania Outer Join.

Zapewnia to, że wszystkie nakładające się rekordy zmian z obu zestawów danych zostaną zachowane.

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 wyników

| 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łady skryptu ładowania - Right join

Right join zachowuje wszystkie rekordy z tabeli źródłowej i dodaje pasujące informacje z tabeli docelowej. Jeśli tabela docelowa nie ma dopasowania, pola z niej są puste.

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

#### Right join: podstawowy przykład

Skrypt ładowania

Dodaj skrypt przykładowy do swojej aplikacji i uruchom go. Aby zobaczyć wynik, dodaj do arkusza w swojej aplikacji pola wyszczególnione w kolumnie wyników.

```
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];

Table2:
Right Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ];
```

Więcej informacji na temat używania ładowań wbudowanych można znaleźć w [Używanie wbudowanych ładowań do ładowania danych](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

Wynik

Tabela wynikowa

| Column1 | Column2 | Column3 |
| --- | --- | --- |
| A | B | C |
| 1 | aa | xx |
| 4 | - | yy |

Ten przykład demonstruje wynik Right Join, gdzie łączone są tylko wartości obecne w drugiej (prawej) tabeli.

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

#### Przykład Right join: łączenie wszystkich klientów z pasującymi zamówieniami

Przegląd

Twoja tabela źródłowa to lista klientów; chcesz wszystkich klientów oraz wszelkie pasujące zamówienia.

Skrypt ładowania

```
Orders:
Load * inline [
OrderID, CustomerID
1, 101
2, 102
3, 104
];

Customers:
Right Join (Orders)
Load * inline [
CustomerID, Name
101, Alice
102, Bob
103, Carol
];
```

Wyniki

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

Podgląd tabeli w przeglądarce modelu danych

| CustomerID | Name | OrderID |
| --- | --- | --- |
| 101 | Alice | 1 |
| 102 | Bob | 2 |
| 103 | Carol | - |

Pojawiają się wszyscy klienci. Carol nie ma zamówień (OrderID puste).

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

#### Przykład Right join: przycinanie tabeli docelowej za pomocą pomocniczego głównego zestawu danych

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 on ładowany i łączony z oryginalnymi rekordami poprzez złączenie go za pomocą prefiksu ładowania Right Join.

Zapewnia to, że zachowane zostaną tylko rekordy zmian Teamwork, przy czym nie utracone zostaną żadne rekordy 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 wyników

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

## Rozwiązywanie problemów - Cross join

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

#### Przykład rozwiązywania problemów ze skryptem ładowania: brak wspólnych nazw pól

Przegląd

Jeśli połączysz dwie tabele bez pasujących nazw pól, każdy wiersz z pierwszej tabeli zostanie połączony z każdym wierszem z drugiej — potencjalnie tworząc ogromną liczbę rekordów (iloczyn kartezjański) i prowadząc do nieoczekiwanych powiązań danych.

Skrypt ładowania

```
TableA:
Load * inline [
A_ID, ValueA
1, foo
2, bar
];

TableB:
Join (TableA)
Load * inline [
B_ID, ValueB
10, baz
11, qux
];
```

Wyniki

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

Podgląd tabeli w przeglądarce modelu danych

| A\_ID | ValueA | B\_ID | ValueB |
| --- | --- | --- | --- |
| 1 | foo | 10 | baz |
| 1 | foo | 11 | qux |
| 2 | bar | 10 | baz |
| 2 | bar | 11 | qux |

Każde A\_ID jest sparowane z każdym B\_ID (łącznie 4 wiersze).

WskazówkaZawsze sprawdzaj, czy nazwy pól pasują zgodnie z zamierzeniami przed uruchomieniem złączenia.

[Load](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm)

[Select](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Select.htm)

[Inner](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Inner.htm)

[Outer](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Outer.htm)

[Left](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Left.htm)

[Right](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Right.htm)

[Keep](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Keep.htm)

[Łączenie tabel za pomocą Join i Keep](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/combine-tables-join-keep.htm)