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

Announcements
Now accepting applications for the Qlik Luminary and Partner Ambassador Programs: Apply by July 6!
cancel
Showing results for 
Search instead for 
Did you mean: 
alex_millan
Creator III
Creator III

Diferentes expresiones dependiendo del valor de una dimensión

Hola a todos,

necesitaría crear un gráfico funnel según el siguiente ejemplo:

La dimensión sería el campo 'Metric' que defino en el script de la forma siguiente:

Metrics_1:

LOAD * INLINE [

    Metric, Expression

    METRIC_1, (Count({<$(vSetMETRIC_1)>}PHONE)-Count({<$(vSetMETRIC_2)>}PHONE))/Count({<$(vSetMETRIC_1)>}PHONE)

    METRIC_2, (Count({<$(vSetMETRIC_2)>}PHONE)-Count({<$(vSetMETRIC_3)>}PHONE))/Count({<$(vSetMETRIC_1)>}PHONE)

    METRIC_3, (Count({<$(vSetMETRIC_3)>}PHONE)-Count({<$(vSetMETRIC_4)>}PHONE))/Count({<$(vSetMETRIC_1)>}PHONE)

    METRIC_4, (Count({<$(vSetMETRIC_4)>}PHONE)-Count({<$(vSetMETRIC_5)>}PHONE))/Count({<$(vSetMETRIC_1)>}PHONE)

    METRIC_5, Count({<$(vSetMETRIC_5)>}PHONE)/COUNT({<$(vSetMETRIC_1)>}PHONE)

];

Las variables set ya las tengo definidas en el script pero no se cómo utilizar las expresiones en el gráfico.

Agradecería cualquier ayuda o sugerencia.

Un saludo,

1 Solution

Accepted Solutions
alex_millan
Creator III
Creator III
Author

Mi estructura de datos es diferente, ya que no dispongo de campos como Accion, Modo o Resultado, si no que tengo un código de finalización de cada acción.

Para contabilizar las acciones utilizo una serie de variables preparadas para el conteo con expresiones set.

Al final he resuelto el tema mediante:

- Una dimensión calculada (tal y como me habías sugerido):

=ValueList('Acciones finalizadas positivas con venta', 'Resto acciones finalizadas positivas', 'Resto acciones finalizadas', 'Resto acciones')

- Una expresión usando las funciones Pick y Match:

pick(match(

  ValueList('Acciones finalizadas positivas con venta', 'Resto acciones finalizadas positivas', 'Resto acciones finalizadas', 'Resto acciones')

  ,'Acciones finalizadas positivas con venta', 'Resto acciones finalizadas positivas', 'Resto acciones finalizadas', 'Resto acciones'

  )

      ,Count({<$(vSet_Sales_Positive_Ended_Actions)>}Action_ID)/Count(Action_ID)

      ,(Count({<$(vSet_Positive_Ended_Actions)>}Action_ID)-Count({<$(vSet_Sales_Positive_Ended_Actions)>}Action_ID))/Count(Action_ID)

      ,(Count({<$(vSet_Ended_Actions)>}Action_ID)-Count({<$(vSet_Positive_Ended_Actions)>}Action_ID))/Count(Action_ID)

      ,(Count(Action_ID)- Count({<$(vSet_Ended_Actions)>}Action_ID))/Count(Action_ID)

)

Muchas gracias Joaquín, tu sugerencia me ha marcado el camino correcto para solucionarlo!

Un saludo

View solution in original post

8 Replies
Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Hola Alex.Millan:

Un funnel necesita una dimensión y una expresión, opcionalmente una segunda expresión puede aportar datos en forma de texto emergente.

No entiendo si quieres mantener una dimensión analizando diferentes expresiones, o si quieres analizar la misma expresión para diferentes dimensiones.

Puedes intentar explicar un poco más el objetivo

Saludos,

Joaquín

alex_millan
Creator III
Creator III
Author

Gracias Joaquín Lázaro,

como caso ficticio, imagina que tenemos un conjunto de acciones efectuadas y se distribuyen de la siguiente manera:

- Acciones:

     - No finalizadas

     - Finalizadas:

          - Negativas

          - Positivas

               - Sin venta

               - Con venta

E imaginemos que queremos mostrar en el funnel:

          % Acciones finalizadas positivas con venta

          % Resto acciones finalizadas positivas

          % Resto acciones finalizadas

          % Resto acciones

Podría hacerlo sin problemas si no seleccionara una dimensión y creara diferentes expresiones para cada uno de los cuatro porcentajes finales, pero de esta manera no podría hacer que se mostraran los valores para cada uno de ellos (sólo mostraría los de la primera expresión).

Por eso quería ver si lo solucionaba mediante la dimensión creada en el script y su métrica asociada pero quizás hay alguna otra aproximación para conseguirlo y no se me ocurre.


En verdad cualquier sugerencia será bienvenida.

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Fantástico el ejemplo, además me interesa ese caso.

Te voy a dar las ideas y tú ajustas la sintaxis

Parte 1: Crear una dimensión calculada con la combinación de estados y subestados.

IF (Accion = 'NF', 'NF',

     IF (Accion = 'F' and Modo = Negativa, 'FN', 

          IF (Accion = 'F' and Modo = Positiva and Resultado = 'Venta', 'FPV', 

               IF (Accion = 'F' and Modo = Positiva and Resultado = 'No Venta', 'FPNV')))) as Resultado


Parte 2: Creas una expresión múltiple siguiendo el patrón del LOAD INLINE


IF (Resultado = 'NF', Count(NF),

     IF (Resultado = 'FN', Count(FN),

          IF (Resultado = 'FPV', Count(FPV),

               IF (Resultado = 'FPNV', Count(FPNV)))))


Los count(****) tendrás que ajustarlos a tus necesidades, seguramente necesitarás funciones de agrupación para poder calcular los porcentajes.


Saludos,

Joaquín

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Creo que si divides por el total tienes todos los porcentajes.

IF (Resultado = 'NF', Count(NF)/Count(Resultados),

     IF (Resultado = 'FN', Count(FN)/Count(Resultados),

          IF (Resultado = 'FPV', Count(FPV)/Count(Resultados),

               IF (Resultado = 'FPNV', Count(FPNV)/Count(Resultados)))))


Ahora pones todo esto en el horno y preparas el gráfico

alex_millan
Creator III
Creator III
Author

Sí, iré preparando el horno 😉

Para ajustarlo a mi modelo necesitaré algo de tiempo (tiene algunas peculiaridades) pero lo pruebo y te comento como me ha ido.

Y si funciona y encuentro algo de tiempo, preparo un ejemplo para subirlo y así lo tenemos como referencia.

Muchas gracias Joaquín!

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

De nada.

Qué tengas suerte

alex_millan
Creator III
Creator III
Author

Mi estructura de datos es diferente, ya que no dispongo de campos como Accion, Modo o Resultado, si no que tengo un código de finalización de cada acción.

Para contabilizar las acciones utilizo una serie de variables preparadas para el conteo con expresiones set.

Al final he resuelto el tema mediante:

- Una dimensión calculada (tal y como me habías sugerido):

=ValueList('Acciones finalizadas positivas con venta', 'Resto acciones finalizadas positivas', 'Resto acciones finalizadas', 'Resto acciones')

- Una expresión usando las funciones Pick y Match:

pick(match(

  ValueList('Acciones finalizadas positivas con venta', 'Resto acciones finalizadas positivas', 'Resto acciones finalizadas', 'Resto acciones')

  ,'Acciones finalizadas positivas con venta', 'Resto acciones finalizadas positivas', 'Resto acciones finalizadas', 'Resto acciones'

  )

      ,Count({<$(vSet_Sales_Positive_Ended_Actions)>}Action_ID)/Count(Action_ID)

      ,(Count({<$(vSet_Positive_Ended_Actions)>}Action_ID)-Count({<$(vSet_Sales_Positive_Ended_Actions)>}Action_ID))/Count(Action_ID)

      ,(Count({<$(vSet_Ended_Actions)>}Action_ID)-Count({<$(vSet_Positive_Ended_Actions)>}Action_ID))/Count(Action_ID)

      ,(Count(Action_ID)- Count({<$(vSet_Ended_Actions)>}Action_ID))/Count(Action_ID)

)

Muchas gracias Joaquín, tu sugerencia me ha marcado el camino correcto para solucionarlo!

Un saludo

Anonymous
Not applicable

Vamos Alex, estamos esperando el ejemplo de tán brillante aplicación del bar chart !

SaludoS