7 February 2022

Qlik Set Identifiers

Share this message
When using Qlik Set Analysis, a Set Identifier is the starting point of your selection. This post shows you which set identifiers exist, and how you can use them.

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 Business Analyst certification practice question about Set Analysis and Qlik Set Identifiers:

A Business Analyst selects the year 2022 in the table shown in figure 1. There are no other selections. What value does the expression in figure 2 return?

There was a little catch to this question, which fooled exactly no one 😉

The correct answer is C: 65%

Even though the Business Analyst selected the year 2022, that selection is ignored because the expression uses the 1 Set Identifier in the Set Analysis statement (or Set Expression). In fact, when using 1 as your Set Identifier, all selections are ignored. This means the expression is calculated for the entire data set.

In our question, the result is that we have to take not only Feb 2022 into account, but also Feb 2021. From the table we can get the values for Sales (250 + 250 = 500) and Cost of Goods Sold (50 + 125 = 175). Plugging these values into the expression gets us (500 – 175) / 500 = 0.65, or 65%.

Qlik Set Identifiers

As mentioned above, the 1 used in the Set Expression is called a Set Identifier. You can think of the Set Identifier as the ‘starting point’ for the data that is included in your Set Expression. This data set can be further modified using a Set Modifier. For example using the <[Month]={‘Feb’}> modifier from the question. This sets the selection in the Month field to Feb. We’ll cover Set Modifiers another time though.

Common Set Identifiers

Besides 1, there are a few other common Set Identifiers:

  • $ refers to the current user selection in the default state (i.e. not an Alternate State). If you don’t specify a Set Identifier, Qlik assumes by default. There’s a catch though, more on that later.
  • $1 refers to the previous user selection in the default state, as if you pressed the Back button. $2 refers to 2 selections ago, $3 refers to 3 selections ago, etc.
  • $_1 refers to the next user selection in the default state, as if you pressed the Forward button. $_2 refers to 2 selections forward, $3 refers to 3 selections forward, and so on. This identifier, and the previous one, typically see very little use in our projects as we find that users typically don’t want to compare current to previous selections. Rather, they want to make comparisons between multiple independent selections, which we’ll cover another time.
  • Bookmark, you can use either the Title or the ID of a bookmark to refer to the selection stored inside it.
  • Alternate State, you can use the Name of an Alternate State to refer to the selection within the state.

Fun aside, Qlik will (sensibly) not let you create an Alternate State named $, but will let you create states named 1$1 or with the same name as a bookmark title. This can lead to strange behavior as the clip below shows.

What happens if you create an alternate state named 1 or $1, or with the title of a bookmark?

When creating an Alternate State named 1, Qlik still interprets the 1 identifier as referencing the entire data set. However, when creating states named $1 or My Bookmark (which has the same name as a bookmark in the app) these identifiers now reference the Alternate States $1 and My Bookmark, and not the previous selection or the selection stored in the bookmark. Best to not mix up Set Identifiers and Alternate State names 😉

Leaving out $ assumes the current user selection

As mentioned above, when you don’t specify a Set Identifier, Qlik assumes the current user selections. Many developers take this to mean that and no identifier are identical. Seeing an opportunity for laziness… er, efficiency, some may opt to just leave out $ when they want to refer to the current user selections.

The catch is when you leave out the Set Identifier, Qlik assumes the current user selections for the inherited state. When placing an expression without a Set Identifier in an object that is in an Alternate State, Qlik will use the current user selections in that state, rather than the default state. The clip below illustrates this.

Set Analysis and Alternate States, what happens when you leave out the $ ?

Is this a bad thing, to be avoided at all cost? No, definitely not, but it’s good to be aware of the difference. Leaving out a Set Identifier can even be very convenient if you want to use a Master Measure containing Set Analysis across objects that are in different Alternate States.

That’s it for this question! See you next Friday? If you’re looking for some more fun things to check out this week then maybe consider:

  • PinIt, our free, self-service mashup generator. Now anyone can quickly combine visualizations and data from across Qlik Sense apps to get the personalized overviews they need. Your users will love you for it! We have a new release coming up later this week.
  • The Bitmetric Qlik Sense Coding Conventions, find out how we keep our scripts readable and maintainable by downloading this free document.
  • Our colleague Angelika collaborated with Vizlib to bring you the Data Literacy how-to guide Data Literacy: How to make data every employee’s friend, another free download.
  • For Qlik and data enthusiasts based in The Netherlands only (sorry!), did you know we have multiple job openings? If you want to build cool and inventive data solutions, value craftmanship in your work, want to learn, grow, create and share knowledge and are also a nice person (some slight quirks accepted 😉), then we’d love to chat with you!

Want more? Then click the button below for our full archive!

Friday Qlik Test Prep Set Analysis Solution

How can we help?

Feel free to contact us if you have any comments or questions.