Prefixet eller suffixet unless används för att skapa en villkorssats, som bestämmer om en sats eller ett exit-tillägg ska utvärderas eller ej. Det kan ses som ett kompakt alternativ till en fullständig if..end if-sats.
statement eller exitstatement exekveras bara om condition utvärderas till False.
Prefixet unless får användas även om satsen redan har en eller flera andra satser, inklusive ytterligare when- eller unless-prefix.
Argument
Argument
Beskrivning
condition
Ett logiskt uttryck som utvärderas till True eller False.
statement
Alla Qlik Sense-skriptsatser utom kontrollsatser.
exitstatement
Ett exit for-, exit do- eller exit sub-tillägg eller en exit script-sats.
Användning
Satsen Unless returnerar ett booleskt resultat. Den här typen av funktion används typiskt som ett villkor när användaren vill ladda eller utesluta delar av skriptet beroende på vissa villkor.
I följande rader visas tre exempel på hur Unless-funktionen kan användas:
exit script
unless A=1;
unless A=1
LOAD * from myfile.csv;
unless A=1
when B=2 drop table Tab1;
Lokala inställningar
Om inget annat anges använder exemplen i detta ämne följande datumformat: MM/DD/ÅÅÅÅ. Datumformatet anges i SET DateFormat-satsen i datainläsningsskriptet. Förvald datumformatering kan vara annorlunda i ditt system, på grund av dina regionala inställningar och andra faktorer. Du kan ändra formaten i exemplen nedan så att det passar dina krav. Eller så kan du ändra formaten i ditt laddningsskript så att de matchar dessa exempel. Mer information finns i Ändra regioninställningar för appar och skript.
Regionala standardinställningar i appar baseras på användarprofilen. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Cloud användargränssnittet. Qlik Cloud kommer att visas på samma språk som webbläsaren du använder.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
id
date
amount
Resultattabell
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
Eftersom variabel A tilldelas värdet 1 när skriptet startar kommer villkoret som följer efter prefix Unless att utvärderas, vilket returnerar resultatetFALSE. Som resultat fortsätter skriptet att köra Load-satsen. I den här resultattabellen visas alla poster från Transactions-tabellen.
Om den här variabelns värde har satts till 2 kommer inga data att laddas till datamodellen.
Exempel 2 – unless-prefix
Översikt
Öppna skriptredigeraren och lägg till laddningsskriptet nedan i en ny flik.
Laddningsskriptet startas genom att en initial datauppsättning laddas till en tabell som heter Transactions. Skriptet avslutas därefter såvida det inte finns färre än 10 poster i Transactions-tabellen.
Om det här villkoret inte resulterar till att skriptet avslutas konkateneras ytterligare en uppsättning transaktioner till Transactions-tabellen och den här processen upprepas.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
id
date
amount
Resultattabell
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
Det finns sju poster i vart och ett av de tre datauppsättningarna i laddningsskriptet.
Den första datauppsättningen (med id-transaktion 1–7) laddas till applikationen. Unless-villkoret utvärderar om det finns färre än 10 rader i Transactions-tabellen. Detta utvärderas till TRUE och därför laddas den andra uppsättningen (med id-transaktion 8–14) laddas till programmet. Det andra Unless-villkoret utvärderar om det finns färre än 10 poster i Transactions-tabellen. Det här utvärderas till FALSE. Skriptet avslutas.
Exempel 3 – flera unless-prefix
Översikt
Öppna skriptredigeraren och lägg till laddningsskriptet nedan i en ny flik.
I det här exemplet skapas en datauppsättning som innehåller en transaktion som en tabell som heter Transactions. Därefter utlöses en "for"-slinga, där två nästlade unless-satser utvärderas:
Såvida inte det finns mer än 100 poster i Transactions-tabellen
Såvida inte antalet poster i Transactions-tabellen är en multipel av 6
Om de här villkoren är FALSE genereras ytterligare sju poster som konkateneras till den befintliga Transactions-tabellen. Den här processen upprepas tills en eller två transaktioner returnerar ett värde på TRUE.
Laddningsskript
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
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:id.
Resultattabell
id
0
1
2
3
4
5
ytterligare 30+ rader
De nästlade unless-satserna som finns i "for"-slingan utvärderas till följande:
Finns det fler än 100 rader i Transactions-tabellen?
Är det totala antalet poster i Transactions-tabellen en multipel av 6?
När båda unless-satserna returnerar värdet FALSE genereras ytterligare sju poster som konkateneras till den befintliga Transactions-tabellen.
De här satserna returnerar ett värde på FALSE fem gånger. Det finns då totalt 36 rader med data i Transactions-tabellen.
Därefter returnerar den andra Unless-satsen värdet TRUE, och därför kommer den efterföljande load-satsen inte längre att exekveras.
Var den här sidan till hjälp för dig?
Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!