Skip to main content
ArturoMuñoz
Employee
Employee

Dear Qlik friends & family,

 

I’m very pleased to announce that one of our very favorite functions has been finally upgraded with a nice and longtime requested functionality. Aggr() virtual table is now sortable!

 

Note: For those of you not familiar with what Aggr() is and what can do for you, please review the following materials:

 

 

Despite the fact that we have been able to do some crazy stuff with Aggr(), every time we wanted to explore the possibilities of inter-record or range functions we faced a wall, Aggr() array of values couldn’t be sorted by any means. You couldn’t control how the data was ‘stored’ in the aggr() virtual table (load order by default) making it hardly usable for a variety of cases such as cumulative calculations, inter-record and range calculations, etc.

 

Aggr syntax used to be like:

 

    Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, dim{, dimension})

 

What's new?

 

From now on, we count in with a brand new Aggr() chart function that allows us to sort the resulting array (both in Qlik Sense 2.2 and QlikView 12*). The magic happens in the new StructuredParameter.

 

Syntax is now as following:

 

    Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})

 

A StructuredParameter is a combination of a dimension, and optionally the all new sorting method.

 

StructuredParameter syntax is as follow:

 

     1 StructuredParameter:  (FieldName, (NUMERIC, ASCENDING))

     2 StructuredParameters: (FieldName,(Field2Name,(FREQUENCY,DESCENDING)))

 

An Aggr() array can contain virtually anything so you have to specify what data type will be sorted within the array of data (numeric, text, frequency or Load_Order) and the sort criteria, basically ASC or DESC. I strongly recommend you to check the Aggr() help page and get familiar with the new syntax.

 

Real life example

 

Please read this blog post to discover a real usage scenario.

 

(...) I needed to capture the percentage and number of the gains and losses in a KPI object(...) In order for the Aggr() function to work as I expected, I needed to make sure the MonthYear field was sorted properly in ascending order so I handled this in my script.  Note that if the MonthYear field was not in ascending order, the Above() function may not always return the previous month thus returning the wrong results.

 

Now, to solve Jennell's dilemma we could simply use Aggr() avoiding any extra steps such as sorting the data in the script and making our calculation fully dynamic.

 

    max(aggr(sum(Members)-above(Sum(Members)), (MonthYear,(NUMERIC, ASCENDING))))

 

I would love to hear usage cases scenarios from you in the comments area. Where you guys plan to use this new capability?.

 

Enjoy Qliking,

AMZ

 

*Yes, it also works on QV12. Just ignore the syntax errors you will see in QlikView function editor.

 

UPDATED: For those of you looking for an expression as sorting parameter, good news, please check out HIC postRecipe for a Pareto Analysis – Revisited
57 Comments
MarcoWedel

Thanks

0 Likes
8,346 Views
sunny_talwar

This is awesome stuff. Thanks for this new introduction.

0 Likes
8,346 Views
tresesco
MVP
MVP

Great to know that one limitation is limited now! Looking for more - like if we can have an evaluate() for front-end.

Thanks.

7,488 Views
perumal_41
Partner - Specialist II
Partner - Specialist II

This is good stuff, we are looking forward ............

0 Likes
7,488 Views
christian77
Partner - Specialist
Partner - Specialist

Awsome! Thank you.

0 Likes
7,488 Views
jolivares
Specialist
Specialist

Hi Arturo, this is great for us, but I try to implement and I don't know what is happening. Why my QV ver 12 does no recognize the instruction :

Capture.PNG

Capture.PNG

Thanks in advance.

0 Likes
7,488 Views
Not applicable

Good news, tank you!

0 Likes
7,488 Views
sunny_talwar

Juan‌ I think the expression editor is having difficultly in understanding the syntax, but the expression itself should work. I have tested it out and it in fact gives the desired results.

7,488 Views
Gysbert_Wassenaar

Arturo did mention that in his blog post:

*Yes, it also works on QV12. Just ignore the syntax errors you will see in QlikView function editor.
7,528 Views
RD
Partner - Contributor II
Partner - Contributor II

Will this be available in Qlikview 11.2?

0 Likes
7,528 Views