Der Zusatz unless definiert eine Bedingung für die Evaluierung eines Befehls bzw. eines exit-Befehls. Es kann somit als Kurzform des vollständigen Befehls if..end if betrachtet werden.
statement oder exitstatement wird nur ausgeführt, wenn conditionFalse ergibt.
Der Zusatz unless kann auch für Befehle verwendet werden, die bereits einen oder mehrere andere Befehle aufweisen, einschließlich zusätzlicher when- oder unless-Zusätze.
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.
Verwendung
Der Befehl Unless gibt einen booleschen Wert zurück. In der Regel wird diese Art Funktion als Bedingung verwendet, wenn der Benutzer Teile des Skripts bedingt laden oder ausschließen möchte.
Die folgenden Zeilen zeigen drei Beispiele, wie die Funktion Unless verwendet werden kann:
exit script
unless A=1;
unless A=1
LOAD * from myfile.csv;
unless A=1
when B=2 drop table Tab1;
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.
Beispiel 1 – Präfix „unless“
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
Erstellung einer Variable A, die einen Wert von 1 erhält
Datensatz, der in eine Tabelle namens „Transactions“ geladen wird, es sei denn die Variable A = 2
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
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
Da der Variablen A am Beginn des Skripts der Wert von 1 zugewiesen ist, wird die Bedingung nach dem Präfix Unless ausgewertet und gibt ein Ergebnis von FALSE zurück. Infolgedessen führt das Skript den Befehl Load weiter aus. In der Ergebnistabelle werden alle Einträge aus der Tabelle Transactions angezeigt.
Wenn dieser Variablenwert auf 2 festgelegt wird, werden keine Daten in das Datenmodell geladen.
Beispiel 2 – Suffix „unless“
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript startet damit, dass ein anfänglicher Datensatz in eine Tabelle namens Transactions geladen wird. Das Skript wird dann beendet, es sei denn, es sind weniger als 10 Einträge in der Tabelle Transactions vorhanden.
Wenn diese Bedingung nicht zu einer Beendigung des Skripts führt, wird eine weitere Reihe von Transaktionen in der Tabelle Transactions zusammengeführt, und dieser Prozess wird wiederholt.
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
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
Es gibt sieben Einträge in jedem der drei Datensätze des Ladeskripts.
Der erste Datensatz (mit Transaktions-id 1 bis 7) wird in die Anwendung geladen. Die Bedingung Unless wertet aus, ob weniger als 10 Zeilen in der Tabelle Transactions vorhanden sind. Sie wird zu TRUE ausgewertet, und daher wird der zweite Datensatz (mit Transaktions-id 8 bis 14) in die Anwendung geladen. Die zweite Bedingung Unless wertet aus, ob weniger als 10 Einträge in der Tabelle Transactions vorhanden sind. Die Auswertung ergibt FALSE, und damit endet das Skript.
Beispiel 3 – Mehrere Präfixe „unless“
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
In diesem Beispiel wird ein Datensatz, der eine Transaktion enthält, als Tabelle namens Transactions erstellt. Dann wird eine „for“-Schleife ausgelöst, in der zwei verschachtelte „unless“-Befehle Folgendes auswerten:
Es sei denn, in der Tabelle Transactions sind mehr als 100 Einträge vorhanden
Es sei denn, die Anzahl der Einträge in der Tabelle Transactions ist ein Vielfaches von 6
Wenn diese Bedingungen FALSE sind, werden weitere sieben Einträge generiert und in der vorhandenen Tabelle Transactions zusammengeführt. Dieser Vorgang wird wiederholt, bis eine der zwei Transaktionen einen Wert von TRUE zurückgibt.
Ladeskript
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
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.
Ergebnistabelle
id
0
1
2
3
4
5
+30 weitere Zeilen
Die verschachtelten „unless“-Befehle, die in der „for“-Schleife vorhanden sind, werden wie folgt ausgewertet:
Sind mehr als 100 Zeilen in der Tabelle Transactions vorhanden?
Ist die Anzahl der Einträge in der Tabelle Transactions ein Vielfaches von 6?
Immer, wenn beide „unless“-Befehle einen Wert von FALSE zurückgeben, werden weitere sieben Einträge generiert und in der vorhandenen Tabelle Transactions zusammengeführt.
Diese Befehle geben fünf Mal einen Wert von FALSE zurück. An dieser Stelle befinden sich insgesamt 36 Datenzeilen in der Tabelle Transactions.
Danach gib der zweite Unless-Befehl einen Wert von TRUE 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!