Exists - skriptfunktion
Exists() avgör om ett specifikt fältvärde redan har laddats in i fältet i laddningsskriptet. Funktionen returnerar TRUE eller FALSE och kan alltså användas i where-satsen i en LOAD-sats eller en IF-funktion.
Syntax:
Exists(field_name [, expr] )
Typ av returdata: Boolesk
Argument:
Argument | Beskrivning |
---|---|
field_name |
Namnet på det fält du vill söka efter ett värde i. Du kan använda ett explicit fältnamn utan citattecken. Fältet måste redan vara laddat av skriptet. Det innebär att du inte kan referera till ett fält som laddas i en sats senare i skriptet. |
expr |
Värdet som du vill kontrollera om det finns. Du kan använda ett explicit värde eller ett uttryck som refererar till ett eller flera fält i den aktuella LOAD-satsen. Anteckning om informationDu kan inte referera till fält som inte finns med i den aktuella LOAD-satsen.
Det här argumentet är valfritt. Om du utesluter det kommer funktionen att kontrollera om värdet för field_name i den aktuella posten redan finns. |
Exempel 1:
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.
Exempel 2:
Exists(Employee, 'Bill')
Returnerar -1 (True) om fältvärdet 'Bill' hittas i det aktuella innehållet i fältet Employee.
Satserna Exists (Employee, Employee) och Exists (Employee) är ekvivalenta.
Exempel 3:
Detta resulterar i en tabell med namnet Citizens i datamodellen, som kan visas som ett tabelldiagram med hjälp av 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 den tillfälliga tabellen Employees för att undvika sammanblandning.
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
Exempel 4:
where-satsen innehåller: not: where not Exists (Employee).
Det betyder att enbart de namn 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 bara ett inkluderas i resultattabellen. När du laddar den första raden med värdet Lucy inkluderas det i Employee-fältet. Alltså finns värdet redan när den andra raden kontrolleras.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Exempel 5:
I detta exempel visas hur du laddar alla värden.
För att göra det möjligt att få alla värden för Lucy ändrades två saker:
-
En föregående laddning till Employees-tabellen infogades där Employee namnändrades till Name.
Load Employee As Name;
-
Where-villkoret i Citizens ändrades till:
not Exists (Name, Employee).
Detta skapar fält för Name och Employee. När andra raden med Lucy kontrolleras finns det fortfarande inte i Name.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |
Data som används i exemplet: