Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
walterlh
Creator II
Creator II

INDICADOR EN TABLA DINAMICA

hola equipo! quisiera saber  como puedo referirme a un subtotal o total de una tabla dinámica ya que estoy trabajando en una. Tengo que obtener un "Modelo de ventas" que se obtiene de las ventas del mes anterior dividido la cantidad de clientes que han participado. Ese total debe ser único al momento de compararlo con las Ventas actuales y si el primero es menor que el segundo, entonces pondré un indicador de imagen verde y sino será uno Rojo.

Aquí un ejemplo:

Si durante el mes anterior los clientes compraron:

- Juan..... $120

- Pedro.....$500

- Ana.......$380

Total de ventas del mes anterior = $1000

Durante el mes actual:

- Juan..... $1500

- Pedro.....$200

- Ana.......$3500

Modelo de ventas es :

1000 / 3= $333,33

Es decir que debemos comparar:

- Juan..... $1500 es mayor o menor a 333,33?

- Pedro.....$200 es mayor o menor a 333,33?

- Ana.......$3500 es mayor o menor a 333,33?

y concluimos que:

- Juan..... Verde

- Pedro.....Rojo

- Ana.......Verde.

Intenté hacer un sum(Aggr(Sum({$<Mes={$(=Only(Mes)-1)}>}Importe)) y me da como resultado el correcto, pero al momento de utilizarlo para obtener los indicadores de colores ya no me da correctamente.

Espero que puedas sacarme de este atasco!

saludos

1 Solution

Accepted Solutions
Not applicable

Hola Walter.

He leído tu inquietud y en base a eso he realizado una prueba.

Script

Ventas:

LOAD * INLINE [

    Cliente, Mes, Importe

    Juan, 11, 1500

    Pedro, 11, 200

    Ana, 11, 3500

    Juan, 10, 120

    Pedro, 10, 500

    Ana, 10, 380

    Juan, 9, 200

    Pedro, 9, 400

    Ana, 9, 300

];

Cuadro de selección

Mes

Variable

=round(sum({<Mes={$(=Max(Mes-1))}>}Importe)/count({<Mes={$(=Max(Mes-1))}>}Cliente),0.01)

Tabla Simple

Dimensión

Cliente

Expresión

Ventas

sum({<Mes={$(=Max(Mes))}>}Importe)

Prom Mes Anterior

=$(vProm)

Indicador

if(sum({<Mes={$(=Max(Mes))}>}Importe)<$(vProm),'qmem://<bundled>/BuiltIn/led_r.png','qmem://<bundled>/BuiltIn/led_g.png')


Propiedades de la expresión

Representación=Imagen

Formato de imagen = Mantener Aspecto

Mayor al promedio

sum(Aggr(if(sum({<Mes={$(=Max(Mes))}>}Importe)<$(vProm),0,1),Cliente))

Imagen

Ana.JPG.jpg

Detalle:

- La expresión Ventas asume los importes del máximo mes, hasta que exista una selección de la lista Mes.

- La expresión Promedio Mes Anterior es calculado por una variable; la variable determina el promedio del mes anterior. El fin de poner la expresión en una variable y no dentro de la expresión de la tabla, es para que el calculo no cambie de acuerdo a la dimensión cliente. En caso no se quiera utilizar la variable y poner la formula dentro de la tabla se tendría que utilizar el "$".

=$(=round(sum({<Mes={$(=Max(Mes-1))}>}Importe)/count({<Mes={$(=Max(Mes-1))}>}Cliente),0.01))

- La expresión Indicador es de tipo imagen en la cual con un "IF" se puede indicar que imagen poner, dicha expresión evalúa si el Ventas < Promedio Mes Anterior.

-La expresión Mayor al Promedio cuenta los que son mayores.

Espero te ayude.

Luis Valencia.

View solution in original post

4 Replies
pljsoftware
Creator III
Creator III

Hola Walterlh,

si la expresión te da el valor correcto 333,33 tienes che hacer la comparación y intentar tener un numero 1 o 0 para que los indicatores te dean el valor correcto.

Sin un ejemplo donde pueda ver los datos y la tabla es dificil ayudarte más.

Saludos

Luca Jonathan Panetta

walterlh
Creator II
Creator II
Author

Hola Panetta, gracias por tu comentario. Lo que no puedo averiguar es como obtener esos 333,33

pljsoftware
Creator III
Creator III

Hola Walterlh,

perdona ¿la expresión sum(Aggr(Sum({$<Mes={$(=Only(Mes)-1)}>}Importe)) te vuelve los valores

- Juan..... $120

- Pedro.....$500

- Ana.......$380

?

Necesitas contar el numero totales de clientes Count(TOTAL Clientes)

Ahora harás

sum(Aggr(Sum( {$<Mes={$(=Only(Mes)-1)}>}Importe)) / Count(TOTAL Clientes)


Si pones un ejemplo en qvw intento solucionar el problema.


Saludos

Luca Jonathan Panetta

Not applicable

Hola Walter.

He leído tu inquietud y en base a eso he realizado una prueba.

Script

Ventas:

LOAD * INLINE [

    Cliente, Mes, Importe

    Juan, 11, 1500

    Pedro, 11, 200

    Ana, 11, 3500

    Juan, 10, 120

    Pedro, 10, 500

    Ana, 10, 380

    Juan, 9, 200

    Pedro, 9, 400

    Ana, 9, 300

];

Cuadro de selección

Mes

Variable

=round(sum({<Mes={$(=Max(Mes-1))}>}Importe)/count({<Mes={$(=Max(Mes-1))}>}Cliente),0.01)

Tabla Simple

Dimensión

Cliente

Expresión

Ventas

sum({<Mes={$(=Max(Mes))}>}Importe)

Prom Mes Anterior

=$(vProm)

Indicador

if(sum({<Mes={$(=Max(Mes))}>}Importe)<$(vProm),'qmem://<bundled>/BuiltIn/led_r.png','qmem://<bundled>/BuiltIn/led_g.png')


Propiedades de la expresión

Representación=Imagen

Formato de imagen = Mantener Aspecto

Mayor al promedio

sum(Aggr(if(sum({<Mes={$(=Max(Mes))}>}Importe)<$(vProm),0,1),Cliente))

Imagen

Ana.JPG.jpg

Detalle:

- La expresión Ventas asume los importes del máximo mes, hasta que exista una selección de la lista Mes.

- La expresión Promedio Mes Anterior es calculado por una variable; la variable determina el promedio del mes anterior. El fin de poner la expresión en una variable y no dentro de la expresión de la tabla, es para que el calculo no cambie de acuerdo a la dimensión cliente. En caso no se quiera utilizar la variable y poner la formula dentro de la tabla se tendría que utilizar el "$".

=$(=round(sum({<Mes={$(=Max(Mes-1))}>}Importe)/count({<Mes={$(=Max(Mes-1))}>}Cliente),0.01))

- La expresión Indicador es de tipo imagen en la cual con un "IF" se puede indicar que imagen poner, dicha expresión evalúa si el Ventas < Promedio Mes Anterior.

-La expresión Mayor al Promedio cuenta los que son mayores.

Espero te ayude.

Luis Valencia.