# Exists Função de script

Exists() determina se um valor de campo específico já foi carregado no campo no script de carga de dados. A função retorna TRUE ou FALSE, portanto pode ser usada na cláusula where de um comando LOAD ou um comando IF.

Nota informativaTambém é possível usar Not Exists() para determinar se um valor de campo não foi carregado, mas recomenda-se cuidado se você usar Not Exists() em uma cláusula where. A função Exists() testa tanto as tabelas quanto os valores carregados anteriormente na tabela atual. Então, apenas a primeira ocorrência será carregada. Quando a segunda ocorrência é encontrada, o valor já está carregado. Veja os exemplos para mais informações.

Sintaxe:

Exists(field\_name [, expr])

Tipo de dados de retorno: Booleano

Argumentos:

Argumentos

| Argumento | Descrição |
| --- | --- |
| field\_name | O nome do campo onde você deseja procurar um valor. Você pode usar um nome de campo explícito sem aspas.<br><br>O campo já deve estar carregado pelo script. Isso significa que você não pode se referir a um campo que seja carregado em uma cláusula mais abaixo no script. |
| expr | O valor que você deseja verificar se existe. Você pode usar um valor ou uma expressão explícita que se refira a um ou vários campos no comando load atual.<br><br>Nota informativaVocê não pode se referir a campos que não estão incluídos no comando load atual.<br><br>Esse argumento é opcional. Se você omiti-lo, a função verificará se o valor de field\_name no registro atual já existe. |

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

#### Exemplos e resultados:

Exemplo 1

`Exists 
 (Employee)`

Retorna -1 (True) se o valor do campo Employee no registro atual já existir em qualquer registro lido anteriormente que contenha esse campo.

Os comandos `Exists (Employee, Employee)` e `Exists (Employee)` são equivalentes.

Exemplo 2

`Exists(Employee, 
 'Bill')`

Retorna -1 (True) se o valor de campo 'Bill' for encontrado no conteúdo atual do campo Employee.

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

Isso resulta em uma tabela que pode ser visualizada em visualização de tabela usando as dimensões Employee e Address.

A cláusula where, `where Exists (Employee)`, significa que apenas os nomes da tabela Citizens que também estão em Employees são carregados na nova tabela. O comando Drop remove a tabela Employees para evitar confusão.

Resultados

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

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

A cláusula where inclui not: `where not Exists (Employee)`.

Isso significa que apenas os nomes da tabela Citizens que não estão em Employees são carregados para a nova tabela.

Observe que há dois valores para Lucy na tabela Citizens, mas apenas um é incluído na tabela de resultados. Quando você carrega a primeira linha com o valor Lucy, ela é incluída no campo Employee. Portanto, quando a segunda linha é verificada, o valor já existe.

Resultados

| Funcionário | Endereço |
| --- | --- |
| Mary | London |
| Lucy | Madrid |

Exemplo 5

Esse exemplo mostra como carregar todos os valores.

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

Para obter todos os valores de Lucy, duas coisas foram alteradas:

* Um carregamento anterior na tabela Employees foi inserido no ponto em que Employee foi renomeado para Name.

  `
  Load Employee As Name;`

* A condição Onde em Citizens foi alterada para:

  `not Exists (Name, Employee).`

Isso cria campos para Name e Employee. Quando a segunda linha com Lucy está marcada, ela ainda não existe em Name.

Resultados

| Funcionário | Endereço |
| --- | --- |
| Mary | London |
| Lucy | Madrid |
| Lucy | Paris |