7 July 2022

Bucket analysis in Qlik Sense with the Class() function

Share this message
Learn how to create intervals in Qlik with the class function

Every Friday at Bitmetric we’re posting a new Qlik certification practice question to our LinkedIn company page. Last Friday we asked the following Qlik Data Architect certification practice question about creating buckets (or intervals) in Qlik using the Class() function:

A Qlik test prep question about the Class() function: a chart is required to analyze the responses on a survey by age group. The group should be divided into intervals of five years. Which of the following statements should be used for the creation of the chart?

The correct answer is A: Class(Age, 5)

Judging by the amount of reactions this week this must be a well-known function! And it is great to say that all answers were right. Something which is not strange since the Class() function is a great way to quickly create buckets to help in doing analysis.

The class() function can be used as a script or as a chart function and by looking at the syntax below, should minimally consist of the expression and the interval. In the expression we enter the numeric value to evaluate. This can be a fixed number, but also a field name, seeing as we used the Age field in the question.

class(expression, interval [ , label [ , offset ]])

The interval determines the range on which the values will be classed. So in the example we used 5 as the interval, meaning we use increments of 5 to class all values in. So for example from 0 to 5, from 5 to 10 etc, etc. The class() function standardly creates these classes shown as below:

lower limit <= x (label) < higher limit

This brings us to the possibility of the label. Normally the class is depicted as shown above, so the class from 0 to 5 will be shown as the value: 0 <= x < 5 (see fig 1.), having an x as label in the value. This can be changed by adding a label to the syntax, bring it towards something more understandable (see fig 2.) or using the replace function (Replace(Class(Age, 5), ‘<= x <’, ‘ to ‘) to fully customize the result (shown in fig 3.).

Examples of customizing the labels on intervals / buckets that were created with the class function in Qlik Sense.

The final possibility in the syntax is to use an offset. For example, if you want increments of 10, but only start at number 21, you can use Class(Age, 5, ‘age’, 21) as syntax to start at 21. Keep in mind that in this case you need to give a label, otherwise the offset will be seen as the label. Also if you have results below the given offset, this function will take that into account and count back as seen in figure 4.

Using different offsets in the class function in Qlik Sense

Some other things to keep in mind

  • If there are no values, there is no class created. For example there are no 5 to 10, or 10 to 15 classes, since there are no values over there.
  • The classes are not customizable per class. It is always the same increment as given. In this example the data set only contains from age 18 and onwards. The 7 values which are below that are values with 0, but due to the classes which are created it is difficult to determine data quality issues.
  • The classes are not customizable. The increments are fixed according to the interval given. If you want to have more control, use classes of various lengths or add some information to control data quality, it is worth looking at nested if statements or IntervalMatch solutions in the script.

That’s it for this week. See you next Friday?

Take your Qlik skills to the next level!

Since 2013, the Masters Summit for Qlik is the premier advanced training for Qlik. Join us in Vienna and take your Qlik skills to the next level.

Join the Bitmetric team!

Join the team!

Enjoying these challenges? We have many more, and we’ll even pay you to solve them 😉 Check out our job opening.

Friday Qlik Test Prep Functions Solution

How can we help?

Barry has over 20 years experience as a Data & Analytics architect, developer, trainer and author. He will gladly help you with any questions you may have.