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: 
Thiago_Adriano
Contributor II
Contributor II

Campo de llamada con valor nulo

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
];

1 Reply
rubenmarin

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;