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, de forma que pode ser usada na cláusula where de um comando LOAD ou um comando IF.
Syntax:
Exists(field_name [, expr])
Return data type: Booleano
Arguments:
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. 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. Nota informativaVocê não pode se referir a campos que não estão incluídos no comando load atual.
Esse argumento é opcional. Se você omiti-lo, a função verificará se o valor de field_name no registro atual já existe. |
Dados usados no exemplo:
Example:
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.
Example:
Exists(Employee, 'Bill')
Retorna -1 (True) se o valor de campo 'Bill' for encontrado no conteúdo atual do campo Employee.
Example:
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 tabelaCitizens que também estão em Employees são carregados para a nova tabela. O comando Drop remove a tabela Employees para evitar confusão.
Employee | Address |
Bill | New York |
John | Miami |
Steve | Chicago |
Example:
A cláusula where inclui not: where not Exists (Employee, Name).
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, o valor é incluído na tabela de símbolos de Employee. Portanto, quando a segunda linha é verificada, o valor agora existe.
O próximo exemplo mostra como carregar todos os valores.
Funcionário | Endereço |
---|---|
Mary | London |
Lucy | Madrid |
Example:
Para conseguir obter todos os valores para Lucy, você precisa alterar duas coisas:
-
Adicione uma carga precedente a Employees, em que você renomeia Employee para Name.
Load Employee As Name, ID, Salary;
-
Altere a condição Where em Citizens para:
not Exists (Name, Employee).
Isso criará diferentes tabelas de símbolos para Name e Employee. Quando a segunda linha para Lucy é marcada, ela ainda não existe em Name.
Funcionário | Endereço |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |