Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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.
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.
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)
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.
gracias
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
@Raskolnikov ¡Excelente! Me alegra ver que te ayudó el code arriba. Favor de marcarlo como la respuesta cuando pueda.
@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
Gracias, lo probare luego y te cuento. Mil gracias 🙂
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
Si le saco el :
"MIN" no me tira error 😞