Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
jorge_redondo
Contributor III
Contributor III

Problema con filtro

Hola.

Agradecería una ayuda con esta consulta:

Tengo el siguiente gráfico de tabla en el que quiero mostrar sólo los productos que hayan tenido compras en el período especificado (y según los filtros establecidos). El problema es que me muestra todos los productos que han tenido movimientos de VENTA y como digo, la condición que quiero imponer es que ese producto haya tenido compras.

Si añado al Multi-Box el filtro "Unidades_Compradas" y filtro por Unidades_Compradas>0, filtra las compradas, pero en las ventas de esos mismos productos salen a CERO.

 

jorge_redondo_0-1706013746356.png

El modelo viene a ser:

jorge_redondo_1-1706013940688.png

Y la expresión que utilizo en la columna Unidades (CO, compras); (VE, ventas...):

jorge_redondo_2-1706014036727.png

 

 

3 Solutions

Accepted Solutions
rubenmarin

Hola, es difícil responder sin poder ver la tabla y hacer pruebas. Por si te sirve: la confición para comprobar si tiene compras (la que has puesto de ejemplo con el if) debería de estar en todas las expresiones, si una de las expresiones no la tiene intentará calcularse para todas las referencias, tanga o no compras, y eso hará que el valor de la dimensión salga para toda la tabla.

View solution in original post

jorge_redondo
Contributor III
Contributor III
Author

Gracias! era tan simple como eso. Anidar las otras expresiones en la expresión filtro de compras.. 

Un saludo y nuevamente gracias!

View solution in original post

rubenmarin

Buenas, para el caso de los totales 2 soluciones:

- Añadir un Aggr para que haga la condición por referencia:

Sum(Aggr(
If(Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0,
If(Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'}>} Unidades_Vendidas)<>0,
Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'}>} Unidades_Vendidas))).
,[NombreCampoReferencia]))

- Probar a añadir en todas las expresiones un set analysis que filtre los productos con ventas. 

If(Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'},[CampoReferencia]=P({<[CampoReferencia]={"=Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0"}>} [CampoReferencia])>} Unidades_Vendidas)<>0,
Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'},[CampoReferencia]=P({<[CampoReferencia]={"=Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0"}>} [CampoReferencia])>} Unidades_Vendidas)))

View solution in original post

5 Replies
jorge_redondo
Contributor III
Contributor III
Author

Lo que observo es que siempre que haya una referencia que haya registrado al menos, una compra,  una venta, o que ni aún siendo comprado ni vendido en ese período, tenga stock, esa referencia se mostrará. Como digo, lo que pretendo es que sólo muestre referencias con compras en el período y filtros especificados.

 

jorge_redondo_0-1706174199253.png

 

rubenmarin

Hola, es difícil responder sin poder ver la tabla y hacer pruebas. Por si te sirve: la confición para comprobar si tiene compras (la que has puesto de ejemplo con el if) debería de estar en todas las expresiones, si una de las expresiones no la tiene intentará calcularse para todas las referencias, tanga o no compras, y eso hará que el valor de la dimensión salga para toda la tabla.

jorge_redondo
Contributor III
Contributor III
Author

Gracias! era tan simple como eso. Anidar las otras expresiones en la expresión filtro de compras.. 

Un saludo y nuevamente gracias!

jorge_redondo
Contributor III
Contributor III
Author

Bueno, creo que me he precipitado un poco porque lo cierto es que el resultado no es correcto.

Al anidar las otras expresiones, no muestra las referencias que no se han comprado en el período especificado, pero las calcula igualmente en los totales. Como se ve, tanto en stock como en ventas, los totales no coinciden.

La expresión anidada que utilicé es:

//Si hay compras:

=If(Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0,

//Entonces, si hay ventas, mostrar ventas.
If(Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'}>} Unidades_Vendidas)<>0,
Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'}>} Unidades_Vendidas))).

 

Así con el resto de columnas.

 

 

 

jorge_redondo_0-1706183932524.png

 

rubenmarin

Buenas, para el caso de los totales 2 soluciones:

- Añadir un Aggr para que haga la condición por referencia:

Sum(Aggr(
If(Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0,
If(Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'}>} Unidades_Vendidas)<>0,
Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'}>} Unidades_Vendidas))).
,[NombreCampoReferencia]))

- Probar a añadir en todas las expresiones un set analysis que filtre los productos con ventas. 

If(Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'},[CampoReferencia]=P({<[CampoReferencia]={"=Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0"}>} [CampoReferencia])>} Unidades_Vendidas)<>0,
Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'},[CampoReferencia]=P({<[CampoReferencia]={"=Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0"}>} [CampoReferencia])>} Unidades_Vendidas)))