I thought I would start this blog post with a simple multiple choice question:
Is AGGR.....
a - Used in many QlikView applications to great effect b - Mis-used in many QlikView applications c - Used to return an answer without really knowing why you get the answer d - Not used at all because we're "not quite sure what is does" e - All of the above
The answer in my opinion is "e - All of the above".
When I came to write this post and indeed the technical brief, the hardest part of all was actually coming up with a really good, easy to understand description of AGGR, as it has to make sense to both "technical" and "not so technical" people. I finally settled on the one below...
When it is used, the AGGR function produces a virtual table, with one expression and grouped by one or more dimensions. The contents / result of this virtual table can then be used / aggregated by a further outer aggregation function(s).
With this definition in mind, I have produced a Technical Brief and application which can be found here and here. In this document I have tried to provide an overview of the function and provided some examples of where it can be used to great effect.
So, when should you use AGGR? The answer is: Whenever you want to perform an aggregation in two steps. In the technical brief we show you some scenarios like.....
Largest average order value for each Salesperson for each Country, where average order value for each Salesperson is the first calculation and the largest in each Country is the second.
The Salesperson responsible for the largest average order value in each Country
How many Salespeople have average order values of less than $100 in each Country
I would also be interested in any other creative and powerful uses of AGGR you may have.
Adam, thank you for the comprehensive explanation of aggr(). I wish this documentation had been part of the online help when aggr() was introduced, because then it wouldn't have taken me so long to figure out how it works and when to use it. This document should clear away some of the "aggravation".
Thanks for posting the article. I am not sure of whether or not I should ask this question here, so I'll apologize in advance and ask for assistance with the following issue that I am facing when using AGGR in what I expected to be a very simple expression - which is not showing the results I think I should get.
In the pivot table on the left side of the image bellow, you will find generated sales data for sales people over a four month period. If you look at data for one of the salesmen, say "T", and mentally calculate the average number of sales for the four month period, it would come to be 5.5. However, if I use AGGR to do this calculation as a second expression in the chart and table to the right (using only Salesman as dimension) the value will not be correct (QV calculates it to be 54.3636). Furthermore, if one selects the value of "T" for Salesman, the avg is calculated to be 5.9. If I remove the nodistinct parameter from aggr, only three of the sales people will show results (O, P and T), but still all incorrect. However, selecting any of the three sales people which appear to have (incorrect) results will further show its correct value for the average number of sales transactions per month.