Saltar al contenido principal

Exists - función de script

Exists() determina si un valor de campo específico ya se ha cargado en el campo en el script de carga de datos. La función devuelve TRUE o FALSE, así que se puede utilizar en la cláusula where de una sentencia LOAD o IF.

Nota: También puede usar Not Exists() para determinar si un valor de campo no se ha cargado, pero se recomienda precaución si utiliza Not Exists() en una cláusula where. La función Exists() prueba las tablas previamente cargadas y los valores previamente cargados en la tabla actual. Por lo tanto, solo se cargará la primera instancia. Cuando se encuentra la segunda instancia, el valor ya está cargado. Vea los ejemplos para más información.

Syntax:  

Exists(field_name [, expr])

Return data type: Booleano

Arguments:  

Argumentos
Argumento Descripción
field_name

El nombre del campo donde desea buscar un valor. Puede usar un nombre de campo explícito sin comillas.

El campo ya debe haber sido cargado por el script. Eso significa que no puede hacer referencia a un campo que se cargue mediante una cláusula situada más abajo en el script.

expr

El valor que desea comprobar si existe. Puede usar un valor explícito o una expresión que haga referencia a uno o varios campos en la sentencia load actual.

Nota: No puede hacer referencia a campos que no estén incluidos en la sentencia load actual.

Este argumento es opcional. Si lo omite, la función verificará si el valor de field_name en el registro actual ya existe.

Datos utilizados en el ejemplo:

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 '|');   Drop Tables Employees;

Example:  

Exists (Employee)

Devuelve -1 (True) si el valor del campo Employee en el registro actual ya existe en cualquier otro registro leído previamente que contenga ese campo.

Las sentencias Exists (Employee, Employee) y Exists (Employee) son equivalentes.

Example:  

Exists(Employee, 'Bill')

Devuelve -1 (True) si el valor del campo 'Bill' se encuentra en el contenido actual del campo Employee.

Example:  

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;

 

Esto da como resultado una tabla que puede usar como una visualización de tabla utilizando las dimensiones Employee y Address.

La cláusula where: where Exists (Employee), significa que solo se cargarán en la nueva tabla los nombres de la tabla Citizens que también estén en Employees. La sentencia Drop elimina la tabla Employees para evitar la confusión.

Resultados
   
Employee Address
Bill New York
John Miami
Steve Chicago

Example:  

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|Miami22222222223
+0 ] (delimiter is '|') where not Exists (Employee);   Drop Tables Employees;

 

La cláusula where incluye not: where not Exists (Employee, Name).

Esto significa que solo se cargarán en la nueva tabla los nombres de la tabla Citizens que no estén en Employees.

Tenga en cuenta que hay dos valores para Lucy en la tabla Citizens, pero solo uno está incluido en la tabla de resultados. Cuando se carga la primera fila, el valor se incluye en la tabla de símbolos Employee. Por lo tanto, cuando se comprueba la segunda línea, el valor ahora existe.

El ejemplo a continuación muestra cómo cargar todos los valores.

Resultados
Empleado Dirección
Mary London
Lucy Madrid

Example:  

Employees: Load Employee As Name, ID, Salary; 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 obtener todos los valores de Lucy, necesita cambiar dos cosas:

  • Agregue un load precedente a Employees donde debe cambiar el nombre de Employee a Name.

    Load Employee As Name, ID, Salary;

  • Cambie la condición Where en Citizens a:

    not Exists (Name, Employee).

Esto creará diferentes tablas de símbolos para Name y Employee. Al comprobar la segunda fila de Lucy, todavía no existe en Name.

Resultados
Empleado Dirección
Mary London
Lucy Madrid
Lucy Paris