Saltar al contenido principal Saltar al contenido complementario

Merge

El prefijo Merge se puede añadir a cualquier sentencia LOAD o SELECT en el script para especificar que la tabla cargada debe fusionarse en otra tabla. También especifica que esta sentencia debe ejecutarse en una carga parcial.

El uso típico es cuando carga un registro de cambios y desea usarlo para aplicar inserts, updates y deletes a una tabla existente.

Sintaxis:  

Merge [only] [(SequenceNoField [, SequenceNoVar])] On ListOfKeys [Concatenate [(TableName)]] (loadstatement | selectstatement)

 

Durante una recarga normal (no parcial), la construcción Merge LOAD funcionará como una sentencia Load normal pero con la funcionalidad adicional de eliminar registros obsoletos más antiguos y registros marcados para su eliminación. El primer campo de la sentencia de carga debe contener información sobre la operación: Insert, Update o Delete.

Para cada registro cargado, el identificador de registro se comparará con los registros cargados previamente y solo se mantendrá el último registro (según el número de secuencia). Si el último registro está marcado con Delete, no se conservará ninguno.

Si se utiliza el prefijo Concatenate o si existe una tabla con el mismo conjunto de campos, los registros se agregarán a la tabla existente correspondiente. De otro modo, el resultado de la construcción Merge LOAD se almacenará en una tabla nueva.

Si se utiliza el prefijo Concatenate, la tabla resultante puede tener más campos que el registro de cambios que se utiliza como entrada para Merge.

Una recarga parcial hará lo mismo que una recarga completa. La única diferencia es que la construcción Merge LOAD nunca creará una nueva tabla. Siempre existe una tabla relevante de la ejecución del script anterior para modificar.

Si el registro de cambios cargado es un registro acumulado, es decir, contiene cambios que ya se han cargado, el parámetro SequenceNoVar se puede utilizar en una cláusula Where para limitar la cantidad de datos de entrada. La construcción Merge LOAD luego se podría hacer que solo cargue registros donde el campo SequenceNoField sea mayor que SequenceNoVar. Una vez finalizado, Merge LOAD asignará un nuevo valor al valor SequenceNoVar máximo que se ve en el campo SequenceNoField.

Argumentos:  

Argumentos
Argumento Descripción
only Es un cualificador opcional que indica que la sentencia debe ejecutarse solo durante recargas parciales. Debe ignorarse durante las recargas normales (no parciales).
SequenceNoField El nombre del campo que contiene una marca de tiempo o un número de secuencia que define el orden de las operaciones.
SequenceNoVar

El nombre de la variable a la que se le asigna el valor máximo del SequenceNoField de la tabla que se está fusionando.

ListOfKeys Una lista separada por comas de nombres de campo que especifican la clave principal.
operation El primer campo de la sentencia de carga debe contener la operación: Insert, Update o Delete. ‘i’, ‘u’ y ‘d’ también se aceptan.

¿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