Met het prefix en suffix unless maakt u een conditionele clausule waarmee wordt bepaald of een opdracht of exit-clausule wel of niet moet worden geëvalueerd. De opdracht kan worden beschouwd als een compact alternatief voor een volledige if..end if-opdracht.
De statement of de exitstatement wordt alleen uitgevoerd als de condition resulteert in False.
Het prefix unless kan worden gebruikt bij opdrachten die al een of meer andere opdrachten bevatten, inclusief aanvullende prefixen when of unless.
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.
Wanneer gebruiken
De Unless-opdracht retourneert een booleaanse waarde. Dit type functie wordt doorgaans gebruikt als een voorwaarde wanneer de gebruiker delen van het script voorwaardelijk wil laden of uitsluiten.
De volgende regels tonen drie voorbeelden van hoe de Unless-functie kan worden gebruikt:
exit script
unless A=1;
unless A=1
LOAD * from myfile.csv;
unless A=1
when B=2 drop table Tab1;
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.
Voorbeeld 1 – Unless-prefix
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Het maken van variabele A, met een waarde van 1.
Een gegevensset die in de tabel Transacties wordt geladen, tenzij de variabele A = 2.
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 Unless-prefix beoordeeld en wordt het resultaat FALSE geretourneerd. Het resultaat is dat het script de Load-opdracht blijft uitvoeren. In de resultatentabel worden alle records uit de Transactions-tabel weergegeven.
Als deze variabelewaarde is ingesteld op gelijk aan 2, dan worden er geen gegevens in het gegevensmodel geladen.
Voorbeeld 2 – Unless-suffix
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script begint met het laden van een eerste gegevensset in de tabel Transactions. Het script wordt vervolgens beëindigd tenzij er minder dan 10 records in de Transactions-tabel staan.
Als deze voorwaarde niet resulteert in de beëindiging van het script, wordt er nog een set met transacties aaneengeschakeld in de Transactions-tabel en wordt dit proces herhaald.
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
Er zijn zeven records in elk van de drie gegevenssets van het load-script.
De eerste gegevensset (met transactie id 1 t/m 7) wordt in de applicatie geladen. De voorwaarde Unless controleert of er minder dan 10 rijen in de tabel Transactions staan. Dit resulteert in TRUE en daarom wordt de tweede gegevensset (met transactie id 8 t/m 14) in de applicatie geladen. De tweede voorwaarde Unless controleert of er minder dan 10 records in de tabel Transactions staan. Dit resulteert in FALSE en dus wordt het script beëindigd.
Voorbeeld 3 – Meerdere Unless-prefixes
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
In dit voorbeeld wordt een gegevensset met één transactie gemaakt als de tabel Transactions. Er wordt een for-lus geactiveerd waarin twee geneste unless-opdrachten het volgende controleren:
Tenzij (unless) er meer dan 100 records in de Transactions-tabel staan
Tenzij (unless) het aantal records in de Transactions-tabel een veelvoud is van 6
Als deze voorwaarden FALSE zijn, worden er nog eens zeven records gegenereerd en aaneengeschakeld met de bestaande Transactions-tabel. Dit proces wordt herhaald tot een van de twee transacties de waarde TRUE retourneert.
Load-script
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
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:id.
Resultatentabel
id
0
1
2
3
4
5
Nog 30 rijen
De geneste unless-opdrachten die optreden in de for-lus controleren het volgende:
Staan er meer dan 100 rijen in de Transactions-tabel?
Is het totale aantal records in de Transactions-tabel een veelvoud van 6?
Wanneer beide unless-opdrachten een waarde van FALSE retourneren, worden er nog eens zeven records gegenereerd en aaneengeschakeld met de bestaande Transactions-tabel.
Deze opdrachten retourneren vijf keer een waarde van FALSE waarna er in totaal 36 rijen gegevens in de Transactions-tabel staan.
Hierna retourneert de tweede Unless-opdracht een waarde van TRUE. Daarom 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!