14 March 2022

Unpivot data in Qlik with the CrossTable prefix

Share this message
In this post we'll learn how to unpivot data in Qlik Sense or QlikView with the CrossTable prefix

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 unpivoting data in Qlik:

A Business Analyst has received the budget table shown in figure 1. Which prefix should be used in the load script to unpivot this data into Channel, Region, Quarter and Budget columns?

The answers to this question were unanimous, and you were right:

The correct answer is answer B: CrossTable(Quarter, Budget, 2)

Since the pivot table is a great way to analyze data in excel, it is just a matter of time before you will come across one. Contrary to a straight table, it consists out of grouped values in which you can expand the rows as you please to show more detailed aggregations. However, the format of a pivot table makes it less than ideal for integrating directly into your data model. You will have to ‘unpivot’ the values.

Unpivoting data is done using the CrossTable prefix

This is done by using the CrossTable prefix. But how does this work? Let’s have a look at the table loaded into the example:

Example data in a crosstable that we'll unpivot using the CrossTable prefix in Qlik Sense.

The values are aggregated by ChannelRegion and Quarter, where the quarters are shown in individual columns. If we load this table directly into Qlik without any transformations, we get a separate field for each quarter named 2022-Q12022-Q2, etc, making this not an ideal way for an end user to analyze.

So how do we solve this? As mentioned before the CrossTable Prefix. If we look at the official Qlik documentation the prefix is used as following:

crosstable (attribute field name, data field name [ , n ] ) ( loadstatement | selectstatement )

  • There is an attribute field name, consisting of the attribute values,
  • data field name, consisting of the data values,
  • And n, consisting of the number of qualifying fields preceding the table to be transformed.

So how does it work?

A lot of theory, but how does this work in practice? Let’s make things a bit more clear by taking the example table from the question, labeling the relevant columns and cells and unpivoting the data. The schematic below shows how this works:

Schematic explaining how the CrossTable prefix works. Illustrates the attribute and data fields.
  • The labels for the different quarters, 2022-Q12022-Q2, etc. become the contents for the attribute field Quarter.
  • The values in the columns 2022-Q1, 2022-Q2, etc. become the content for the data field Budget.
  • The names of the attribute and data fields can be arbitrarily chosen. We used Quarter and Budget because these best describe the contents of the fields.
  • The first 2 columns, Channel and Region do not need to be transformed. We specify the value 2 for the number of qualifier fields. This means that only the columns after the first 2 columns will be ‘unpivoted’.

This leads to the following prefix:

CrossTable(Quarter, Budget, 2)

That’s it. We look forward to seeing your comments and hope to see you again next Friday!

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

Data Model Friday Qlik Test Prep Script Solution

How can we help?

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