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

No funciona la actualización en carga Incremental

Hola a todos.

Tengo el problema al hacer la carga incremental en un QVD si me agrega los nuevos registros, pero si un registro es modificado,este cambio no se me ve reflejado, quizas estoy interpretando mal el proceso de actualizar y agregar, alguien tendrá algun ejemplo que me pueda compartir para validar en que punto estoy mal.

comparto el proceso que realizo de igual manera para alguna observacion.

saludos y gracias.

1 Solution

Accepted Solutions
jvitantonio
Luminary Alumni
Luminary Alumni

Hola Agustin,

El proceso parece correcto. Sin embargo, deberias estar trabajando con dos fechas diferentes. Esto se refiere más a diseño de datos y no a Qlikview.

En general, cuando usamos carga incremental, nuestra tabla tiene dos o más fechas. Una que es la fecha de venta (en tu caso), que nunca cambia ya que es un hecho que esa venta se realizó en esa fecha, y un campo extra en formato fecha que es de actualización de datos. Este último campo (llamemoslo fecha_actualizacion) se debe actualizar cada vez que cualquiera de los campos cambia.

Por lo tanto, cuando haces la carga incremental, no trabajas con el campo de fecha_venta sino que usas el campo de fecha_actualizacion.

EjemploÑ

Fecha_venta   Producto     Valor      fecha_actualizacion

10-01-2015     Aluminio      10000      10-01-2015        <<-- Esto es un registro nuevo. fecha_venta = fecha actualizacion

08-01-2012     Hierro          500          10-01-2015       <<-- Registro viejo que fue actualizado

De esta maneras podras cargar los campos nuevos y los viejos que hayan sido actualizados.

Espero te sea útil.

Saludos,

Juan

View solution in original post

10 Replies
davidrobles
Partner - Contributor III
Partner - Contributor III

Hola Agustin,

Veo alguna cosa que no me comvence

En la select esta definiendo el campo que parece clave como Num_Cliente y en el qvd es NUM_CLIENTE para QV son dos campos distintos.

en este caso el where seria "where not exist (Num_Cliente, NUM_CLIENTE )"

Luengo en la lectura del QVD resultante tendrias que renombrar el campo Num_Cliente

Algo asi

if(isnull(NUM_CLIENTE),Num_Cliente ,NUM_CLIENTE)               as NUM_CLIENTE

Espero haberme explicado bien

Un Saludo

jvitantonio
Luminary Alumni
Luminary Alumni

Hola Agustin,

El proceso parece correcto. Sin embargo, deberias estar trabajando con dos fechas diferentes. Esto se refiere más a diseño de datos y no a Qlikview.

En general, cuando usamos carga incremental, nuestra tabla tiene dos o más fechas. Una que es la fecha de venta (en tu caso), que nunca cambia ya que es un hecho que esa venta se realizó en esa fecha, y un campo extra en formato fecha que es de actualización de datos. Este último campo (llamemoslo fecha_actualizacion) se debe actualizar cada vez que cualquiera de los campos cambia.

Por lo tanto, cuando haces la carga incremental, no trabajas con el campo de fecha_venta sino que usas el campo de fecha_actualizacion.

EjemploÑ

Fecha_venta   Producto     Valor      fecha_actualizacion

10-01-2015     Aluminio      10000      10-01-2015        <<-- Esto es un registro nuevo. fecha_venta = fecha actualizacion

08-01-2012     Hierro          500          10-01-2015       <<-- Registro viejo que fue actualizado

De esta maneras podras cargar los campos nuevos y los viejos que hayan sido actualizados.

Espero te sea útil.

Saludos,

Juan

jvitantonio
Luminary Alumni
Luminary Alumni

Hola David, no creo que este sea el problema ya que sino no cargaria ningun dato. Para las mayorias de las bases de datos, cuando usas el comando SQL Select los nombres or alias de las columnas son devueltas en mayúsculas.

davidrobles
Partner - Contributor III
Partner - Contributor III

Es posible, entonces el problema seria que la extracción no trae los datos modificados sino solo los nuevos.

jvitantonio
Luminary Alumni
Luminary Alumni

Yo creo que si David, por lo poco que se ve en el archivo que adjunto. Vamos a ver que dice Agustin con las ideas que le dimos.

Not applicable
Author

Juan:

buen día si entiendo el punto que mencionas pero en la fuente no me muestra el campo fecha _actualización que mencionas salvo que la fuente lo maneje de manera oculta en cuyo caso por lo que entendi es parte por lo que el proceso sugiere apoyarse de un campo llave o campo adicional como viene siendo el NUM_CLIENTE.

saludos

Not applicable
Author

David:

buen día efectivamente pude ser ese el punto le mencione unos puntos a Juan respecto a su sugerencia

saludos

jvitantonio
Luminary Alumni
Luminary Alumni

Hola Agustin, si en la fuente no existe el campo lo tienes que crear, es la unica manera que podras saber si un registro existente ya fue actualizado.

Si solo quieres usar el NUM_CLIENTE, entonces deberas pedir a quien maneje la fuente que cree una tabla separada y que inserte temporalmente los campos que son actualizados asi tu puedes traer los datos de esa nueva tabla que solo tiene campos actualizados y asi poder distinguirlos, de otra manera tu script solo incrementara registros nuevos.

Saludos

Juan

Not applicable
Author

Juan:

buenas una consulta respecto al mismo tema estoy investigando pero aun no he encontrado algo relacionado al mismo tema. ¿se puede tomar la fecha del sistema para que me sirva como campo fecha de actualizacion?

saludos