Ir para conteúdo principal

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.

Nota informativaVocê também pode usar Not Exists() para determinar se um valor de campo não foi carregado, mas convém ter cautela se você usar Not Exists() em uma cláusula Where. A função Exists() testa tabelas carregadas anteriormente e valores carregados anteriormente na tabela atual. Portanto, apenas a primeira ocorrência será carregada. Quando a segunda ocorrência for encontrada, o valor já estará carregado. Veja os exemplos para obter mais informações.

Sintaxe:  

Exists(field_name [, expr] )

Tipo de dados de retorno: Booleano

Argumentos:  

Argumentos Exists
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:  

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 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.

Resultados do exemplo 3
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 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á.

Resultados do exemplo 4
Employee Address
Mary London
Lucy Madrid

Exemplo 5:  

Este 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 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.

Resultados do exemplo 5
Employee Address
Mary London
Lucy Madrid
Lucy Paris

Dados usados no exemplo:

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 '|');

Esta página ajudou?

Se você encontrar algum problema com esta página ou seu conteúdo - um erro de digitação, uma etapa ausente ou um erro técnico - informe-nos como podemos melhorar!

Participe do Programa de Modernização do Analytics

Remove banner from view

Modernize sem comprometer seus valiosos aplicativos QlikView com o Programa de Modernização do Analytics. Clique aqui para mais informações ou entre em contato: ampquestions@qlik.com