# Exists Funzione script

Exists() determina se un valore di campo specifico è già stato caricato nel campo nello script di caricamento dei dati. La funzione restituisce TRUE o FALSE, quindi può essere utilizzata nella clausola where di un'istruzione LOAD o un'istruzione IF.

Nota informaticaÈ possibile utilizzare Not Exists() per determinare se un valore di campo non è stato caricato, ma occorre prestare attenzione se si usa Not Exists() in una clausola Where. La funzione Exists() verifica sia le tabelle caricate in precedenza che i valori caricati in precedenza nella tabella corrente. Verrà quindi caricata solo la prima occorrenza. Quando viene rilevata la seconda occorrenza, il valore sarà già caricato. Vedere gli esempi per ulteriori informazioni.

Sintassi:

Exists(field\_name [, expr])

Tipo di dati restituiti: Boolean

Argomenti:

Argomenti

| Argomento | Descrizione |
| --- | --- |
| field\_name | Nome del campo in cui si desidera cercare un valore. È possibile utilizzare un nome di campo esplicito senza virgolette.<br><br>Il campo deve già essere caricato dallo script. Ciò significa che non è possibile fare riferimento a un campo caricato in una clausola che si trova più in basso nello script. |
| expr | Valore del quale si vuole verificare l'esistenza. È possibile utilizzare un valore esplicito o un'espressione che fa riferimento a uno o più campi nell'istruzione LOAD corrente.<br><br>Nota informaticaNon è possibile fare riferimento a campi non inclusi nell'istruzione LOAD corrente.<br><br>Questo argomento è facoltativo. Se viene omesso, la funzione verificherà se il valore di field\_name nel record corrente è già esistente. |

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

#### Esempi e risultati:

Esempio 1

`Exists 
 (Employee)`

Restituisce -1 (True) se il valore di campo Employee nel record attuale esiste già in uno qualsiasi dei record letti in precedenza contenenti tale campo.

Le istruzioni `Exists (Employee, Employee)` e `Exists (Employee)` sono equivalenti.

Esempio 2

`Exists(Employee, 
 'Bill')`

Restituisce -1 (True) se il valore di campo 'Bill' viene trovato nel contenuto attuale del campo Employee.

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

Viene generata una tabella che può essere usata nella visualizzazione di una tabella con le dimensioni Employee e Address.

La clausola where, `where Exists (Employee)`, significa che nella nuova tabella vengono caricati solo i nomi della tabella Citizens che sono presenti anche in Employees. L'istruzione Drop rimuove la tabella Employees per evitare confusione.

Risultati

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

Esempio 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 clausola where include not: `where not Exists (Employee)`.

Ciò significa che nella nuova tabella vengono caricati solo i nomi della tabella Citizens che non sono presenti in Employees.

Si noti che sono presenti due valori per Lucy nella tabella Citizens, ma solo uno è incluso nella tabella risultante. Quando si carica la prima riga con il valore Lucy, esso viene incluso nel campo Employee. Quindi, quando viene controllata la seconda riga, il valore esiste già.

Risultati

| Dipendente | Indirizzo |
| --- | --- |
| Mary | London |
| Lucy | Madrid |

Esempio 5

Questo esempio mostra come caricare tutti i valori.

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

Per ottenere tutti i valori per Lucy è stato necessario effettuare due modifiche:

* È stato inserito un caricamento precedente per la tabella Employees in cui Employee è stato rinominato Name.

  `
  Load Employee As Name;`

* La condizione Where in Citizens è stata modificata in:

  `not Exists (Name, Employee).`

Ciò crea campi per Name e Employee. Quando viene controllata la seconda riga con Lucy, il valore è ancora inesistente in Name.

Risultati

| Dipendente | Indirizzo |
| --- | --- |
| Mary | London |
| Lucy | Madrid |
| Lucy | Paris |