Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola Comunidad.
No se como colocar en el script de QlikSense un control para evitar que se dupliquen los datos al incorporar la nueva data, recibo un archivo cada mes y quiero actualizar una base de datos QVD.
Dentro de los nuevos datos no vienen fechas específicas, solo el número de mes y el año. Todos los datos que vienen en el archivo deben ser agregados al QVD.
Los campos de tiempo que tengo son estos:
Agradezco su siempre útil colaboración.
Gracias.
Hola.... Asumiendo que ya tienes un QVD con datos anteriores y vas a agregar datos nuevos el proceso es como sigue:
Leer el QVD / Leer los datos nuevos / salvar la data en el nuevo QVD.
Mi_QVD
Load * From Mi_QVD;
Concatenate (Mi_QVD)
Load * From Datos_Nuevos
Store Mi_QVD...
No se si esto cumple con lo que quieres. Cualquier otro detalle dejame saber.
Estimado Juan.
Gracias por tu pronta respuesta.
Como lo mencionas ya sigo los mismos pasos, pero no se como agregar un control que impida duplicar los datos que ya están en el QVD.
Ya sucedió que el se duplicó un mes porque no se cambió por el archivo con los nuevos datos.
De nuevo agradezco tu ayuda.
Hola Gustavo,
Si cada fichero contiene la información de un año+mes, o de varios pero completos lo que puedes hacer es lo siguiente:
// Se pueden cargar en un bucle (si los ficheros están en diferentes carpetas) o con máscara en
// el FROM como en este ejemplo
TABLA_FINAL:
LOAD *
FROM FICHERO_????_??.csv;
// Tabla con los meses cargados en el paso anterior
MESES_INCREMENTAL:
LOAD DISTINCT Año_Mes AS [MESES_INCREMENTAL Año_Mes]
RESIDENT TABLA_FINAL;
// Se carga en TABLA_FINAL toda la información del QVD de histórico de aquellos meses que no
// estuviesen en los últimos ficheros cargados (incremental)
CONCATENATE (TABLA_FINAL)
LOAD *
FROM QVD_HISTORICO.qvd (qvd)
WHERE Not(Exists('MESES_INCREMENTAL Año_Mes', Año_Mes));
, de esta forma solo cargas del fichero histórico (QVD) aquellos meses que nos se encuentren en los ficheros cargados y que contienen la información nueva o actualizada.
Espero que te sirva...
Saludos,
H
Hola Héctor.
Gracias por la ayuda.
Algo no estoy realizando bien poque no me cargan todos los datos.
Si me puedes ayudar indicando que estoy haciendo incorrecto te lo agradeceré. Incluyo el script tal como lo tengo en este momento.
Gracias!!!
Esta es la secuencia de las secciones son como están en el script.
tmpSKU:
LOAD
MakeDate(Año,Mes) as Fecha,
UPC,
Sku
FROM [lib://QVD/Snacks.qvd]
(qvd);
mapSKU:
Mapping LOAD
UPC,
Sku
Resident tmpSKU
Order by Fecha Desc;
DROP Table tmpSKU;
Snacks:
LOAD
ApplyMap('mapSKU', UPC, Null()) as [Artículo],
DATE(MakeDate(Año,Mes),'MMM-YYYY')as MesAño,
makedate(Año,Mes) as Fecha,
Año,
Mes,
Año_Mes,
Sku,
UPC,
Categoría,
Unidades_Estandar
FROM [lib://QVD/Snacks.qvd]
(qvd)
WHERE Not(Exists('Mesnuevo MesAño', MesAño));
(Este es uno de los archivos de donde se cargan los nuevos datos.)
Snacks:
Concatenate (Snacks)
LOAD
ApplyMap('mapSKU', UPC, Null()) as [Artículo],
DATE(MakeDate(Año,Mes),'MMM-YYYY')as MesAño,
makedate(Año,Mes) as Fecha,
Año,
Mes,
Año_Mes,
SKU as Sku,
UPC,
Categoría,
Unidades_Estandar
FROM [lib://Chocolates/Chocolates.xlsx]
(ooxml, embedded labels, table is New);
NuevosDatos:
Concatenate (Snacks)
LOAD
ApplyMap('mapSKU', UPC, Null()) as [Artículo],
DATE(MakeDate(Año,Mes),'MMM-YYYY')as [MesAño],
makedate(Año,Mes) as Fecha,
Año,
Mes,
Año_Mes,
SKU as Sku,
UPC,
Categoría,
Unidades_Estandar
FROM [lib://Nuevos Datos/SnacksNuevo.xlsx]
(ooxml, embedded labels, table is New);
Store Snacks into [lib://QVD/Snacks.qvd]
(qvd);
Hola Gustavo,
Varias cosas que veo:
WHERE Not(Exists('DISTINTOS Mes Año', MesAño))
Espero que te sirva...
Saludos,
H
Hola Héctor.
Me ha sido de gran ayuda que me diste semanas atrás.
Pero me puse a limpiar y reacomodar el script que ahora no logro que me funciones de nuevo.
De repente no mantiene los datos históricos y solo presenta los nuevos. Esto hace que me borre los datos históricos de QVD y la app solo presenta los datos de la fuente donde está lo nuevo.
Espero me puedas ayudar con esto para entender que estoy haciendo mal.
Sin duda al foro también le será de mucha utilizadad.
Seguidamente te indico los pasos del Script.
Muchas gracias por tu valiosa ayuda.
//Script para datos Nuevos
Arroz_QVD:
LOAD
ApplyMap('mapSKUNew', UPC, Null()) as [Artículo],
DATE(MakeDate(Año,Mes.),'MMM-YYYY')as [MesAño],
makedate(Año,[Mes.]) as Fecha,
[Año],
[Mes.],
[Año_Mes],
[SKU],
[UPC],
APPLYMAP( 'Desc_PosMapping', [Desc_Pos]) AS Desc_Pos,
[Ventas_Unidades],
[Ventas_Valor],
FROM [lib://Nuevos Datos/Nuevos_Datos.xlsx]
(ooxml, embedded labels, table is Datos);
//Script para cargar QVD Histórico
LOAD DISTINCT
DATE(MakeDate(Año,Mes.),'MMM-YYYY') as [DISTINTOS Mes Año]
FROM [lib://QVD/Arroz.qvd]
(qvd);
LOAD
ApplyMap('mapSKU', UPC, Null()) as [Artículo],
DATE(MakeDate(Año,Mes.),'MMM-YYYY')as [MesAño],
makedate(Año,[Mes.]) as Fecha,
[Año],
[Mes.],
[Año_Mes],
[SKU],
[UPC],
APPLYMAP( 'Desc_PosMapping', [Desc_Pos]) AS Desc_Pos,
[Ventas_Unidades],
[Ventas_Valor],
FROM [lib://QVD/Arroz.qvd]
(qvd)
WHERE Not(Exists('DISTINTOS Mes Año', MesAño));
//Script para agregar los nuevos datos al QVD Histórico
Store Arroz_QVD into [lib://QVD/Arroz.qvd]
(qvd);