# Exists Fonction de script

Exists() détermine si une valeur de champ donnée a déjà été chargée dans le champ du script de chargement de données. La fonction renvoie TRUE ou FALSE. Elle peut donc être utilisée dans la clause where d'une instruction LOAD ou d'une instruction IF.

Note InformationsVous pouvez également déterminer si une valeur de champ n'a pas été chargée à l'aide de Not Exists(), mais nous vous conseillons d'être prudent en cas d'utilisation de la fonction Not Exists() dans une clause where. La fonction Exists() teste à la fois les tables précédemment chargées et les valeurs précédemment chargées dans la table active. Par conséquent, seule la première occurrence est chargée. Lorsque la deuxième occurrence est rencontrée, la valeur est déjà chargée. Pour plus d'informations, consultez les exemples.

Exists(field\_name [, expr])

Booléen

Arguments

| Argument | Description |
| --- | --- |
| field\_name | Nom du champ dans lequel vous souhaitez rechercher une valeur. Vous pouvez utiliser un nom de champ explicite sans guillemets.<br><br>Le champ doit déjà être chargé par le script. Autrement dit, vous ne pouvez pas faire référence à un champ qui est chargé dans une clause située plus loin dans le script. |
| expr | Valeur dont vous souhaitez vérifier l'existence. Vous pouvez utiliser une valeur explicite ou une expression qui fait référence à un ou plusieurs champs situés dans l'instruction de chargement.<br><br>Note InformationsIl n'est pas possible de faire référence à des champs non inclus dans l'instruction de chargement active.<br><br>Cet argument est facultatif. Si vous l'omettez, la fonction vérifiera si la valeur de field\_name figurant dans l'enregistrement actif existe déjà. |

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

#### Exemples et résultats :

Exemple 1

`Exists 
 (Employee)`

Renvoie -1 (True) si la valeur du champ Employee figurant dans l'enregistrement actif existe déjà dans un enregistrement lu précédemment et contenant ce champ.

Les instructions `Exists (Employee, Employee)` et `Exists (Employee)` sont équivalentes.

Exemple 2

`Exists(Employee, 
 'Bill')`

Renvoie -1 (True) si la valeur de champ 'Bill' se trouve dans le contenu actif du champ Employee.

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

Vous obtenez une table que vous pouvez utiliser dans une visualisation de table à l'aide des dimensions Employee et Address.

La clause where, `where Exists (Employee)` signifie que seuls les noms issus de la table Citizens et figurant également dans Employees sont chargés dans la nouvelle table. Pour éviter toute confusion, l'instruction Drop supprime la table Employees.

Résultats

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

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

La clause where inclut not : `where not Exists (Employee)`.

Autrement dit, seuls les noms issus de la table Citizens qui ne figurent pas dans Employees sont chargés dans la nouvelle table.

Notez la présence de deux valeurs pour Lucy dans la table Citizens, mais une seule figure dans la table des résultats. Lorsque vous chargez la première ligne avec la valeur Lucy, elle est incluse dans le champ Employee. De ce fait, lorsque la deuxième ligne est vérifiée, la valeur existe déjà.

Résultats

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

Exemple 5

Cet exemple explique comment charger toutes les valeurs.

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

Pour obtenir toutes les valeurs associées à Lucy, il a fallu modifier deux éléments :

* Une instruction preceding load appliquée à la table Employees a été insérée, dont le nom Employee a été remplacé par Name.

  `
  Load Employee As Name;`

* La condition Where de Citizens a été remplacée par :

  `not Exists (Name, Employee).`

Cela crée des champs pour Name et pour Employee. Lorsque la deuxième ligne avec Lucy est vérifiée, elle n'existe toujours pas dans Name.

Résultats

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