Qlik Community

Qlik Design Blog

All about product and Qlik solutions: scripting, data modeling, visual design, extensions, best practices, etc.

Creator
Creator

The AGGR Function.....

Capture.JPG

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.


Thanks.

ABY

19 Comments
Contributor
Contributor

Hej

sounds interesting, I cant access the link however (not authorized).

thanks

Magnus

0 Likes
3,852 Views

Hi Magnus,

The document should be available now. Please check and get back to us if that does not work.

Kind regards.

Miguel

0 Likes
3,852 Views
Partner
Partner

Hi Adam,

Brilliant piece of blog...... great work

Regards,

Gabriel

0 Likes
3,852 Views
Partner
Partner

Great work!

Still two questions on AGGR that are not answered.

- What's the difference between "AGGR(DISTINCT" and "AGGR(NODISTINCT".  Has anyone a good example for this?

- According to the documentation one can place SET ANALYSIS in 3 different places in an AGGR expression. For example to create a SET for Year=2013:

avg({$<Year={2013}>}AGGR(DISTINCT {$<Year={2013}>} sum({$<Year={2013}>}  Sales),Country))

Are all  3 Sets necessary to retrieve the correct result?

3,852 Views
MVP & Luminary
MVP & Luminary

A trick somebody posted in a discussion on this site: use it in an expression for a listbox to hide the excluded items: aggr(FieldName,FieldName)

3,852 Views
Not applicable

An useful and simple place to use the AGGR function as a dimension is in a Multi Box, you're creating a "virtual and dynamic" new field that you can use to make selections.

0 Likes
3,852 Views