Skip to main content
Announcements
Announcing Qlik Talend® Cloud and Qlik Answers™ to accelerate AI adoption! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Problema con total (Aggr)

Tengo esta tabla simple (que por política de la empresa debo proteger la identidad de los clientes) donde :

CanalVs: son grupos

Rubros  : son subgrupos

Clientes

Prom. Trim. Ant.: son las ventas del trimestre anterior promediadas

Base  Trim. Ant.: sirve para comparación, se obtiene del [Prom. Trim. Ant.]/[Clientes que Compraron] * 0.5

$ Actual: ventas actuales

Indicador led: es verde cuando Base Trim. Ant. es menor (<) que $ Actual, siempre y cuando ninguno de ellos sea 0 (cero). Caso contrario será rojo.

Cumplen: debe contar los verdes

% Objetivo: [Cumplen] / [70% Client. del Canal], es decir, la cantidad de clientes que tienen indicador verde, dividido el 70% de la cantidad total de los clientes del CanalVs.

Mi problema es que no puedo contar correctamente los indicadores verdes, mas allá que si utilizo Propiedades de gráfico>Expresiones>Modo Total>Suma me muestra el resultado correcto, de nada me sirve porque después necesito una expresión para obtener [% Objetivo] .

Imagen1.png

Estoy utilizando sin éxito para [Cumplen]:

Sum (Aggr(

If( Sum(Ventas) <

  ((Sum(Total <CanalVs> {$<Mes={$(=Only(Mes)-3)}>}Ventas) +

    Sum(Total <CanalVs> {$<Mes={$(=Only(Mes)-2)}>}Ventas) +

    Sum(Total <CanalVs> {$<Mes={$(=Only(Mes)-1)}>}Ventas))/ 3)/

count(TOTAL <CanalVs> {$<Mes={[>=$(=only(Mes)-3)]}>}DISTINCT  Clientes) * 0.5

, 0,1), Clientes))

1 Solution

Accepted Solutions
Not applicable
Author

Hola.

El aggr en una tabla simple lo debes utilizar de acuerdo a las dimensiones que tiene tu tabla y siguiendo su mismo orden.

Asumiedo que tu promedio ya esta calculado.

Expresiones:

Promedio:

Sum(Promedio)

Venta:

Sum(Venta)

Indicador:

sum(Aggr(if(sum(Venta)<sum(Promedio),0,1),Grupo,Producto,Cliente)

Agg:

Aggr(if(sum(Venta)<sum(Promedio),0,1),Cliente)

Agg2:

Aggr(if(sum(Venta)<sum(Promedio),sum(Venta),sum(Promedio)),Cliente)

Aggr.JPG.jpg

- La expresion "Agg" tiene la misma logica que estas aplicando a tu expresion para contar la cantidad de tu indicador led. Si te das cuenta el calculo es errado, eso es por que los "Aggr" crea un tabla logica agrupada y solo estas agrupando por cliente.

- La expresion "Agg2" en vez de 0 y 1, se esta colocando sum(ventas) y sum(promedio), para que veas la cantidad que agrupa segun cliente.

La suma del promedio agrupado por cliente A es 1400 y venta es 1200, segun la expresion (ventas<promedio) si es verdadero me va dar 1200 y si es falso 1400, este resultado se va poner en la ultima linea del campo cliente A.

La suma del promedio agrupado por cliente B es 400y venta es 600, segun la expresion (ventas<promedio) si es verdadero me va dar 600 y si es falso 400, este resultado se va poner en la ultima linea del campo cliente B.

-La expresion "Indicador" va agrupar segun la secuencia que tienes en tu tabla simple obteniendo los resultados segun la logica y esto permitira totalizarlo.

Nota:

Trata de agregarle dimensiones a tu agrupacion que indicas segun tu expresion.

Sum (Aggr(

If( Sum(Ventas) <

  ((Sum(Total <CanalVs> {$<Mes={$(=Only(Mes)-3)}>}Ventas) +

    Sum(Total <CanalVs> {$<Mes={$(=Only(Mes)-2)}>}Ventas) +

    Sum(Total <CanalVs> {$<Mes={$(=Only(Mes)-1)}>}Ventas))/ 3)/

count(TOTAL <CanalVs> {$<Mes={[>=$(=only(Mes)-3)]}>}DISTINCT  Clientes) * 0.5

, 0,1), CanalVs,Cod,Rubros,Clientes)).


Espero te sirva.


Atte.


Luis.

View solution in original post

2 Replies
Not applicable
Author

Hola.

El aggr en una tabla simple lo debes utilizar de acuerdo a las dimensiones que tiene tu tabla y siguiendo su mismo orden.

Asumiedo que tu promedio ya esta calculado.

Expresiones:

Promedio:

Sum(Promedio)

Venta:

Sum(Venta)

Indicador:

sum(Aggr(if(sum(Venta)<sum(Promedio),0,1),Grupo,Producto,Cliente)

Agg:

Aggr(if(sum(Venta)<sum(Promedio),0,1),Cliente)

Agg2:

Aggr(if(sum(Venta)<sum(Promedio),sum(Venta),sum(Promedio)),Cliente)

Aggr.JPG.jpg

- La expresion "Agg" tiene la misma logica que estas aplicando a tu expresion para contar la cantidad de tu indicador led. Si te das cuenta el calculo es errado, eso es por que los "Aggr" crea un tabla logica agrupada y solo estas agrupando por cliente.

- La expresion "Agg2" en vez de 0 y 1, se esta colocando sum(ventas) y sum(promedio), para que veas la cantidad que agrupa segun cliente.

La suma del promedio agrupado por cliente A es 1400 y venta es 1200, segun la expresion (ventas<promedio) si es verdadero me va dar 1200 y si es falso 1400, este resultado se va poner en la ultima linea del campo cliente A.

La suma del promedio agrupado por cliente B es 400y venta es 600, segun la expresion (ventas<promedio) si es verdadero me va dar 600 y si es falso 400, este resultado se va poner en la ultima linea del campo cliente B.

-La expresion "Indicador" va agrupar segun la secuencia que tienes en tu tabla simple obteniendo los resultados segun la logica y esto permitira totalizarlo.

Nota:

Trata de agregarle dimensiones a tu agrupacion que indicas segun tu expresion.

Sum (Aggr(

If( Sum(Ventas) <

  ((Sum(Total <CanalVs> {$<Mes={$(=Only(Mes)-3)}>}Ventas) +

    Sum(Total <CanalVs> {$<Mes={$(=Only(Mes)-2)}>}Ventas) +

    Sum(Total <CanalVs> {$<Mes={$(=Only(Mes)-1)}>}Ventas))/ 3)/

count(TOTAL <CanalVs> {$<Mes={[>=$(=only(Mes)-3)]}>}DISTINCT  Clientes) * 0.5

, 0,1), CanalVs,Cod,Rubros,Clientes)).


Espero te sirva.


Atte.


Luis.

Not applicable
Author

Luis, un verdadero amigo. Muchas gracias por tu tiempo y paciencia para explicarle a un principiante.

Muy bien explicado! Muchas gracias de nuevo. Saludos