Prefixet eller suffixet when används för att skapa en villkorssats, som bestämmer om en sats eller ett exit-tillägg ska exekveras eller ej. Det kan ses som ett kompakt alternativ till en fullständig if..end if-sats.
I Qlik Sense, representeras det booleska sanna värdet av -1, och det falska värdet representeras av 0.
statement eller exitstatement exekveras bara om villkoret utvärderas till TRUE.
Prefixet When får användas även om satsen redan har en eller flera andra satser, inklusive ytterligare When- eller Unless-prefix.
Användning
Satsen When 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.
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.
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.
Standardregionalinställningar i appar baseras på de regionala systeminställningarna för datorn eller servern där Qlik Sense är installerad. Om Qlik Sense-servern du ansluter till är inställd på Sverige så kommer skriptredigeraren använda regionala inställningar för Sverige för datum, tid och valuta. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Sense användargränssnittet. Qlik Sense kommer att visas på samma språk som webbläsaren du använder.
Exempel på funktioner
Exempel
Resultat
exit script when A=1;
När satsen A=1 utvärderas till TRUE stannar skriptet.
when A=1 LOAD * from myfile.csv;
När satsen A=1 utvärderas till TRUE körs myfile.csv.
when A=1 unless B=2 drop table Tab1;
När satsen A=1 utvärderas till TRUE och om B=2 utvärderas till FALSE kommer Tab1-tabellen att släppas.
Exempel 1 – when-prefix
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning med datum och belopp som skickas till en tabell som heter Transactions.
Let-satsen som anger att variabeln A skapas och har värdet 1.
When-villkoret som tillhandahåller villkoret att om A är lika med 1 kommer skriptet att fortsätta att laddas.
Laddningsskript
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
];
Resultat
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 When utvärderas, vilket returnerar resultatet TRUE. Eftersom den returnerar resultatet TRUE kommer skriptet att fortsätta att köra laddningssatsen. Alla poster från resultattabellen visas.
Om den här variabelns värde har satts till något värde som inte är 1 kommer inga data att laddas till datamodellen.
Exempel 2 – when-prefix
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
Tre datauppsättningar med datum och belopp som skickas till en tabell som heter Transactions.
Den första datauppsättningen innehåller transaktionerna 1–7.
Den första datauppsättningen innehåller transaktionerna 8–14.
Den första datauppsättningen innehåller transaktionerna 15–21.
Ett When-villkor som avgör om Transactions-tabellen innehåller fler än tio rader. Om någon av When-satserna utvärderas till TRUE stannar skriptet. Villkoret placeras på slutet av var och en av de tre datauppsättningarna.
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 transaktioner i var och en av de tre datauppsättningarna. Den första datauppsättningen innehåller transaktion 1–7 och laddas till applikationen. When-villkoret som följer efter denna laddningssats utvärderas som FALSE eftersom det finns färre än tio rader i Transactions-tabellen. Laddningsskriptet fortsätter till nästa datauppsättning.
Den andra datauppsättningen innehåller transaktion 8–14 och laddas till applikationen. Det andra When-villkoret utvärderas som TRUE eftersom det finns fler än tio rader i Transactions-tabellen. Därför avslutas skriptet.
Exempel 3 – flera when-prefix
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning som innehåller en enda transaktion skaps som en tabell som heter Transactions.
En For-slinga som utlöses innehåller två nästlade When-villkor som utvärderar huruvida:
Det finns färre än 100 poster i Transactions-tabellen.
Antalet poster i Transactions-tabellen är inte en multipel av 6.
Laddningsskript
Transactions:
Load
0 as id
Autogenerate 1;
For i = 1 to 100
when NoOfRows('Transactions') < 100 when 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
I resultattabellen visas bara de fem första transaktions-ID, men laddningsskriptet skapar 36 rader och avslutas sedan när When-villkoret är uppfyllt.
Resultattabell
id
0
1
2
3
4
5
ytterligare 30+ rader
De nästlade When-villkoren i For-loopen utvärderar följande frågor:
Finns det färre än 100 rader i Transactions-tabellen?
Är det totala antalet poster i Transactions-tabellen inte en multipel av sex?
När båda When-villkoren returnerar värdet TRUE genereras ytterligare sju poster som konkateneras till den befintliga Transactions-tabellen.
When-villkoren returnerar ett TRUE-värde fem gånger. Det finns nu 36 rader med data i Transactions-tabellen.
När 36 rader med data har skapats i Transactions-tabellen returnerar den andra When-satsen värdet FALSE, 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!