Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Mi pregunta es muy simple de resolver en Excel, pero en Qlik no puedo encontrar una solución, espero resolverla aquí.
Estoy tratando de colocar el "COMPONENTE" que no aparece en la lista ese día en la tabla de hechos, llevándolo con "QTY" = 0.
Que en el siguiente ejemplo, sería COMPONENTE = 5845503 el DATE = 27/07/2020 porque es el único que falta.
Hecho:
LOAD * INLINE [
FECHA, PRODUCTO, COMPONENTE, CANTIDAD
27/07/2020.58455,5845501.50
27/07 / 2020,58455,5845502,60
28/07 / 2020,58455,5845501,100
28/07 / 2020,58455,5845502,100
28/07 / 2020,58455,5845503,55
];
Registrarse:
LOAD * INLINE [
PRODUCTO, COMPONENTE
58455,5845501
58455,5845502
58455,5845503
];
Hola, una opción es crear todas las combinaciones posibles con un Outer Join entre tablas con campos distintos y añadir al script las que falten usando Exists():
// Datos originales, se añade una clave apr indentificar los registros que falten
Datos:
LOAD
*,
FECHA&'_'&PRODUCTO&'_'&COMPONENTE as chkClave
INLINE [
FECHA, PRODUCTO, COMPONENTE, CANTIDAD
27/07/2020,58455,5845501,50
27/07/2020,58455,5845502,60
28/07/2020,58455,5845501,100
28/07/2020,58455,5845502,100
28/07/2020,58455,5845503,55
];
// Crear las combinaciones entre las fechas y la combinación de producto y componente
Cartesiano:
LOAD Distinct FECHA
Resident Datos;
Outer Join (Cartesiano)
LOAD Distinct PRODUCTO, COMPONENTE
Resident Datos;
// Añadir a la tabla original los datos que no existan
Concatenate (Datos)
LOAD
FECHA,
PRODUCTO,
COMPONENTE,
0 as CANTIDAD
Resident Cartesiano
Where not Exists('chkClave', FECHA&'_'&PRODUCTO&'_'&COMPONENTE);
DROP Field chkClave;
DROP Table Cartesiano;