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.
Sintaxis:
Exists(field_name [, expr] )
Tipo de datos que devuelve: Booleano
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 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:
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.
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
Ejemplo 4:
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.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Ejemplo 5:
Este ejemplo muestra cómo cargar todos los valores.
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.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |
Datos utilizados en el ejemplo: