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 EmployeeAddresses 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, Name), significa que en la tabla nueva solo se cargan los nombres de la tabla Citizens que también estén en Employees. La sentencia Drop elimina las tablas temporales Employees y Citizens para evitar confusiones.
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
Ejemplo 4:
Reemplazando la sentencia en los datos de muestra del ejemplo anterior que crea la tabla EmployeeAddresses con lo siguiente, usando where not Exists.
NonEmployee:
Load Name as Employee, Address Resident Citizens where not Exists (Employee, Name);
La cláusula where incluye not: where not Exists (Employee, Name).
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, el valor se incluye en la tabla de símbolos Employee. De ahí que cuando se marca la segunda línea, el valor ahora existe.
El ejemplo siguiente muestra cómo cargar todos los valores.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Ejemplo 5:
Para poder obtener todos los valores de Lucy, debe cambiar dos cosas:
Agregue una sentencia load precedente a Employees donde renombrará Employee como 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. 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: