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 EmployeeAddresses i datamodellen, som kan visas som ett tabelldiagram med hjälp av dimensionerna Employee och Address.
where-satsen: where Exists (Employee, Name), betyder att enbart namnen från tabellen Citizens som också finns i Employees laddas till den nya tabellen. Satsen Drop avlägsnar de tillfälliga tabellerna Employees och Citizens för att undvika sammanblandning.
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
Exempel 4:
Ersätter satsen i exempeldata i det föregående exemplet som bygger tabellen EmployeeAddresses med följande, med hjälp av where not Exists.
NonEmployee:
Load Name as Employee, Address Resident Citizens where not Exists (Employee, Name);
where-satsen innehåller: not: where not Exists (Employee, Name).
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 inkluderas det första värdet i Employee-symboltabellen. Alltså finns värdet redan när den andra raden kontrolleras.
I nästa exempel visas hur du laddar alla värden.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Exempel 5:
För att du ska kunna få alla värden för Lucy måste du ändra två saker:
Lägg till ett inledande Load för Employees, där du ändrar namnet för Employee till Name.
Load Employee As Name, ID, Salary;
Ändra Where-villkoret i Citizens till:
not Exists (Name, Employee).
Detta skapar olika symboltabeller för Name och Employee. När andra raden för Lucy kontrolleras finns det fortfarande inte i Name.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |
Data som används i exemplet: