Met het prefix en suffix when maakt u een conditionele clausule waarmee wordt bepaald of een opdracht of exit-clausule wel of niet moet worden uitgevoerd. De opdracht kan worden beschouwd als een compact alternatief voor een volledige if..end if-opdracht.
In Qlik Sense wordt de booleaanse waarde Waar vertegenwoordigd door -1 en de waarde Onwaar door 0.
De statement of de exitstatement wordt alleen uitgevoerd als de voorwaarde resulteert in TRUE.
Het prefix When kan worden gebruikt bij opdrachten die al een of meer andere opdrachten bevatten, inclusief aanvullende prefixen When of Unless.
Wanneer gebruiken
De When-opdracht retourneert een booleaanse waarde. Dit type functie wordt doorgaans gebruikt als een voorwaarde wanneer de gebruiker delen van een script wil laden of uitsluiten.
Argumenten
Argument
Beschrijving
condition
Een logische uitdrukking die resulteert in TRUE of FALSE
statement
Elke Qlik Sense-scriptopdracht behalve besturingsopdrachten.
exitstatement
Een exit for-, exit do- of exit sub-clausule of een exit script-opdracht.
Landinstellingen
Tenzij anders aangegeven, wordt in de voorbeelden in dit onderwerp de volgende datumindeling gebruikt: MM/DD/JJJJ. De datumopmaak wordt opgegeven in de opdracht SET DateFormat in uw script voor het laden van gegevens. De standaard datumindeling is mogelijk anders op uw systeem vanwege landinstellingen en andere factoren. U kunt de indelingen in de voorbeelden wijzigen zodat deze aansluiten op uw behoeften. Of u kunt de indelingen in uw load-script wijzigen zodat ze overeenkomen met deze voorbeelden.
Standaard landinstellingen in apps zijn gebaseerd op de regionale systeeminstellingen van de computer of server waarop Qlik Sense is geïnstalleerd. Als de Qlik Sense-server die u gebruikt is ingesteld op Zweden, gebruikt de editor voor laden van gegevens de Zweedse landinstellingen voor datums, tijd en valuta. Deze landinstellingen voor indelingen zijn niet gerelateerd aan de taal die wordt weergegeven in de gebruikersinterface van Qlik Sense. Qlik Sense wordt weergegeven in dezelfde taal als de browser die u gebruikt.
Voorbeelden van functies
Voorbeeld
Resultaat
exit script when A=1;
Wanneer de uitdrukking A=1 resulteert in TRUE, wordt het script beëindigd.
when A=1 LOAD * from myfile.csv;
Wanneer de uitdrukking A=1 resulteert in TRUE, wordt het bestand myfile.csv geladen.
when A=1 unless B=2 drop table Tab1;
Wanneer de opdracht A=1 resulteert in TRUE en als B=2 resulteert in FALSE, dan wordt de Tab1-tabel verwijderd.
Voorbeeld 1 – When-prefix
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een gegevensset met datums en bedragen die naar de tabel Transactions wordt gestuurd.
De Let-opdracht die aangeeft dat de variabele A is gemaakt en de waarde 1 heeft.
De When-voorwaarde levert de voorwaarde dat als A gelijk is aan 1, het script zal blijven laden.
Load-script
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
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
id
date
amount
Resultatentabel
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
Omdat variabele A is toegewezen aan de waarde 1 aan het begin van het script, wordt de voorwaarde na het When-prefix beoordeeld en wordt het resultaat TRUE geretourneerd. Vanwege het resultaat TRUE, blijft het script de load-instructie uitvoeren. Alle records uit de resultatentabel worden weergegeven.
Als deze variabelewaarde was ingesteld op niet-gelijk aan 1, dan zouden er geen gegevens in het gegevensmodel worden geladen.
Voorbeeld 2 – When-suffix
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Drie gegevenssets met datums en bedragen die naar de tabel Transactions worden gestuurd.
De eerste gegevensset bevat transacties 1-7.
De tweede gegevensset bevat transacties 8-14.
De derde gegevensset bevat transacties 15-21.
Een When-voorwaarde die bepaalt of de tabel Transactions meer dan tien rijen bevat. Als een van de When-opdrachten resulteren in TRUE, wordt het load-script beëindigd. Deze voorwaarde wordt aan het eind van elk van de drie gegevenssets geplaatst.
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
id
date
amount
Resultatentabel
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
Elk van de drie gegevenssets bevat zeven transacties. De eerste gegevensset bevat transacties 1 t/m 7 en wordt in de applicatie geladen. De When-voorwaarde na deze load-instructie resulteert in FALSE omdat er minder dan tien rijen in de Transactions-tabel staan. Het load-script gaat verder naar de volgende gegevensset.
De tweede gegevensset bevat transacties 8 t/m 14 en wordt in de applicatie geladen. De tweede When-voorwaarde resulteert in TRUE omdat er meer dan tien rijen in de Transactions-tabel staan. Daarom wordt het script beëindigd.
Voorbeeld 3 – Meerdere When-prefixes
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een gegevensset met één transactie wordt gemaakt als de tabel Transactions.
Er wordt een For-lus geactiveerd die twee geneste When-voorwaarden bevat die resulteren in een van de volgende opties:
Er staan minder dan 100 records in de Transactions-tabel.
Het aantal records in de Transactions-tabel is geen veelvoud van 6.
Load-script
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
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:
id
De resultatentabel toont alleen de eerste vijf transactie-id's, maar het load-script maakt 36 rijen en wordt vervolgens beëindigd zodra aan de When-voorwaarde is voldaan.
Resultatentabel
id
0
1
2
3
4
5
Nog 30 rijen
De geneste When-voorwaarden in de For-lus resulteren in de volgende vragen:
Staan er minder dan 100 rijen in de Transactions-tabel?
Is het totale aantal records in de Transactions-tabel geen veelvoud van 6?
Wanneer beide When-voorwaarden een waarde van TRUE retourneren, worden er nog eens zeven records gegenereerd en aaneengeschakeld met de bestaande Transactions-tabel.
De When-voorwaarden retourneren vijf keer de waarde TRUE. Als dat gebeurt, zijn er in totaal 36 rijen gegevens in de Transactions-tabel.
Wanneer 36 rijen gegevens worden gemaakt in de Transactions-tabel, retourneert de tweede When-opdracht de waarde FALSE en wordt de load-instructie hierna niet meer uitgevoerd.
Was deze pagina nuttig?
Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!