Carga incremental en QlikView - Parte 2

En el artículo anterior sobre Carga Incremental en QlikView - Parte 1, vimos como hacer una carga incremental bajo el esquema de Sólo Inserciones.

Ahora veremos como hacer una carga incremental con las dos opciones restantes que son Insertar y Actualizar y Insertar, Actualizar y Eliminar.

Insertar y Actualizar

Una carga incremental de Inserción y Actualización es similar a la que vimos previamente de Sólo Inserción. En este tipo de carga incremental usted tomará las nuevas filas de la base de datos y las agregará al QVD existente.

En nuestro ejercicio anterior hemos cargado, las siguientes filas/tabla en QlikView para luego guardarlo en un QVD.


Para este ejemplo, voy a añadir dos nuevas filas en mi tabla fuente.


Ahora nuestro objetivo es sólo cargar las dos nuevas filas y no sobreescribir toda la tabla.

1. Vamos a comenzar con la carga inicial.
//************** Carga Incremental - Solo Insertar ******************

//Carga Inicial
Carga_Incremental1:
LOAD Codigo, 
     Categoria, 
     Comida, 
     Ubicación, 
     UltimaActualizacion
FROM DataIncremental.xlsx
(ooxml, embedded labels, table is Tb_Incremental);

Store Carga_Incremental1 Into 'D:\Qlik\Demos QlikView\Carga_Incremental\Qvd\Carga_Incremental1.qvd' (qvd);

2. Carga incremental, por ejemplo cargar las nuevas filas basándonos en la fecha del campo UltimaActualizacion.
//Cargar los registros nuevos y actualizados de la base de datos
Carga_Incremental1:
LOAD Codigo,
     Categoria,
     Comida, 
     Ubicación, 
     UltimaActualizacion
FROM DataIncremental.xlsx
(ooxml, embedded labels, table is Tb_Incremental)
Where UltimaActualizacion >= '28/05/2015';

3. Concatenar. Aquí podrás comprobar usando una Primary Key, para este caso vendría a ser el campo "Codigo", y cargar sólo aquellas filas donde tenemos una Primary Key distinta a las existentes. Esto asegurará que sólo se añaden nuevas filas y las filas existentes no se sobreescriben.
Concatenate
LOAD Codigo, 
     Categoria,
     Comida, 
     Ubicación, 
     UltimaActualizacion
FROM D:\Qlik\Demos QlikView\Carga_Incremental\Qvd\Carga_Incremental1.qvd (qvd)
Where Not Exists(Codigo);

Store Carga_Incremental1 Into 'D:\Qlik\Demos QlikView\Carga_Incremental\Qvd\Carga_Incremental1.qvd' (qvd);

Insertar, Actualizar y Eliminar


Esta opción es similar a la de Inserción y Actualización con única excepción que es necesario excluir/borrar los registros que se han eliminado del sistema de origen.

Para explicar este punto, he suprimido una fila y añadido una nueva fila a mi tabla fuente. He eliminado la fila donde Codigo = 6. Ahora mi tabla fuente se ve así:


Ahora utilizando la opción Insertar, Actualizar y Eliminar, usted debería ser capaz de cargar las nuevas filas y excluir los datos que fueron eliminados del sistema origen.

Siga los mismos pasos definidos anteriormente con la carga inicial, la carga incremental, concatenar y luego usar Inner Join para excluir los registros que fueron borrados del sistema origen.
Inner Join
LOAD Codigo
FROM DataIncremental.xlsx
(ooxml, embedded labels, table is Tb_Incremental);

Store Carga_Incremental1 Into 'D:\Qlik\Demos QlikView\Carga_Incremental\Qvd\Carga_Incremental1.qvd' (qvd);

Después de ejecutar esta carga, verá que las nuevas filas se añaden a su QVD y la fila que fue eliminada de su tabla fuente no aparecerá tampoco en su QVD.

Si selecciona desde el QVD y crear un cuadro de tabla, esta se verá como en la siguiente imagen, su QVD elimina el registro donde Codigo = 6 y se añade un nuevo registro donde Codigo = 16.


Las cargas incrementales son muy útiles cuando se tiene que cargar frecuentemente tablas transaccionales con grandes cantidades de datos y le preocupa mantener la integridad de los mismos.

Comentarios