Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Connect 2026 Agenda Now Available: Explore Sessions
cancel
Showing results for 
Search instead for 
Did you mean: 
Raskolnikov
Contributor III
Contributor III

Ayuda con filtro

Tengo un listado de Personas Cd_ Noob con su codigo (llave).

Cada una a vendido alguno de estos 5 tipos de productos distintos Cd_Producto (1,2,3,4,5) (algunas solo 1, o 1 y 2, etc). El universo de productos es mucho mayor.

Cada una tiene 4 tipos de alternativas de lugares de venta: Cd_TipoDestino (0,1,2,3)

Lo que necesito es tener como producto un listado de las Personas que NO hayan vendido productos al lugar de venta 0. En una tabla que me indique si la Persona cumple o no cumple con le requerimiento de no haber pasado por destino = 0. Si en cualquiera de estos 5 productos este se fue al lugar 0, la persona debe quedar de inmediato marcada con la bandera No aplica. No obstante no quiero perder de vista aquellas personas que han vendido cualquiera de estos 5 productos en otro lugar diferente de 0, y que ellos aparezcan con la etiqueta aprobados.

He intentado un campo en una tabla asi:

If((Cd_TipoDestino <> 0 ), 'Aprobada', 'No Aplica')

Sin embargo, me lista a Personas como No aplica, siendo que no gran tenido destino 0, pero si han tenido mas de un destino (1 y 2)

Si alguien pudiese ayudarme muchas gracias.

Me declaro noob xD

1 Solution

Accepted Solutions
andoryuu
Creator III
Creator III

Si yo tengo data como esto ¿cómo quiere que aparezca cada persona?  Debe Juan aparecer como “No Aplica” o “Aprobada”?  Si quiere que Juan aparezca como "No Aplica" por el hecho de que el tiene un Cd_TipoDestino de 0 AUNQUE tiene uno de valor 1 también su measure seria "=if(min(Cd_TipoDestino)=0,'No Aplica','Aprobada')".  Si solamente debe aparecer Jaime como "No Aplica" porque tiene solo valores de 0 su measure seria "=if(max(Cd_TipoDestino)=0,'No Aplica','Aprobada')".  Si malentiendo favor de proveer un screenshot que aclara su data y meta.

image.png

View solution in original post

10 Replies
andoryuu
Creator III
Creator III

Si yo tengo data como esto ¿cómo quiere que aparezca cada persona?  Debe Juan aparecer como “No Aplica” o “Aprobada”?  Si quiere que Juan aparezca como "No Aplica" por el hecho de que el tiene un Cd_TipoDestino de 0 AUNQUE tiene uno de valor 1 también su measure seria "=if(min(Cd_TipoDestino)=0,'No Aplica','Aprobada')".  Si solamente debe aparecer Jaime como "No Aplica" porque tiene solo valores de 0 su measure seria "=if(max(Cd_TipoDestino)=0,'No Aplica','Aprobada')".  Si malentiendo favor de proveer un screenshot que aclara su data y meta.

image.png

Raskolnikov
Contributor III
Contributor III
Author

Ese es mas o menos el resumen grafico.

Necesito que me entregue una tabla con el nombre de la "persona" y el "resultado final"

Son muchas personas (miles)

 

Raskolnikov
Contributor III
Contributor III
Author

Este es un resumen grafico que puede explicar mas o menos lo que tengo y necesito. Cabe aclarar que son muchas personas. La información la saco de varias tablas.

Necesito generar una tabla en Qlik donde me salga el Numero de la persona y su "Resultado Final", Intente con el If() que puse en le primer post pero no me funciono cuando una persona tenia mas de un Destino aunque fueran distintos de 0.

qlik02.png

gracias

Raskolnikov
Contributor III
Contributor III
Author

Probe con 

=if(min(Cd_TipoDestino)=0,'No Aplica','Aprobada')

Y me funciono 🙂 Muchas gracias

En este caso tuve suerte porque el valor 0 era el menor. Pero que hubiese pasado si hubiese querido que en vez de los 0 fueran los 2??

 

Muchas gracias

andoryuu
Creator III
Creator III

@Raskolnikov  ¡Excelente!  Me alegra ver que te ayudó el code arriba.  Favor de marcarlo como la respuesta cuando pueda. 

andoryuu
Creator III
Creator III

@Raskolnikov  También para contestar su pregunta en cuanto a un valor diferente que no se puede discernir por agregar a los valores se puede usar el code abajo para seleccionar el valor exacto y usar solo el valor (o valores) especificas en su función de match(). Probé esto en un app mío y salió bien.


=if(sum(if(match(Cd_TipoDestino,2),1,0))>0,'No Aplica','Aprobada')

Es un poco feo y usa a if() dos veces, pues, será lento si se usa con un tamaño grande de data. Si es posible yo recomiendo discerniendo este valor de “no aplica” y “aprobada” en el data load especialmente si está sacando el data de un archivo de datos de SQL y puede usar un OVER() para probar data agregada de un nivel mas agrupado que el nivel de la fila corriente de data.

Aquí hay ejemplo de como hacerlo en SQL y después podría agruparlo por “Detalle”

SELECT nombre, Cd_TipoDestino
, CASE WHEN SUM(CASE WHEN Cd_TipoDestino = 2 THEN 1 ELSE NULL END) OVER(PARTITION BY nombre ORDER BY nombre) > 0 THEN 'No Aplica' ELSE 'Aprobado' END as Detalle
FROM #temp

Raskolnikov
Contributor III
Contributor III
Author

Gracias, lo probare luego y te cuento. Mil gracias 🙂

Raskolnikov
Contributor III
Contributor III
Author

Hola

Estaba probando incluir la evaluacion en el script sin embargo me da un error.

LOAD

..................

Cd_TipoDestino,
if(min(Cd_TipoDestino)=0,'No Aplica','Aprobada') as Asdfg,

FROM ..................

 

Puedo a partir de la evaluacion del IF guardar el resultado en este nuevo campo Asdfg ???

 

Saludos

Raskolnikov
Contributor III
Contributor III
Author

Si le saco el :

"MIN" no me tira error 😞