Exists - Skriptfunktion
Exists() bestimmt, ob ein spezifischer Feldwert bereits in das Feld im Ladeskript geladen wurde. Die Funktion gibt TRUE oder FALSE zurück und kann deshalb in der where-Bedingung eines LOAD-Befehls oder einer IF-Funktion verwendet werden.
Syntax:
Exists(field_name [, expr] )
Rückgabedatentyp: Boolesch
Argumente:
Argument | Beschreibung |
---|---|
field_name |
Der Name des Felds, in dem Sie nach einem Wert suchen möchten. Sie können einen expliziten Feldnamen ohne Anführungszeichen verwenden. Das Feld muss bereits vom Skript geladen worden sein. Das bedeutet, dass Sie nicht auf ein Feld verweisen können, das mit einer Bedingung an späterer Stelle im Skript geladen wird. |
expr |
Der Wert, dessen Vorhandensein Sie prüfen möchten. Sie können einen expliziten Wert oder eine Formel verwenden, die auf ein oder mehrere Felder in der aktuellen load-Anweisung verweist. InformationshinweisSie können nicht auf Felder verweisen, die nicht in der aktuellen load-Anweisung enthalten sind.
Dieses Argument ist optional. Wenn Sie es auslassen, prüft die Funktion, ob der Wert von field_name in dem aktuellen Datensatz bereits vorhanden ist. |
Beispiel 1:
Exists (Employee)
Liefert -1 (True), wenn der Feldwert Employee im aktuellen Datensatz bereits in einem anderen Datensatz in diesem Feld vorkommt.
Beispiel 2:
Exists(Employee, 'Bill')
Liefert -1 (True), wenn der Feldwert 'Bill' im aktuellen Inhalt von Feld Employee gefunden wird.
Die Befehle Exists (Employee, Employee) und Exists (Employee) sind gleichwertig.
Beispiel 3:
Dies liefert im Datenmodell eine Tabelle Citizens, die als Tabellendiagramm mithilfe der Dimensionen Employee und Address angezeigt werden kann.
Die Bedingung where: where Exists (Employee) bedeutet, dass nur Namen aus der Tabelle Citizens, die sich auch in Employees befinden, in die neue Tabelle geladen werden. Der Befehl Drop entfernt die temporäre Tabelle Employees, damit es nicht zu Verwechslungen kommt.
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
Beispiel 4:
Die where-Bedingung enthält not: where not Exists (Employee).
Das bedeutet, dass nur die Namen aus der Tabelle Citizens, die sich nicht in Employees befinden, in die neue Tabelle geladen werden.
Beachten Sie, dass zwei Werte für Lucy in der Tabelle Citizens vorhanden sind, aber nur einer in die Ergebnistabelle eingeschlossen wird. Wenn Sie die erste Zeile mit dem Wert Lucy laden, wird der Wert in das Feld Employee eingeschlossen. Wenn daher die zweite Zeile geprüft wird, ist der Wert bereits vorhanden.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Beispiel 5:
Dieses Beispiel zeigt, wie alle Werte geladen werden.
Um alle Werte für Lucy abrufen zu können, wurden zwei Dinge geändert:
-
Ein vorangehender Load in die Tabelle Employees wurde eingefügt, wobei Employee zu Name umbenannt wurde.
Load Employee As Name;
-
Ändern Sie die Where-Bedingung in Citizens zu:
not Exists (Name, Employee).
Damit werden Felder für Name und Employee erstellt. Wenn die zweite Zeile für Lucy geprüft wird, ist sie noch nicht in Name vorhanden.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |
Im Beispiel verwendete Daten: