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. La función devuelve TRUE o FALSE, por lo que se puede usar en la cláusula where de una sentencia LOAD o una función IF.

Nota informativaTambié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 tanto las tablas cargadas previamente como los valores cargados previamente en la tabla actual. Por lo tanto, únicamente se cargará la primera instancia. Cuando se encuentra la segunda instancia, el valor ya está cargado. Vea los ejemplos para más información.

Sintaxis:  

Exists(field_name [, expr] )

Tipo de datos que devuelve: Booleano

Argumentos:  

Argumentos de Exists
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 estar cargado por el script. Eso significa que no puede hacer referencia a un campo que se cargue en una cláusula más abajo en el script.

expr

El valor que desea verificar si existe. Puede usar un valor explícito o una expresión que se refiera a uno o varios campos en la sentencia load de carga actual.

Nota informativaNo puede hacer referencia a campos que no estén incluidos en la sentencia load de carga actual.

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

Ejemplo 1:  

Exists (Employee)

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

Ejemplo 2:  

Exists(Employee, 'Bill')

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

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

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

 

Esto da como resultado una tabla denominada Citizens en el modelo de datos, que puede visualizarse como un gráfico de tabla utilizando las dimensiones Employee y Address.

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

Resultados del ejemplo 3
Employee Address
Bill New York
John Miami
Steve Chicago

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

 

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

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

Observe que hay dos valores para Lucy en la tabla Citizens, pero solo uno está incluido en la tabla de resultados. Cuando carga la primera fila con el valor Lucy, este se incluye en el campo Employee. Por lo tanto, cuando se marca la segunda línea, el valor ya existe.

Resultados del ejemplo 4
Employee Address
Mary London
Lucy Madrid

Ejemplo 5:  

Este ejemplo muestra cómo cargar todos los 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 obtener todos los valores de Lucy, se modificaron dos cosas:

  • Se insertó una instrucción load precedente antes de la tabla Employees, donde Employee se renombró como Name.

    Load Employee As Name;

  • La condición Where de Citizens se modificó a:

    not Exists (Name, Employee).

Esto crea campos para Name y Employee. Cuando se marca la segunda fila de Lucy, todavía no existe en Name.

Resultados del ejemplo 5
Employee Address
Mary London
Lucy Madrid
Lucy Paris

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

¿Esta página le ha sido útil?

No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.

Únase al Programa de modernización de la analítica

Remove banner from view

Modernícese sin comprometer sus valiosas aplicaciones de QlikView con el Programa de modernización de la analítica. Haga clic aquí para obtener más información o contactar con nosotros: ampquestions@qlik.com