NoConcatenate
Prefiks NoConcatenate wymusza traktowanie dwóch załadowanych tabel z identycznym zestawem pól jako dwóch oddzielnych tabel wewnętrznych, podczas gdy w przeciwnym wypadku automatycznie zostałaby wobec nich zastosowana konkatenacja.
Składnia:
NoConcatenate( loadstatement | selectstatement )
Domyślnie, jeśli do wcześniej załadowanej do skryptu tabeli zostanie załadowana tabela zawierająca identyczną liczbę pól o takich samych nazwach, to Qlik Sense automatycznie połączy te tabele. Stanie się tak nawet wtedy, gdy druga tabela będzie miała inną nazwę.
Jeśli jednak przed instrukcją LOAD lub przed instrukcją select drugiej tabeli zostanie dodany prefiks skryptu NoConcatenate, to tabele zostaną załadowane osobno.
Typowym przypadkiem użycia NoConcatenate jest sytuacja, gdy chcemy utworzyć tymczasową kopię tabeli w celu wykonania na tej kopii pewnych tymczasowych przekształceń, zachowując oryginalne dane. Prefiks NoConcatenate zapobiegnie niejawnemu dodaniu tej kopii do tabeli źródłowej.
Ustawienia regionalne
Jeżeli nie podano inaczej, w przykładach w tym temacie stosowany jest następujący format daty: MM/DD/RRRR. Format daty jest określony w instrukcji SET DateFormat w skrypcie ładowania danych. Domyślny format daty w Twoim systemie może być inny ze względu na ustawienia regionalne i inne czynniki. Formaty zastosowane w przykładach można zmienić, aby dostosować je do własnych wymagań. Zamiast tego można też zmienić formaty w skrypcie ładowania, aby pasowały do tych przykładów.
Domyślne ustawienia regionalne w aplikacjach są oparte na regionalnych ustawieniach systemu komputera lub serwera, na którym zainstalowano Qlik Sense. Jeśli serwer Qlik Sense, do którego uzyskujesz dostęp, jest ustawiony na Szwecję, Edytor ładowania danych użyje szwedzkich ustawień regionalnych dla dat, godziny i waluty. Te ustawienia regionalne nie są związane z językiem wyświetlanym w interfejsie użytkownika Qlik Sense. Interfejs Qlik Sense będzie wyświetlany w tym samym języku co używana przeglądarka.
Przykład | Wynik |
---|---|
Source: LOAD A,B from file1.csv; CopyOfSource: NoConcatenate LOAD A,B resident Source; |
Została załadowana tabela z A i B jako miarami. Druga tabela z takimi samymi polami została załadowana osobno przy użyciu zmiennej NoConcatenate. |
Przykład 1 – Konkatenacja niejawna
Przegląd
W tym przykładzie dodamy dwa skrypty ładowania po kolei.
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
-
Początkowy zestaw danych zawierający daty i kwoty, który został wysłany do tabeli o nazwie Transactions.
Pierwszy skrypt ładowania
Transactions:
LOAD
*
Inline [
id, date, amount
1, 08/30/2018, 23.56
2, 09/07/2018, 556.31
3, 09/16/2018, 5.75
4, 09/22/2018, 125.00
5, 09/22/2018, 484.21
6, 09/22/2018, 59.18
7, 09/23/2018, 177.42
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
-
id
-
date
-
amount
id | date | amount |
---|---|---|
1 | 08/30/2018 | 23.56 |
2 | 09/07/2018 | 556.31 |
3 | 09/16/2018 | 5.75 |
4 | 09/22/2018 | 125.00 |
5 | 09/22/2018 | 484.21 |
6 | 09/22/2018 | 59.18 |
7 | 09/23/2018 | 177.42 |
Drugi skrypt ładowania
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
-
Drugi zestaw danych z identycznymi polami został wysłany do tabeli Sales.
Sales:
LOAD
*
Inline [
id, date, amount
8, 10/01/2018, 164.27
9, 10/03/2018, 384.00
10, 10/06/2018, 25.82
11, 10/09/2018, 312.00
12, 10/15/2018, 4.56
13, 10/16/2018, 90.24
14, 10/18/2018, 19.32
];
Wyniki
Załaduj dane i przejdź do tabeli.
id | date | amount |
---|---|---|
1 | 08/30/2018 | 23.56 |
2 | 09/07/2018 | 556.31 |
3 | 09/16/2018 | 5.75 |
4 | 09/22/2018 | 125.00 |
5 | 09/22/2018 | 484.21 |
6 | 09/22/2018 | 59.18 |
7 | 09/23/2018 | 177.42 |
8 | 10/01/2018 | 164.27 |
9 | 10/03/2018 | 384.00 |
10 | 10/06/2018 | 25.82 |
11 | 10/09/2018 | 312.00 |
12 | 10/15/2018 | 4.56 |
13 | 10/16/2018 | 90.24 |
14 | 10/18/2018 | 19.32 |
Kiedy skrypt zostanie uruchomiony, tabela Sales zostanie niejawnie dołączona do istniejącej tabeli Transactions, ponieważ oba zestawy danych mają identyczną liczbę pól o takich samym nazwach. Dzieje się tak mimo tego, że znacznik nazwy drugiej tabeli próbuje nadać zestawowi wynikowemu nazwę ‘Sales’.
Aby przekonać się, że zestaw danych Sales został niejawnie dołączony, można zajrzeć do dziennika postępu ładowania danych.
Przykład 2 – Przypadek użycia
Przegląd
W tym przypadku mamy następujące elementy:
-
Zestaw danych transakcji zawierający:
-
id
-
date
-
amount (w GBP)
-
-
Tabela walut zawierająca:
-
Kursy wymiany USD na GBP
-
-
Drugi zestaw danych transakcji:
-
id
-
date
-
amount (w USD)
-
Załadujemy pięć skryptów po kolei.
-
Pierwszy skrypt ładowania zawiera początkowy zestaw danych zawierający daty i kwoty w GBP, który został wysłany do tabeli o nazwie Transactions.
-
Drugi skrypt ładowania zawiera następujące elementy:
-
Drugi zestaw danych zawierający daty i kwoty w USD, który został wysłany do tabeli o nazwie Transactions_in_USD.
-
Prefiks noconcatenate, który został umieszczony przed instrukcją LOAD zestawu danych Transactions_in_USD, aby zapobiec niejawnej konkatenacji.
-
-
Trzeci skrypt ładowania zawiera prefiks join, który zostanie użyty w celu utworzenia kursu wymiany walut między walutami GBP i USD w tabeli Transactions_in_USD.
-
Czwarty skrypt ładowania zawiera prefiks concatenate, który doda Transactions_in_USD do początkowej tabeli Transactions.
-
Piąty skrypt ładowania zawiera instrukcję drop table, która usunie tabelę Transactions_in_USD po dodaniu jej danych do tabeli Transactions.
Pierwszy skrypt ładowania
Transactions:
Load * Inline [
id, date, amount
1, 12/30/2018, 23.56
2, 12/07/2018, 556.31
3, 12/16/2018, 5.75
4, 12/22/2018, 125.00
5, 12/22/2018, 484.21
6, 12/22/2018, 59.18
7, 12/23/2018, 177.42
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
- id
- date
- amount
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
Tabela przedstawia pierwszy zestaw danych z kwotami w GBP.
Drugi skrypt ładowania
Transactions_in_USD:
NoConcatenate
Load * Inline [
id, date, amount
8, 01/01/2019, 164.27
9, 01/03/2019, 384.00
10, 01/06/2019, 25.82
11, 01/09/2019, 312.00
12, 01/15/2019, 4.56
13, 01/16/2019, 90.24
14, 01/18/2019, 19.32
];
Wyniki
Załaduj dane i przejdź do tabeli.
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 164.27 |
9 | 01/03/2019 | 384.00 |
10 | 01/06/2019 | 25.82 |
11 | 01/09/2019 | 312.00 |
12 | 01/15/2019 | 4.56 |
13 | 01/16/2019 | 90.24 |
14 | 01/18/2019 | 19.32 |
Zauważysz, że drugi zestaw danych z tabeli Transactions_in_USD został dodany.
Trzeci skrypt ładowania
Ten skrypt ładowania łączy kurs wymiany walut z USD na GBP z tabelą Transactions_in_USD.
Join (Transactions_in_USD)
Load * Inline [
rate
0.7
];
Wyniki
Załaduj dane i przejdź do przeglądarki modelu danych. Wybierz tabelę Transactions_in_USD, aby zobaczyć, że każdy rekord ma pole „rate” o wartości 0,7.
Czwarty skrypt ładowania
Ten skrypt ładowania, wykorzystujący instrukcję LOAD z predykatem Resident, dołączy tabelę Transactions_in_USD do tabeli Transactions po wymianie kwot na USD.
Concatenate (Transactions)
LOAD
id,
date,
amount * rate as amount
Resident Transactions_in_USD;
Wyniki
Załaduj dane i przejdź do tabeli. Zobaczysz nowe pozycje z kwotami w GBP w wierszach od ósmego do czternastego.
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 114.989 |
8 | 01/01/2019 | 164.27 |
9 | 01/03/2019 | 268.80 |
9 | 01/03/2019 | 384.00 |
10 | 01/06/2019 | 18.074 |
10 | 01/06/2019 | 25.82 |
11 | 01/09/2019 | 218.40 |
11 | 01/09/2019 | 312.00 |
12 | 01/15/2019 | 3.192 |
12 | 01/15/2019 | 4.56 |
13 | 01/16/2019 | 63.168 |
13 | 01/16/2019 | 90.24 |
14 | 01/18/2019 | 13.524 |
14 | 01/18/2019 | 19.32 |
Piąty skrypt ładowania
Ten skrypt ładowania usunie duplikaty pozycji z tabeli wyników czwartego skryptu ładowania, pozostawiając tylko pozycje z kwotami w GBP.
drop tables Transactions_in_USD;
Wyniki
Załaduj dane i przejdź do tabeli.
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 114.989 |
9 | 01/03/2019 | 268.80 |
10 | 01/06/2019 | 18.074 |
11 | 01/09/2019 | 218.40 |
12 | 01/15/2019 | 3.192 |
13 | 01/16/2019 | 63.168 |
14 | 01/18/2019 | 13.524 |
Po załadowaniu piątego skryptu ładowania, tabela wyników pokazuje wszystkie czternaście transakcji, które znajdowały się w obu zestawach danych transakcji. Jednak w przypadku transakcji 8-14 nastąpiła wymiana waluty na GBP.
Jeśli usuniemy prefiks NoConcatenate, który został użyty przed Transactions_in_USD w drugim skrypcie ładowania, skrypt spowoduje następujący błąd: „Table 'Transactions_in_USD' not found”. Stałoby się tak, ponieważ tabela Transactions_in_USD zostałaby automatycznie dołączona do oryginalnej tabeli Transactions.