Skip to main content
Announcements
NEW Customer Portal: Initial launch will improve how you submit Support Cases. FIND OUT MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
gsegreda
Contributor III
Contributor III

Cómo incluir un control de fecha para evitar duplicar datos al cargar nueva data

Hola Comunidad.

Agradeceré la ayuda para poder incluir un control por fecha para evitar duplicar datos.

Tengo la data histórica en un archivo QVD, y la nueva información se carga una vez al mes desde un archivo Excel el cual es sustituido por con los nuevos datos. Este archivo siempre tiene el mismo nombre.

Puede darse el caso que no se sustituya el archivo y se vuelva a cargar los mismos datos, por eso el riesgo de duplicarlos.

Esta es la estructura del script para que tengan una idea de lo que se hace para cargar los datos.

Toda ayuda será bien recibida...

Gracias!!!

4 Replies
isorinrusu
Partner - Creator III
Partner - Creator III

Hola Gustavo,

La función Where Exists() será tu mejor aliado: Exists ‒ QlikView

Solo te hace falta identificar la clave única que no se tiene que repetir (SKU?) y añadir la sentencia Where NOT Exists al cargar la tabla SnaksNuevo. Lo que hará que no te cargue los SKU (?) que ya tienes cargados en el histórico.

Si tienes dudas al implementarlo, estamos para ayudar.

Saludos!

gsegreda
Contributor III
Contributor III
Author

Gracias!

Probé esta opción intentado modificarla, pero en realidad lo que busco es tener un control pero de la fecha máxima, para evitar cargar datos más de un vez y que no se dupliquen los datos.

También tengo un proceso para tomar los nuevos datos y agregarlos a un .QVD, pero tengo el riesgo de duplicar datos.

Toda ayuda será bien recibida.

Saludos.

isorinrusu
Partner - Creator III
Partner - Creator III

Hola Gustavo, y no te serviría el Where not Exists de MesAño?

Es decir, cargas tu histórico, y después el nuevo con Where not Exists(Año_Mes). De esta manera, si en el histórico tienes 201701 y 201702 y en el nuevo 201702 y 201703, no te volvería a cargar el 201702 del nuevo.

diagonjope
Partner - Creator III
Partner - Creator III

Saludos!

Sugiero que explores usar alguna de las funciones de hash (p.e., hash128())  para crear un nuevo campo conteniendo el hash de los campos en cada registro y usas la misma función de hash dentro de un exists() (tal y como se ha indicado antes). Así evitarás cargar registros duplicados. Una vez cargas los datos, puedes usar el comando 'drop field <nombre_hash>' para que el campo conteniendo el hash no consuma espacio de memoria.

--José