Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola a todos. Estoy haciendo un informe en Qlik Sense que pensé que iba a resultar más fácil pero me está costando horrores.
Se trata de comparar las unidades vendidas entre un año y el anterior, viéndolo por productos.
Las unidades se calculan dependiendo de si el producto es pesable (kgs) o NO:
Producto pesable = Kilogramos / (peso_promedio*unidades_por_caja)
Producto NO pesable = cantidad* unidades_por_caja
entonces:
unidades = if(pesable=1, Sum(Kilogramos) / (peso_promedio*unidades_por_caja), Sum(cantidad* unidades_por_caja)
para el año anterior hago
unidades = if(pesable=1, Sum({$<año={$(=Max(año)-1)}>}Kilogramos) / (peso_promedio*unidades_por_caja), Sum({$<año={$(=Max(año)-1)}>}cantidad* unidades_por_caja)
El cálculo parece hacerlo bien, pero el problema es que cuando hay productos que no se vendieron en 2018, pero si en 2017, entonces devuelve 0 (cero) o null.
Alguien me puede ayudar?
La formula la evalúa en la dimensión (ID_producto), Max(año) en los productos donde no se compró tiene valor nulo.
Si tienes campos derivados de autocalendario sería más práctico algo del tipo:
if(pesable=1, Sum(Kilogramos) / (peso_promedio*unidades_por_caja), Sum(cantidad* unidades_por_caja)*CYTD
if(pesable=1, Sum(Kilogramos) / (peso_promedio*unidades_por_caja), Sum(cantidad* unidades_por_caja)*LYTD
Donde CYTD y LYTD son flags creadas en la carga de datos.
Mira esto:
Hola Walter, parece que al filtrar por año se pierdo el acceso a alguno de los datos necesarios, seguramente a peso_promedio y/o unidades_por_caja. Puede que haya que aplicarlo a pesable.
La función Only() sirve para devolver un valor sin función de agregación (Sum, Avg...) y permite aplicar un set analysis:
Only({$<año={$(=Max(año)-1)}>} peso_promedio*unidades_por_caja)
Intenté SIN éxito:
if(pesable=1,
Sum({$<año={$(=Max(año)-1)}>} Kilogramos) / Only({$<año={$(=Max(año)-1)}>} peso_promedio * unidades_por_caja),
Sum({$<año={$(=Max(año)-1)}>}cantidad * Only({$<año={$(=Max(año)-1)}>} unidades_por_caja))
Por lo que puedo observar en el detalle de una tabla simple, veo que el IF de la fórmula evalúa algunos productos que son pesables como NO pesables porque no tienen ventas en el año 2018. Cómo puedo evitar eso?
Puedes probar con:
If(Only({$<año={$(=Max(año)-1)}>} pesable)=1,...
Con esa expresión sí funciona! Muchas gracias Ruben Marin