Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Duda combinando QVD y base de datos

Hola,

tengo un QVD hasta una fecha, por ejemplo, están todos los datos hasta ayer,y lo quiero concatenar con la información que saque de la base de datos a partir de hoy. En la base de datos no puedo hacer que me filtre por una fecha ya que no es un atributo que tenga la tabla, de qué manera se puede hacer para que no hay duplicados ni tenga que recargarse el QVD y además toda la base?

Gracias! Saludos

1 Solution

Accepted Solutions
alex_millan
Creator III
Creator III

Te adjunto un ejemplo para que veas como funciona en el script.

View solution in original post

10 Replies
alex_millan
Creator III
Creator III

Hola,

el procedimiento sería el siguiente:

1 - carga primero el QVD

2 - localiza el valor que te va a servir de referencia para filtrar los datos de la base de datos, por ejemplo, la fecha máxima del qvd, y lo almacenas como variable.

3 - concatenas la consulta a la base de datos a la tabla del paso 1, filtrando los datos en función de la variable

Una vez lo tienes cargado todo, guardas la tabla en qvd para poder utilizarlo al día siguiente.

Espero que te ayude.

Un saludo

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Hola:

MaxFecha:

LOAD Max(Fecha) as Fecha

From TuQVD.qvd;

vMaxFecha =  Peek('Fecha', 0, 'MaxFecha');

Datos

LOAD * ;

SELECT * FROM TuTabla

Where TuTabla.Fecha > $(vMaxFecha);

Comprueba que el formato es YYYYMMDD, sino lo es tienes hay más tarea

Espero que te ayude.

Joaquín

alex_millan
Creator III
Creator III

Te adjunto un ejemplo para que veas como funciona en el script.

Not applicable
Author

Hola,

gracias por las respuestas.

Alex, en base a lo que propones en tu ejemplo, guardaría todos los días el QVD con todo lo nuevo y al día siguiente recogería toda la información del QVD y solo añadiría lo nuevo.

Esta forma parece muy optimizada para las recargas, es el modelo ideal? porque puede pasar que en ocasiones la información de días anteriores se modifique. En este caso que haríamos?

Hay para casos puntuales que esa propuesta es magnífica sin duda.

Not applicable
Author

El formato es dd-mm-yyyy , en qué cambiaría?

Gracias

alex_millan
Creator III
Creator III

Sí, efectivamente es la manera más óptima siempre que los datos históricos sean "cerrados", no haya modificaciones.

Se trata de que cada día incrementas el QVD con lo nuevo que vas cargando, así la mayor parte de la carga está optimizada y el tiempo de carga se reduce sensiblemente.

Si no es tu caso y es posible que los datos históricos se modifiquen, quizás puedas optar por otra aproximación:

Cargar de tu base de datos la información nueva o la modificada (controlando esto último mediante algún flag que te permita identificarlo)  y luego cargas la información del QVD filtrando los datos con una cláusula "where not exists" para evitar que duplique los registros modificados.

Te recomiendo que hagas una búsqueda en el foro sobre Incremental Load, haya descubrirás muchos ejemplos sobre este tema y seguro que te sirven de ayuda.

Un saludo

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Básicamente en que no funciona el where porque 31012015 es mayor que 01082015, sin embargo 20150131 no es mayor que 20150801 ... para poder filtrar fechas tienen que estar en YYYYMMDD o en formato ordinal como el interno de QV o de Excel.

alex_millan
Creator III
Creator III

Cierto Joaquín, a veces te juega malas pasadas.

En mi caso, al cargar los datos con formato de fecha, cuando la variable coge el valor, toma el valor numérico de la fecha y la cláusula 'where' funciona bien. Sin embargo, es cierto que algunas veces, según la fuente y los datos que contenía, hemos tenido que andar jugando con los formatos para que funcionara correctamente.

Un saludo

Not applicable
Author

Gracias Alex. Si tiene que buscar por toda la base con esa claúsula me imagino que la optimización será mucho más baja.

Tengo que ponerme al día con esto de los QVD que me parece uno de los pilares de Qlikview.

Saludos.