Prefiks i sufiks unless jest używany do tworzenia klauzuli warunkowej określającej, czy dana instrukcja lub klauzula wyjściowa ma być sprawdzana czy też nie. Mogą być one traktowane jako wygodna alternatywa pełnej instrukcji if..end if.
Instrukcja statement lub exitstatement zostanie wykonana tylko wtedy, gdy condition przyjmie wartość False.
Prefiks unless 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.
Argumenty
Argument
Opis
condition
Wyrażenie logiczne, którego ocena zwraca 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.
Kiedy używać
Instrukcja Unless zwraca wynik logiczny. Normalnie tego typu funkcje są używane jako warunek, gdy użytkownik chce warunkowo załadować lub wykluczyć wybrane części skryptu.
Trzy poniższe wiersze pokazują różne możliwości użycia funkcji Unless:
exit script
unless A=1;
unless A=1
LOAD * from myfile.csv;
unless A=1
when B=2 drop table Tab1;
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.
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 Unless, czego wynikiem jest wartość logiczna FALSE. W efekcie skrypt kontynuuje wykonywanie instrukcji Load. W tabeli wyników widać wszystkie rekordy z tabeli Transactions.
Jeśli wartość tej zmiennej zostanie ustawiona na 2, do modelu danych nie zostaną załadowane żadne dane.
Przykład 2 – Sufiks Unless
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zaczyna od załadowania początkowego zestawu danych do tabeli o nazwie Transactions. Następnie skrypt zostaje zamknięty, chyba że w tabeli Transactions jest mniej niż dziesięć rekordów.
Jeśli ten warunek nie spowoduje zamknięcia skryptu, do tabeli Transactions zostaje dołączony dalszy zestaw transakcji i proces zostaje powtórzony.
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 skryptu ładowania znajduje się siedem rekordów.
Pierwszy zestaw danych (z id transakcji od 1 do 7) zostaje załadowany do aplikacji. Warunek Unless sprawdza, czy w tabeli Transactions znajduje się mniej niż 10 wierszy. Zostaje zwrócona wartość TRUE, więc do aplikacji zostaje załadowany drugi zestaw danych (z transakcjami o id od 8 do 14). Drugi warunek Unless sprawdza, czy w tabeli Transactions znajduje się mniej niż 10 rekordów. Zostaje zwrócona wartość FALSE, więc skrypt kończy działanie.
Przykład 3 – Kilka prefiksów Unless
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
W tym przykładzie jest tworzony zestaw danych w formie tabeli o nazwie Transactions zawierającej jedną transakcję. Następnie zostaje wykonana pętla „for” zawierająca dwie zagnieżdżone instrukcje Unless, które sprawdzają następujące warunki:
Czy w tabeli Transactions znajduje się więcej niż 100 rekordów
Czy liczba rekordów w tabeli Transactions jest wielokrotnością liczby 6
Jeśli te warunki nie są spełnione (FALSE), następuje wygenerowanie siedmiu kolejnych rekordów, które zostają dołączone do istniejącej tabeli Transactions. Ten proces jest powtarzany aż jedna z dwóch transakcji zwróci wartość TRUE.
Skrypt ładowania
Transactions:
Load
0 as id
Autogenerate 1;
For i = 1 to 100
unless NoOfRows('Transactions') > 100 unless mod(NoOfRows('Transactions'),6) = 0
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 wynikowa
id
0
1
2
3
4
5
Jeszcze 30 wierszy
Instrukcje Unless zagnieżdżone w pętli „for” sprawdzają następujące warunki:
Czy w tabeli Transactions znajduje się więcej niż 100 wierszy?
Czy suma rekordów w tabeli Transactions jest wielokrotnością liczby 6?
Jeśli obie instrukcje Unless zwracają wartość FALSE, następuje wygenerowanie siedmiu kolejnych rekordów, które zostają dołączone do istniejącej tabeli Transactions.
Instrukcje te zwracają wartość FALSE pięć razy, po czym liczba wierszy w tabeli Transactions wynosi 36.
W tym momencie druga instrukcja Unless zwraca wartość TRUE, 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ć!