Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
juanma21
Contributor III
Contributor III

Problemas con sum aggr

Estimados,  tengo el siguiente problema, aplico el sum aggr a una tabla pivotante y no llego a los valores que estoy proponiendo, ya me siento mareado al combinar las formulas, espero su gran apoyo, de antemano muchas gracias.

1..png

=sum(aggr( ((sum(Importe) / sum(Cantidad)) / (sum(Importe_Ini) / sum(Cantidad_Ini)) * 100)

          * (sum(Importe) / sum(TOTAL Importe)) ,  Empresa, Tienda, Material, Fecha  ))

Estos serian los valores correctos:

Empresa 1            Empresa 2            Empresa 3

01/01/2017 102.05    01/01/2017  96.08    01/01/2017 102.47

05/01/2017  99.63    05/01/2017  99.59    05/01/2017 104.09

14/01/2017 100.37    14/01/2017  99.23    14/01/2017 103.17

27/01/2017 100.43    27/01/2017 101.43    27/01/2017 103.71

31/01/2017  99.92    31/01/2017  94.56    31/01/2017 102.89

1 Solution

Accepted Solutions
hector_munoz
Specialist
Specialist

Amigo mío... Me ha constado un huevo y parte del otro... pero creo que ya está:

=sum(aggr(

((sum(Importe) / sum(Cantidad)) / (sum(Importe_Ini) / Sum(Cantidad_Ini)) * 100)

* (sum(Importe) / Sum(TOTAL <Empresa,Fecha> Importe))

,  Empresa,Fecha,Tienda,Material  ))

Te paso el ejemplo; si alguna vez pasas por Madrid ya sabes a quien le debes una cervecita bien fría... ;-).

Saludos,

H

View solution in original post

5 Replies
hector_munoz
Specialist
Specialist

Hola Juan Manuel,

Prueba con la siguiente expresión:

=Sum(Aggr(((sum(Importe) / sum(Cantidad)) / (sum(Importe_Ini) / Sum(Cantidad_Ini)) * 100)

* (sum(Importe) / Sum(TOTAL Importe)), Tienda, Material))

, lo que hace es calcular para cada combinación de empresa (que está en la dimensión de la tabla), tienda y material (que están en el Aggr() de forma explícita) la métrica Indice y luego suma para cada empresa (puesto que está como dimensión en la tabla) todos los registros que tenga.

Te adjunto un ejemplo; espero que te sirva!

Saludos,

H

juanma21
Contributor III
Contributor III
Author

Hola Hector, he vuelto a replantear el caso, la solucion que das es para el total y lo necesito por item..

hector_munoz
Specialist
Specialist

Amigo mío... Me ha constado un huevo y parte del otro... pero creo que ya está:

=sum(aggr(

((sum(Importe) / sum(Cantidad)) / (sum(Importe_Ini) / Sum(Cantidad_Ini)) * 100)

* (sum(Importe) / Sum(TOTAL <Empresa,Fecha> Importe))

,  Empresa,Fecha,Tienda,Material  ))

Te paso el ejemplo; si alguna vez pasas por Madrid ya sabes a quien le debes una cervecita bien fría... ;-).

Saludos,

H

juanma21
Contributor III
Contributor III
Author

ja ja ja, gracias estimado Hector!!! Claro que si,esa cervecita ojala no se haga esperar, algún día viajare a la madre patria.

Pero explícame sobre esta formula Sum(TOTAL <Empresa,Fecha> Importe)), nunca se me hubiera ocurrido.

Saludos

JM

hector_munoz
Specialist
Specialist

Hola,

Con el Aggr estamos creando una tabla temporal con unas agrupaciones por Empresa, Fecha, Tienda y Material para obtener el índice con esta granularidad. Luego sumamos todo y, puesto que la tabla simple tiene una dimensiones Empresa y Fecha, lo distribuimos por Empresa Fecha y cada combinación tiene su índice.

El problema viene a la hora de calcular lo que cada registro con la granularidad anterior (Empresa, Fecha, Tienda y Material) "aporta" al total: Sum(Importe) / Sum(TOTAL Importe). Si no ponemos que en el divisor solo tenga en cuenta el importe total de la Empresa y Fecha (TOTAL <Empresa,Fecha>) a las que pertenece el registro, entonces nos va a sumar todas las de las selecciones actuales.


No sé si te lo aclaro o te lo complico aún más... Esto no es fácil; como te he puesto, me ha costado un rato sacarlo. Lo mejor es hacer pruebas con estas expresiones descomponiéndolas y creando nuevas para ir viendo si los componentes son los correctos. ¡Divide y vencerás!


Me alegro de que te haya servido!


Saludos,

H