# Exists Scriptfunctie

Exists() bepaalt of een specifieke veldwaarde al is geladen in het veld in het script voor het laden van gegevens. De functie retourneert TRUE of FALSE, zodat deze kan worden gebruikt in de where-clausule van een LOAD‑opdracht of een IF‑opdracht.

InformatieU kunt Not Exists() ook gebruiken om te bepalen of een veldwaarde niet is geladen, maar voorzichtigheid is geboden als u Not Exists() gebruikt in een where-clausule. De functie Exists() test zowel eerder geladen tabellen als eerder geladen waarden in de huidige tabel. Dit betekent dat alleen het eerste exemplaar wordt geladen. Wanneer een tweede exemplaar wordt gevonden, is de waarde al geladen. Bekijk de voorbeelden voor meer informatie.

Syntaxis:

Exists(field\_name [, expr])

Retourgegevenstypen: Booleaanse waarde

Argumenten:

Argumenten

| Argument | Beschrijving |
| --- | --- |
| field\_name | De naam van het veld waarin u een waarde wilt zoeken. U kunt een expliciete veldnaam gebruiken zonder aanhalingstekens.<br><br>Het veld moet al door het script zijn geladen. Dit betekent dat u niet naar een veld kunt verwijzen dat in een clausule verderop in het script wordt geladen. |
| expr | De waarde waarvan u wilt controleren of deze bestaat. U kunt een expliciete waarde gebruiken of een uitdrukking die verwijst naar een of meer velden in de huidige load-opdracht.<br><br>InformatieU kunt niet verwijzen naar velden die niet in de huidige load-opdracht zijn opgenomen.<br><br>Dit argument is optioneel. Als u dit weglaat, controleert de functie of de waarde van field\_name al bestaat in het huidige record. |

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

#### Voorbeelden en resultaten:

Voorbeeld 1

`Exists 
 (Employee)`

Retourneert -1 (True) als de waarde van het veld Employee in de huidige record al bestaat in een eerder gelezen record met dat veld.

De opdrachten `Exists (Employee, Employee)` en `Exists (Employee)` zijn equivalent.

Voorbeeld 2

`Exists(Employee, 
 'Bill')`

Retourneert -1 (True) als de veldwaarde 'Bill' wordt gevonden in de huidige inhoud van het veld Employee.

Voorbeeld 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;
```

Dit resulteert in een tabel die u kunt gebruiken in een tabelvisualisatie met de dimensies Employee en Address.

De where-clausule, `where Exists (Employee)`, betekent dat alleen de namen uit de tabel Citizens die tevens in Employees voorkomen in de nieuwe tabel worden geladen. Met de Drop-opdracht wordt de tabel Employees verwijderd om verwarring te voorkomen.

Resultaten

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

Voorbeeld 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;
```

De where-clausule omvat not: `where not Exists (Employee)`.

Dit betekent dat alleen de namen uit de tabel Citizens die niet in Employees voorkomen in de nieuwe tabel worden geladen.

Houd er rekening mee dat hoewel er twee waarden voor Lucy in de tabel Citizens staan, slechts één in de resultaattabel wordt opgenomen. Wanneer u de eerste rij laadt met de waarde Lucy, wordt de waarde opgenomen in het veld Employee. Dus wanneer vervolgens de tweede rij wordt gecontroleerd, bestaat de waarde al.

Resultaten

| Employee | Address |
| --- | --- |
| Mary | London |
| Lucy | Madrid |

Voorbeeld 5

In dit voorbeeld wordt getoond hoe u alle waarden kunt laden.

```
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;
```

Om alle waarden voor Lucy te kunnen ophalen, zijn er twee dingen gewijzigd:

* Een voorgaande lading van de tabel Employees was ingevoerd op de plaats waar Employee is gewijzigd in Name.

  `
  Load Employee As Name;`

* De Where-voorwaarde in Citizens is gewijzigd in:

  `not Exists (Name, Employee).`

Hierdoor worden velden voor Name en Employee gemaakt. Wanneer de tweede rij met Lucy wordt gecontroleerd, bestaat deze nog niet in Name.

Resultaten

| Employee | Address |
| --- | --- |
| Mary | London |
| Lucy | Madrid |
| Lucy | Paris |