Łączenie tabel operatorami Join i Keep
Sprzężenie to operacja polegająca na połączeniu dwóch tabel w jedną. Rekordami tabeli wynikowej są kombinacje rekordów oryginalnych tabel, zazwyczaj połączone w taki sposób, że rekordy składające się na poszczególne kombinacje w tabeli wynikowej mają wspólną wartość w jednym lub wielu polach wspólnych — jest to tzw. sprzężenie naturalne. W Qlik Sense połączenia mogą być wykonywane w skrypcie, co powoduje tworzenie tabel logicznych.
Tabele można sprzęgać bezpośrednio w skrypcie. Logika aplikacji Qlik Sense nie będzie wtedy widzieć poszczególnych tabel, tylko wynik sprzężenia w postaci pojedynczej tabeli wewnętrznej. W niektórych sytuacjach takie zachowanie jest pożądane, ale ma ono swoje wady:
- załadowane tabele często stają się większe, a aplikacja Qlik Sense działa wolniej;
- niektóre informacje mogą zostać utracone, na przykład częstotliwość (liczba rekordów) z pierwotnej tabeli.
Aby ograniczyć liczbę sytuacji wymagających jawnego sprzęgania tabel, stworzono funkcję Keep, której działanie polega na zredukowaniu jednej lub obu tabel do części wspólnej danych przed zapisaniem tych tabel w aplikacji Qlik Sense.
Join
Najprostszym sposobem na uzyskanie sprzężenia jest zastosowanie w skrypcie prefiksu Join, który powoduje wykonanie sprzężenia tabeli wewnętrznej z inną wskazaną tabelą lub z ostatnio utworzoną tabelą. Wykonywane jest sprzężenie zewnętrzne, które daje wszystkie możliwe kombinacje wartości z obu tabel.
Przykład:
Wynikowa tabela wewnętrzna zawiera pola a, b, c oraz d. Liczba rekordów zależy od wartości pól w obu tabelach.
Więcej informacji zawiera temat Join.
Używanie funkcji Join
Jawne użycie prefiksu Join w języku skryptowym Qlik Sense powoduje wykonanie pełnego sprzężenia dwóch tabel. Wynikiem jest pojedyncza tabela. Takie połączenia mogą często prowadzić do powstania bardzo dużych tabel.
Wykonaj następujące czynności:
- Otwórz aplikację Advanced Scripting Tutorial.
- Dodaj nową sekcję skryptu w edytorze ładowania danych.
- Wywołaj sekcję Transactions.
-
W sekcji DataFiles dostępnej po prawej stronie kliknij przycisk Wybierz dane.
- Prześlij, a następnie wybierz Transactions.csv.
- W oknie Wybierz dane z kliknij przycisk Wstaw skrypt.
- Prześlij, a następnie wybierz Salesman.xlsx.
- W oknie Wybierz dane z kliknij przycisk Wstaw skrypt.
- Kliknij polecenie Ładuj dane.
- Otwórz przeglądarkę modelu danych. Model danych wygląda następująco:
Skrypt powinien wyglądać następująco:
Jednak osobne tabele Transactions i Salesman mogą nie być wymaganym rezultatem. Lepsze może być połączenie tych dwóch tabel.
Wykonaj następujące czynności:
- Aby ustawić nazwę tabeli połączonej, dodaj następujący wiersz nad pierwszą instrukcją LOAD:
- Aby połączyć tabele Transactions i Salesman, dodaj następujący wiersz nad drugą instrukcją LOAD:
- Kliknij polecenie Ładuj dane.
- Otwórz przeglądarkę modelu danych. Model danych wygląda następująco:
Transactions:
Join(Transactions)
Skrypt powinien wyglądać następująco:
Transactions:
LOAD
"Transaction ID",
"Salesman ID",
Product,
"Serial No",
"ID Customer",
"List Price",
"Gross Margin"
FROM [lib://DataFiles/Transactions.csv]
(txt, codepage is 28591, embedded labels, delimiter is ',', msq);
Join(Transactions)
LOAD
"Salesman ID",
Salesman,
"Distributor ID"
FROM [lib://DataFiles/Salesman.xlsx]
(ooxml, embedded labels, table is Salesman);
Wszystkie pola tabel Transactions i Salesman są teraz połączone w jednej tabeli Transactions.
Keep
Jedną z kluczowych zalet aplikacji Qlik Sense jest możliwość tworzenia skojarzeń między tabelami zamiast wykonywania sprzężeń. Pozwala to ograniczyć wymagania pamięciowe, przyspiesza działanie programu i daje ogromną elastyczność działania. Funkcję Keep zaprojektowano z myślą o ograniczeniu liczby sytuacji wymagających używania jawnych połączeń.
Przedrostek Keep pomiędzy dwoma instrukcjami LOAD lub SELECT redukuje jedną lub obie tabele do przecięcia danych tabeli przed zapisaniem ich w Qlik Sense. Prefiks Keep musi być zawsze poprzedzony jednym z następujących słów kluczowych: Inner, Left lub Right. Rekordy są wybierane z tabel w taki sam sposób, jak przy analogicznym sprzężeniu. Tabele nie są jednak sprzęgane i pozostaną zapisane w aplikacji Qlik Sense jako dwie odrębne tabele nazwane.
Więcej informacji zawiera temat Keep.
Inner
Prefiksy Join i Keep skryptu ładowania danych mogą być poprzedzone prefiksem Inner
Podanie go przed prefiksem Join oznacza, że do tabel ma być zastosowane sprzężenie wewnętrzne. Wynikowa tabela zawiera tylko te kombinacje wierszy z obu tabel, które mają po obu stronach pełen zestaw danych.
Podanie go przed prefiksem Keep oznacza, że przed zapisaniem wyniku w aplikacji Qlik Sense tabele mają zostać zredukowane do części wspólnej danych.
Przykład:
W tych przykładach użyjemy tabel źródłowych Table1 i Table2.
Należy pamiętać, że są to tylko przykłady. Nie istnieją żadne ćwiczenia dodatkowe, które należy wykonać w Qlik Sense.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Inner Join
Najpierw wykonamy na tabelach operację Inner Join, której wynikiem będzie tabela VTable zawierająca tylko jeden wiersz (jedyny rekord występujący w obu tabelach) z połączonymi danymi z obu tabel.
A | B | C |
---|---|---|
1 | aa | xx |
Inner Keep
Natomiast jeśli na tabelach zostanie wykonana operacja Inner Keep, nadal będziemy mieli dwie tabele. Dwie tabele są skojarzone poprzez wspólne pole A.
A | B |
---|---|
1 | aa |
A | C |
---|---|
1 | xx |
Więcej informacji zawiera temat Inner.
Left
Prefiksy Join i Keep skryptu ładowania danych mogą być poprzedzone prefiksem left.
Podanie go przed prefiksem Join oznacza, że do tabel ma być zastosowane sprzężenie lewe (Left Join). Wynikowa tabela zawiera tylko te kombinacje wierszy z obu tabel, które mają pełen zestaw danych z pierwszej tabeli.
Podanie go przed prefiksem Keep oznacza, że przed zapisaniem wyniku w aplikacji Qlik Sense druga tabela ma zostać zredukowana do części wspólnej z pierwszą tabelą.
Przykład:
W tych przykładach użyjemy tabel źródłowych Table1 i Table2.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Najpierw wykonamy na tabelach operację Left Join, której wynikiem będzie tabela VTable zawierająca wszystkie wiersze z tabeli Table1 połączone z polami z pasujących wierszy w tabeli Table2.
A | B | C |
---|---|---|
1 | aa | xx |
2 | cc | - |
3 | ee | - |
Natomiast jeśli na tabelach zostanie wykonana operacja Left Keep, nadal będziemy mieli dwie tabele. Dwie tabele są skojarzone poprzez wspólne pole A.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
Więcej informacji zawiera temat Left.
Right
Prefiksy Join i Keep języka skryptowego Qlik Sense mogą być poprzedzone prefiksem right.
Podanie go przed prefiksem Join oznacza, że do tabel ma być zastosowane sprzężenie prawe (Right Join). Wynikowa tabela zawiera tylko te kombinacje wierszy z obu tabel, które mają pełen zestaw danych z drugiej tabeli.
Podanie go przed prefiksem Keep oznacza, że przed zapisaniem wyniku w aplikacji Qlik Sense pierwsza tabela ma zostać zredukowana do części wspólnej z drugą tabelą.
Przykład:
W tych przykładach użyjemy tabel źródłowych Table1 i Table2.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Najpierw wykonamy na tabelach operację Right Join, której wynikiem będzie tabela VTable zawierająca wszystkie wiersze z tabeli Table2 połączone z polami z pasujących wierszy w tabeli Table1.
A | B | C |
---|---|---|
1 | aa | xx |
4 | - | yy |
Natomiast jeśli na tabelach zostanie wykonana operacja Right Keep, nadal będziemy mieli dwie tabele. Dwie tabele są skojarzone poprzez wspólne pole A.
A | B |
---|---|
1 | aa |
A | C |
---|---|
1 | xx |
4 | yy |
Więcej informacji zawiera temat Right.