# 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.

Anteckning om informationDu kan även använda Not Exists() för att avgöra om ett fältvärde inte har laddats, men du bör vara försiktig om du använder Not Exists() i en where-sats. Exists()-funktionen testar både tidigare laddade tabeller och tidigare laddade värden i den aktuella tabellen. Så endast den första förekomsten laddas. När den kommer till den andra förekomsten har värdet redan laddats. Se exemplen för mer information.

Syntax:

Exists(field\_name [, expr])

Returnerad datatyp: Booleansk

Argument:

Argument

| 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.<br><br>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.<br><br>Anteckning om informationDu kan inte hänvisa till fält som inte ingår i den aktuella load-satsen.<br><br>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. |

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/InterRecordFunctions/Exists.htm)

#### Exempel och resultat:

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.

Satserna `Exists (Employee, Employee)` och `Exists (Employee)` är ekvivalenta.

Exempel 2

`Exists(Employee, 
 'Bill')`

Returnerar -1 (True) om fältvärdet 'Bill' hittas i det aktuella innehållet i fältet Employee.

Exempel 3

```
Employees:
LOAD * inline [
Employee|ID|Salary
Bill|001|20000
John|002|30000
Steve|003|35000
] (delimiter is '|');

Citizens:
Load * inline [
Employee|Address
Bill|New York
Mary|London
Steve|Chicago
Lucy|Madrid
Lucy|Paris
John|Miami
] (delimiter is '|') where Exists (Employee);

Drop Tables Employees;
```

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.

Resultat

|  |  |
| --- | --- |
| Employee | Address |
| Bill | New York |
| John | Miami |
| Steve | Chicago |

Exempel 4

```
Employees:
Load * inline [ 
Employee|ID|Salary
Bill|001|20000
John|002|30000
Steve|003|35000
] (delimiter is '|');
 
Citizens:
Load * inline [
Employee|Address
Bill|New York
Mary|London
Steve|Chicago
Lucy|Madrid
Lucy|Paris
John|Miami
] (delimiter is '|') where not Exists (Employee);
 
Drop Tables Employees;
```

where-satsen innehåller not: `where not Exists (Employee)`.

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 med värdet Lucy inkluderas det i fältet Employee. När den andra raden kontrolleras finns alltså redan värdet.

Resultat

| Namn för den anställde | Adress |
| --- | --- |
| Mary | London |
| Lucy | Madrid |

Exempel 5

Det här exemplet visar hur du laddar alla värden.

```
Employees:
Load Employee As Name;
LOAD * inline [
Employee|ID|Salary
Bill|001|20000
John|002|30000
Steve|003|35000
] (delimiter is '|');
 
Citizens:
Load * inline [
Employee|Address
Bill|New York
Mary|London
Steve|Chicago
Lucy|Madrid
Lucy|Paris
John|Miami
] (delimiter is '|') where not Exists (Name, Employee);
 
Drop Tables Employees;
```

För att hämta alla värden för Lucy ändrades två saker:

* En tidigare laddning i tabellen Employees infogades där Employee döptes om till Name.

  `
  Load Employee As Name;`

* Where-villkoret i Citizens ändrades till:

  `not Exists (Name, Employee).`

Det skapar fält för Name och Employee. När den andra raden med Lucy kontrolleras finns den fortfarande inte i Name.

Resultat

| Namn för den anställde | Adress |
| --- | --- |
| Mary | London |
| Lucy | Madrid |
| Lucy | Paris |