Exists - função de script
Exists() determina se um valor de campo específico já foi carregado no campo no script de carregamento. A função retorna TRUE ou FALSE, de forma que ela possa ser usada na cláusula wherede um comando LOAD ou de uma função IF.
Sintaxe:
Exists(field_name [, expr] )
Tipo de dados de retorno: Booleano
Argumentos:
Argumento | Descrição |
---|---|
field_name |
O nome do campo em que você deseja procurar um valor. É possível usar um nome de campo explícito sem aspas. O campo já deve estar carregado pelo script. Isso significa que você não pode fazer referência a um campo carregado em uma cláusula mais abaixo no script. |
expr |
O valor que você deseja verificar, se ele existir. É possível usar um valor explícito ou uma expressão que faça referência a um ou vários campos na instrução de load atual. Nota informativaNão é possível fazer referência a campos que não estejam incluídos na instrução de load atual.
Esse argumento é opcional. Se você o omitir, a função verificará se o valor de field_name no registro atual já existe. |
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.
Exemplo 2:
Exists(Employee, 'Bill')
Retorna -1 (True) se o valor de campo 'Bill' for encontrado no conteúdo atual do campo Employee.
Os comandos Exists (Employee, Employee) e Exists (Employee) são equivalentes.
Exemplo 3:
Isso resulta em uma tabela chamada Citizens no modelo de dados, que pode ser visualizado como um gráfico de tabela usando as dimensões Employee e Address.
A cláusula where: where Exists (Employee), significa que apenas os nomes da tabelaCitizens que também estão em Employees são carregados na nova tabela. O comando Drop remove a tabela temporária Employees para evitar confusão.
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
Exemplo 4:
A cláusula where inclui not: where not Exists (Employee).
Isso significa que apenas os nomes da tabela Citizens que não estiverem em Employees serão carregados na nova tabela.
Observe que existem dois valores para Lucy na tabela Citizens, mas apenas um é incluído na tabela de resultados. Quando você carregar a primeira linha com o valor Lucy, o valor será incluído no campo Employee. Portanto, quando a segunda linha for verificada, o valor já existirá.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Exemplo 5:
Este exemplo mostra como carregar todos os valores.
Para poder obter todos os valores para Lucy, duas coisas foram alteradas:
-
Foi inserido um carregamento anterior na tabela Employees em que Employee foi renomeado para Name.
Load Employee As Name;
-
A condição Where em Citizens foi alterada para:
not Exists (Name, Employee).
Isso cria campos para Name e Employee. Quando a segunda linha com Lucy for verificada, isso ainda não existirá em Name.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |
Dados usados no exemplo: