Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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
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.
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
Hola Panetta, gracias por tu comentario. Lo que no puedo averiguar es como obtener esos 333,33
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
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
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.