Exists - skriptfunktion
Exists() avgör om ett specifikt fältvärde redan har laddats in i fältet i dataladdningsskriptet. Funktionen returnerar TRUE eller FALSE, så att det kan användas i where-satsen för en LOAD-sats eller en IF-sats.
Syntax:
Exists(field_name [, expr])
Return data type: Boolesk
Arguments:
Argument | Beskrivning |
---|---|
field_name |
Namnet på fältet där du vill söka efter ett värde. Du kan använda explicita fältnamn utan citattecken. Fältet måste redan vara laddat av skriptet. Det vill säga, du kan inte hänvisa till ett fält som laddas i en sats längre ned i skriptet. |
expr |
Värdet som du vill kontrollera om det finns. Du kan använda ett explicit värde eller ett uttryck som hänvisar till ett eller flera fält i den aktuella load-satsen. Anteckning om informationDu kan inte hänvisa till fält som inte ingår i den aktuella load-satsen.
Det här argumentet är valfritt Om du utesluter det kommer funktionen att kontrollera om värdet field_name i den aktuella posten redan existerar. |
Data som används i exemplet:
Example:
Exists (Employee)
Returnerar -1 (True) om fältets värde Employee i den aktuella posten redan finns i en tidigare läst post som innehåller detta fält.
Satserna Exists (Employee, Employee) och Exists (Employee) är ekvivalenta.
Example:
Exists(Employee, 'Bill')
Returnerar -1 (True) om fältvärdet 'Bill' hittas i det aktuella innehållet i fältet Employee.
Example:
Detta resulterar i en tabell som du kan använda i en tabellvisualisering med dimensionerna Employee och Address.
where-satsen: where Exists (Employee) betyder att enbart namnen från tabellen Citizens som också finns i Employees laddas till den nya tabellen. Satsen Drop avlägsnar tabellen Employees för att undvika sammanblandning.
Employee | Address |
Bill | New York |
John | Miami |
Steve | Chicago |
Example:
where-satsen innehåller not: where not Exists (Employee, Name).
Detta innebär att enbart namnen från tabellen Citizens som inte finns i Employees laddas in i den nya tabellen.
Observera att det finns två värden för Lucy i tabellen Citizens, men att endast ett inkluderas i resultattabellen. När du laddar den första raden inkluderas värdet i symboltabellen Employee. När den andra raden kontrolleras finns alltså redan värdet.
I nästa exempel visas hur du laddar alla värden.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Example:
För att hämta alla värden för Lucy måste du ändra på två saker:
-
Lägg till en tidigare laddning för Employees där du ändrar namn på Employee till Name.
Load Employee As Name, ID, Salary;
-
Ändra på Where-villkoret i Citizens till:
not Exists (Name, Employee).
Detta skapar olika symboltabeller för Name och Employee. När den andra raden för Lucy kontrolleras finns den fortfarande inte i Name.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |