Der Zusatz when definiert eine Bedingung für die Ausführung eines Befehls bzw. eines exit-Befehls. Es kann somit als Kurzform des vollständigen Befehls if..end if betrachtet werden.
In Qlik Sense wird der boolesche Wert „wahr“ durch -1 dargestellt, der Wert „falsch“ durch 0.
statement oder exitstatement wird nur ausgeführt, wenn die Bedingung TRUE ergibt.
Der Zusatz When kann auch für Befehle verwendet werden, die bereits einen oder mehrere andere Befehle aufweisen, einschließlich zusätzlicher When- oder Unless-Zusätze.
Verwendung
Der Befehl When gibt einen booleschen Wert zurück. In der Regel wird diese Art Funktion als Bedingung verwendet, wenn der Benutzer Teile des Skripts laden oder ausschließen möchte.
Argumente
Argument
Beschreibung
condition
Eine logische Formel, die TRUE oder FALSE ergibt.
statement
Ein beliebiger Qlik Sense-Skriptbefehl mit Ausnahme von Steuerungsbefehlen.
exitstatement
Eine exit for-, exit do- oder exit sub-Bedingung oder ein exit script-Befehl.
Regionaleinstellungen
Sofern nicht anders angegeben, verwenden die Beispiele in diesem Thema das folgende Datumsformat: MM/TT/JJJJ. Das Datumsformat wird in der Anweisung SET DateFormat in Ihrem Datenladeskript angegeben. Das Standarddatumsformat in Ihrem System kann aufgrund Ihrer regionalen Einstellungen und anderer Faktoren abweichen. Sie können die Formate in den Beispielen unten Ihren Anforderungen entsprechend ändern. Sie können auch die Formate in Ihrem Ladeskript entsprechend den Beispielen ändern.
Die standardmäßigen regionalen Einstellungen in Apps basieren auf den regionalen Systemeinstellungen der Computer oder Server, auf denen Qlik Sense installiert ist. Wenn der Qlik Sense-Server, auf den Sie zugreifen, auf Schweden festgelegt ist, verwendet der Dateneditor die schwedischen regionalen Einstellungen für Datums-, Uhrzeit- und Währungsangaben. Diese Einstellungen im regionalen Format hängen nicht mit der Sprache zusammen, die in der Benutzeroberfläche von Qlik Sense angezeigt wird. Qlik Sense wird in der gleichen Sprache wie der von Ihnen verwendete Browser angezeigt.
Funktionsbeispiele
Beispiel
Ergebnis
exit script when A=1;
Wenn der Befehl A=1 als TRUE ausgewertet wird, hält das Skript an.
when A=1 LOAD * from myfile.csv;
Wenn der Befehl A=1 als TRUE ausgewertet wird, wird die Datei myfile.csv geladen.
when A=1 unless B=2 drop table Tab1;
Wenn der Befehl A=1 als TRUE und B=2 als FALSE ausgewertet wird, wird die Tabelle Tab1 verworfen.
Beispiel 1 – Präfix „when“
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Ein Datensatz mit Datumswerten und Beträgen wird an eine Tabelle namens „Transactions“ gesendet.
Der Befehl Let gibt an, dass die Variable A erstellt wird und den Wert 1 hat.
Die Bedingung When gibt an, dass das Skript weiter geladen wird, wenn A dem Wert 1 entspricht.
Ladeskript
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
];
Ergebnisse
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
id
date
amount
Ergebnistabelle
ID
Datum
Betrag
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
Da der Variablen A am Beginn des Skripts der Wert von 1 zugewiesen ist, wird die Bedingung nach dem Präfix When ausgewertet und gibt ein Ergebnis von TRUE zurück. Da ein Ergebnis von TRUE zurückgegeben wird, führt das Skript die load-Anweisung weiter aus. In der Ergebnistabelle werden alle Einträge angezeigt.
Wenn dieser Variablenwert auf einen beliebigen Wert ungleich 1 festgelegt wird, werden keine Daten in das Datenmodell geladen.
Beispiel 2 – Suffix „When“
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Drei Datensätze mit Datumswerten und Beträgen werden an eine Tabelle namens „Transactions“ gesendet.
Der erste Datensatz enthält die Transaktionen 1-7.
Der zweite Datensatz enthält die Transaktionen 8-14.
Der dritte Datensatz enthält die Transaktionen 15-21.
Eine When-Bedingung entscheidet, ob die Tabelle „Transactions“ mehr als zehn Zeilen enthält. Wenn einer der Befehle When als TRUE ausgewertet wird, hält das Ladeskript an. Diese Bedingung wird am Ende jedes der drei Datensätze platziert.
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:
id
date
amount
Ergebnistabelle
ID
Datum
Betrag
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
In jedem der drei Datensätze befinden sich sieben Transaktionen. Der erste Datensatz mit den Transaktionen 1 bis 7 wird in die Anwendung geladen. Die When-Bedingung nach dieser load-Anweisung wird als FALSE ausgewertet, weil die Tabelle „Transactions“ weniger als zehn Zeilen enthält. Das Ladeskript fährt mit dem nächsten Datensatz fort.
Der zweite Datensatz mit den Transaktionen 8-14 wird in die Anwendung geladen. Die zweite When-Bedingung wird als TRUE ausgewertet, weil mehr als zehn Zeilen in der Tabelle „Transactions“ enthalten sind. Daher wird das Skript beendet.
Beispiel 3 – Mehrere Präfixe „When“
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Ein Datensatz, der eine einzelne Transaktion enthält, wird als Tabelle namens „Transactions“ erstellt.
Eine For-Schleife wird ausgelöst, die zwei verschachtelte When-Bedingungen enthält. Diese werten aus, ob:
weniger als 100 Einträge in der Tabelle „Transactions“ vorhanden sind.
die Anzahl der Einträge in der Tabelle „Transactions“ kein Vielfaches von 6 sind.
Ladeskript
RowsCheck = NoOfRows('Transactions') < 100 or mod(NoOfRows('Transactions'),6) <> 0;
Transactions:
Load
0 as id
Autogenerate 1;
For i = 1 to 100
when(RowsCheck)
Concatenate
Load
if(isnull(Peek(id)),1,peek(id)+1) as id
Autogenerate 7;
next i
Ergebnisse
Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie dieses Feld als Dimension hinzu:
id
Die Ergebnistabelle zeigt nur die ersten fünf Transaktions-IDs, aber das Ladeskript erstellt 36 Zeilen und endet, nachdem die When-Bedingung erfüllt ist.
Ergebnistabelle
ID
0
1
2
3
4
5
+30 weitere Zeilen
Die verschachtelten When-Bedingungen in der For-Schleife werten die folgenden Fragen aus:
Sind weniger als 100 Zeilen in der Tabelle „Transactions“ vorhanden?
Ist die Gesamtzahl der Einträge in der Tabelle „Transactions“ ein Vielfaches von 6?
Immer, wenn beide When-Bedingungen einen Wert von TRUE zurückgeben, werden weitere sieben Einträge generiert und in der vorhandenen Tabelle „Transactions“ zusammengeführt.
Die When-Bedingungen geben fünf Mal einen Wert von TRUE zurück. An dieser Stelle befinden sich insgesamt 36 Datenzeilen in der Tabelle „Transactions“.
Nachdem 36 Datenzeilen in der Tabelle „Transactions“ erstellt wurden, gibt der zweite When-Befehl einen Wert von FALSE zurück, und daher wird die load-Anweisung danach nicht mehr ausgeführt.
Hat diese Seite Ihnen geholfen?
Wenn Sie Probleme mit dieser Seite oder ihren Inhalten feststellen – einen Tippfehler, einen fehlenden Schritt oder einen technischen Fehler –, teilen Sie uns bitte mit, wie wir uns verbessern können!