Aproximadamente 328.77 millones de terabytes de datos son creados cada día lo cual representa una creación de datos de 120 zettabytes por año (1 ZB= 1 * 10 GB). La mayoría de los datos son creados en redes sociales. En este punto surge una primera interrogante ¿qué porcentaje de esta data nos puede generar valor? La respuesta a esta interrogante no es simple ni sencilla puesto que para poder responder se tiene que realizar procesos complejos de ETL dependiendo el tipo de datos y de esto depende la herramienta a seleccionar ajustada a la herramienta disponible por el cliente. Acá es donde podemos empezar a entender algunas ventajas de Qlik Sense sobre otras herramientas. Un limite de tamaño de memoria del modelo de un 1G en una versión PRO no es suficiente para la cantidad de información que tenemos que analizar, a esto tenemos que sumarle el tiempo de respuesta en los pipelines del proceso de análisis de los datos he histórico a mostrar y analizar.
La ventaja de extraer información y almacenarla:
En un formato comprimido QVD se traduce en una lectura entre 10 y 100 veces más rápida que otras fuentes sin contar que no impactamos la base de datos haciendo repetidas consultas, además podemos consolidar nuestros datos los cuales pueden ser consumidos por diferentes aplicaciones. Una de las funcionalidades son las cargas incrementales esto es posible haciendo uso de QVDs. En la capa de extracción solo hacemos la consulta de datos nuevos, actualizados o eliminados. Para implementar a carga delta o incremental podemos aplicar los siguientes pasos:

Determinar
el último dato, Máximo ID , máxima Fecha Creación, máxima Fecha Actualización.
Etc.

Construir
la consulta acorde a ese último flag de actualización usando la cláusula.

Concatenación de la nueva consulta con el QVD almacenado.

Si existen datos eliminados, utilizamos INNER JOIN con todo el conjunto de claves de la base de datos con los QVD almacenados.
Una técnica similar también la podemos aplicar en los QVD que almacenan datos transaccionales en la capa de transformación, la idea es dividir un gran QVD en múltiples QVDs pequeños esta segmentación es útil cuando se requiere analizar los últimos N periodos, otra razón es cuando tenemos una limitante en recursos en la carga incremental ya que esta implica leer y escribir todo el QVD lo cual nos impacta en tiempo y recursos de cómputo el cual siempre incrementara a medida que pase el tiempo.
Pasos pra segmentar un QVD, pongamos como ejemplo el siguiente QVD con los siguientes datos:
- ID_Transaccion: Primary Key
- Fecha_Transaccion: Fecha en la cual se realizó la transacción
- Fecha_Actualizacion: Fecha de actualización de la fila o registro (generalmente tienen un límite máximo de actualización 60 días después de la creación)
- Producto, Cliente, Categoria , etc.
Nuestro objeto será crear QVD por periodo o mes “Transacciones_YYYYMM.qvd”
Esto lo podemos hacer dependiendo de los traídos por la extracción y los datos previamente almacenados en QVD para ellos usamos la sentencia WHERE NOT EXISTS(ID_Transaccion) este proceso solo cuando es solicitado un full reload y se agregan o se quitan datos por casos fortuitos.
A continuación, proveemos de un pequeño código en el cual realizamos la segmentación por mes de un QVD.
TempMeses:
LOAD DISTINCT
MONTHSTART(Fecha_Transaccion)AS TranMes
RESIDENT
Transaccion;
FOR i = 1 TO FIELDVALUECOUNT('TranMes')
LET vMonthName = DATE(FIELDVALUE('TranMes', $(i) ),'YYYYMM');
SET vQvdName = Transaccion_$(vMonthName).qvd;
MesTransaccion
NOCONCATENATE LOAD *
RESIDENT Transaccion
WHERE
MONTHSTART(Fecha_Transaccion) = FIELDVALUE('TranMes', $(i));
IF FILESIZE('$(vQvdName)')> 0 THEN // si el qvd existe consolidados los qvds LOAD
*
FROM[$(vQvdName)] (qvd)
WHERE NOT EXISTS(ID_Transaccion);
ENDIF
STORE MesTransaccion INTO [$(vQvdName)] (qvd);
DROP TABLE MesTransaccion;
NEXT i
DROP TABLE TempMess, Transaccion;
Es
así como de manera optima y eficiente podemos manejar grandes volúmenes de
datos a través del aplicativo Qlik Sense
tambien podemos hablar de una funcionalidad interesante para grandes volúmenes
de datos llamada On-Demand Apps, Donde
ya podemos usar técnicas similares a la segmentación de datos aunque esta
funcionalidad es más completa y orientada al Big Data, desde Wadua aplicamos
las mejores prácticas en código y plataformas adaptándonos a las necesidades
del cliente.
¿Cómo solucionar las cargas incrementales en Qlik?