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.
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”.
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:
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
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
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
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
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
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
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
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
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: