Prefiks i sufiks when jest używany do tworzenia klauzuli warunkowej określającej, czy dana instrukcja lub klauzula wyjściowa ma być wykonywana czy też nie. Mogą być one traktowane jako wygodna alternatywa pełnej instrukcji if..end if.
W Qlik Sense wartość logiczna Prawda jest reprezentowana przez -1, a wartość Fałsz jest reprezentowana przez 0.
Instrukcja statement lub exitstatement zostanie wykonana tylko wtedy, gdy warunek przyjmie wartość TRUE.
Prefiks When może być używany do instrukcji, które już składają się z jednej lub wielu innych instrukcji, włącznie z dodatkowymi prefiksami When lub Unless.
Kiedy używać
Instrukcja When zwraca wynik logiczny. Normalnie tego typu funkcje są używane jako warunek, gdy użytkownik chce załadować lub wykluczyć wybrane części skryptu.
Argumenty
Argument
Opis
condition
Wyrażenie logiczne zwracające wartość TRUE lub FALSE
statement
Dowolna instrukcja skryptu aplikacji Qlik Sense poza instrukcjami sterowania.
exitstatement
Klauzula exit for, exit do lub exit sub albo instrukcja exit script.
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. Więcej informacji można znaleźć w temacie Modyfikowanie ustawień regionalnych na potrzeby aplikacji i skryptów.
Domyślne ustawienia regionalne w aplikacjach są oparte na profilu użytkownika. Te ustawienia regionalne nie są związane z językiem wyświetlanym w interfejsie użytkownika Qlik Cloud. Interfejs Qlik Cloud będzie wyświetlany w tym samym języku co używana przeglądarka.
Kiedy instrukcja A=1 zwraca wartość TRUE, następuje zakończenie wykonywania skryptu.
when A=1 LOAD * from myfile.csv;
Kiedy instrukcja A=1 zwraca wartość TRUE, następuje załadowanie pliku myfile.csv.
when A=1 unless B=2 drop table Tab1;
Kiedy instrukcja A=1 zwraca wartość TRUE, a B=2 zwraca FALSE, następuje usunięcie tabeli Tab1.
Przykład 1 – Prefiks When
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Zestaw danych zawierający daty i kwoty, który został wysłany do tabeli o nazwie Transactions.
Instrukcja Let, która oświadcza, że zmienna A jest utworzona i ma wartość 1.
Warunek When według którego, jeśli A równa się 1, to skrypt ma kontynuować ładowanie.
Skrypt ładowania
LET A = 1;
WHEN A = 1
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
Tabela wynikowa
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
Ponieważ na początku skryptu zmiennej A została przypisana wartość 1, następuje sprawdzenie warunku znajdującego się za prefiksem When, czego wynikiem jest wartość logiczna TRUE. Ponieważ zostaje zwrócona wartość TRUE, skrypt kontynuuje wykonywanie instrukcji ładowania. Widać wszystkie rekordy z tabeli wyników.
Jeśli wartość tej zmiennej zostanie ustawiona na wartość różną od 1, do modelu danych nie zostaną załadowane żadne dane.
Przykład 2 – sufiks When
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Trzy zestawy danych zawierające daty i kwoty, które zostały wysłany do tabeli o nazwie Transactions.
Pierwszy zestaw zawiera transakcje 1-7.
Pierwszy zestaw zawiera transakcje 8-14.
Pierwszy zestaw zawiera transakcje 15-21.
Warunek When, który określa, czy tabela Transactions zawiera więcej niż dziesięć wierszy. Jeśli którakolwiek z instrukcji When zwraca wartość TRUE, następuje zakończenie wykonywania skryptu ładowania. Ten warunek został umieszczony na końcu każdego z trzech zestawów danych.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
id
date
amount
Tabela wynikowa
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
W każdym z trzech zestawów danych znajduje się siedem transakcji. Pierwszy zestaw danych zawiera transakcje 1-7 i zostaje załadowany do aplikacji. Warunek When znajdujący się za tą instrukcją ładowania zwraca wartość FALSE, ponieważ w tabeli Transactions znajduje się mniej niż dziesięć wierszy. Skrypt ładowania przechodzi do następnego zestawu danych.
Drugi zestaw danych zawiera transakcje 8-14 i zostaje załadowany do aplikacji. Drugi warunek When zwraca wartość TRUE, ponieważ w tabeli Transactions znajduje się więcej niż dziesięć wierszy. W efekcie skrypt kończy działanie.
Przykład 3 – Kilka prefiksów When
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Został utworzony zestaw danych zawierający jedną transakcję w postaci tabeli o nazwie Transactions.
Pętla For zawiera dwa zagnieżdżone warunki When, które sprawdzają, czy:
W tabeli Transactions jest mniej niż 100 rekordów.
Liczba rekordów w tabeli Transactions jest wielokrotnością liczby 6.
Skrypt ładowania
RowsCheck = NoOfRows('Transactions') < 100 or mod(NoOfRows('Transactions'),6) <> 0;
Transactions:
Load
0 as id
Autogenerate 1;
For i = 1 to 100
when(RowsCheck)
Concatenate
Load
if(isnull(Peek(id)),1,peek(id)+1) as id
Autogenerate 7;
next i
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:
id
Tabela wyników pokazuje tylko pięć pierwszych identyfikatorów transakcji, ale skrypt ładowania tworzy 36 wierszy, po czym kończy działanie, gdy zostaje spełniony warunek When.
Tabela wynikowa
id
0
1
2
3
4
5
Jeszcze 30 wierszy
Zagnieżdżone warunki When w pętli For dają odpowiedzi na następujące pytania:
Czy w tabeli Transactions znajduje się mniej niż 100 wierszy?
Czy suma rekordów w tabeli Transactions nie jest wielokrotnością liczby 6?
Jeśli oba warunki When zwracają wartość TRUE, następuje wygenerowanie siedmiu kolejnych rekordów, które zostają dołączone do istniejącej tabeli Transactions.
Warunki When zwracają wartość TRUE pięć razy. W tym momencie w tabeli Transactions znajduje się 36 wierszy danych.
Kiedy w tabeli Transactions jest 36 wierszy danych, druga instrukcja When zwraca wartość FALSE, przez co znajdująca się za nią instrukcja ładowania nie zostaje wykonana.
Czy ta strona była pomocna?
Jeżeli natkniesz się na problemy z tą stroną lub jej zawartością — literówkę, brakujący krok lub błąd techniczny — daj nam znać, co możemy poprawić!