1 2 3 4 Previous Next

Qlik Design Blog

48 Posts authored by: Arturo Muñoz

My previous post versed about what I think it is a very interesting use case of Set analysis element function P() to create dynamic sets and how to operate with those sets to solve really complex analysis scenarios in an easy and elegant way.


In the comments section of that post, I got a couple of questions regarding one of the charts we used in our web app, the so-called Tornado Chart. This post goes to answer that question by showing how to create a Tornado/Butterfly Chart.


Step by step guide:


Note: For the following example I got a sample data containing Population by Age data from the US census. It has 3 columns, Age Range, Male population and Female population.


  1. Drag and drop a bar chart to your sheet.
  2. Add a dimension.  I’ll add Age Range to mine.
  3. Add two expressions. I need one expression to display female’s population and a second one for males.

    At this point, my chart looks like this:


  4. Next, we will adjust the bar chart sorting and appearance.

    Sort the chart according to your data. For this data set my best option is to sort Age Range using load order, to do so, move Age Range to the top and then uncheck all the sorting options to sort on load order.
    In the Appearance section of the chart property panel, switch Presentation to Horizontal and Stacked and set Value labels to Auto.

  5. Now we need to figure out how to “move the y axis to the center of the chart". To do so I’ll transform the data to make Female population negative by changing my expression to: Sum(FemalePopulation)*-1


  6. My chart looks almost right but there’s still a detail that doesn't fits well in the picture above. Note that the value labels for Female Population are displayed as negative numbers. While technically correct, it doesn't work for this chart, I need it to be displayed as positive vales as well.

As a general note remember we can set up the format for positive and negative values for any expression. Format argument in the Num function can take 2 parameters, first one indicates how to format the number if it is >0 and the second piece if number <0.

=num(sum(x), 'postivenumberFormat;negativenumberFormat')


As I want negative and positive number to look exactly the same I could use the following format arguments:







Note: Please be aware of some potential issues when exporting the chart as data since the resulting file could contain negative values.


Enjoy it.

A few months ago we at the demo team accepted the challenge to create a prototype for the healthcare industry. The goal was to create a user-friendly way to analyze a huge dataset provided by one of our healthcare partners, DarkMatter2bd. They carefully explained to us some usage cases for their data and we agreed to create a mashup to analyze and visualize “comorbidity”.


So what does comorbidity means?


In medicine, comorbidity is the presence of one or more additional diseases or disorders co-occurring with (that is, concomitant or concurrent with) a primary disease or disorder; in the countable sense of the term, a comorbidity (plural comorbidities) is each additional disorder or disease.

Source: Wikipedia



If you are in the healthcare industry then I am sure you have heard someone asking something like: can you show me patients that have X and Y and Z? To answer that question and some more we came up with a new mash up called Pre-launch Targeting & Clinical Trial Recruitment. It contains non-real data for almost six hundred thousand patients located in the state of Pennsylvania.


When a user gets into the mashup we prompt them with a search box that performs a search across the entire range of diseases or disorders available in our data sample. Once the user has chosen a primary disease we take them to the Recruitment page where data can be freely explored and analyzed, and more importantly, where more disorders or diseases can be added to the query.


Real use case scenario.


An imaginary healthcare company is planning to launch a new drug for people suffering from diabetes and they need to find a group of patients that meet some requirements. They must have diabetes and must have hypertension but must not be allergic to penicillin.



After we search for diabetes we get to a count of 62,861 patients in our data. It represents approximately a 10% of our sample. Next  is time to search for hypertension. We will add a second condition to our query.




The inclusion of hypertension draws 42,491 patients that suffer from both diabetes & hypertension.


Our last search will be penicillin intolerance. Please notice that by default our mashup will add new search terms with AND condition to the query. The count of patients temporarily reflects 113 patients for the combination of diabetes AND hypertension AND penicillin allergy. Users can freely switch any condition to AND NOT by clicking into the tag. By doing so in the "Personal History of Allergy to Penicillin" tag we end up having a result set that matches our initial request, resulting in 42,378 patients with diabetes AND hypertension AND NOT penicillin allergy.




Set analysis element function P()


The secret sauce in our recipe is the Set analysis element function P(), it helps us to create subsets of data which we can operate with.


We basically want to count patients where disease = X and disease = Y. If we use Qlik notation for that condition would look like:


Count({<patient = P({<disease={'X'}>}patient) * P({<disease={'Y'}>}patient)>} distinct Patient)


The expression above will create two sets, P({<disease={'X'}>}patient) will contain all the possible patients that have disease = X, while the second piece P({<disease={'Y'}>}patient), will retrieve all the possible patients with disease = Y. Finally the " * " operator will calculate the intersection of both sets.

The webapp Pre-launch Targeting & Clinical Trial Recruitment dynamically creates as many P sets as needed and the right operator to compose the right expression.

If you want to learn more about Set Analysis please check this posts:

Why is it called Set Analysis?

A Primer on Set Analysis

Natural Sets


I hope you like Pre-launch Targeting & Clinical Trial Recruitment


Arturo (@arturoqv)

Continuing with the description of the new charts available in the Qlik Sense June 2017 release, today is the Box plot’s turn.


The American mathematician John W. Tukey introduced the box-and-whisker plot (called simply a box plot) in his 1977 book, "Exploratory Data Analysis".


Like the Distribution plot, the Box plot is a histogram-like method of displaying data and is appropriate to represent the degree of dispersion, skewness, and whether there are potential unusual observations in the data set. It’s particularly useful for comparing distributions between several sets of data, short of having several histograms close to each other so you can compare across them. The data center, spread and overall range are immediately apparent for each data set.

In my previous post about the distribution plot, I used an example data set containing data for 3 salespersons recording their monthly sales data. I'll reuse that data to illustrate how the box plot works.


A Box plot will typically help us to visualize 5 numbers, the statistical median represented as a horizontal line inside the box, the box ends show the first and third quartiles values. The whiskers indicate the range of the data and they are represented as horizontal lines ending in a small vertical line. Whiskers extend to the farthest points that are not outliers. Depending on the box plot configuration you choose, a provision is made for the representation of extreme values, typically upper/bottom quartile range +/- 1 x interquartile range or IQR. Additionally, outliers or extreme values are represented with dots.


Some general observations about our salespersons’ box plots:

  • The box plot is comparatively short – see Sheri. This suggests that overall monthly sales have a high level of similarity with each other.
  • The box plot is comparatively tall – see Dani. This indicates Dani’s monthly sales are quite different across the year.
  • The box plot is skewed – see Dani. There are more data points on the left/bottom (toward lower values), most of Dani's sales are small amount of sales.

To get the chart working in your Qlik Sense app it only requires one dimension (add a second dimension to compare across it) and one expression. Qlik Sense's new Box plot offers three standard presets, standard (Tukey), percentile-based, and standard deviation. For those of you with special needs or for those interested in learning more about fine tuning your chart, there’s a manual mode that give us full control over each one of the chart elements.


Enjoy it.

Arturo (@arturoqv)

The Qlik Sense June 2017 release came with a bunch of new visualizations, distribution plot is one of the new objects available to drag and drop into Qlik Sense. Let’s use an example to check what a distribution chart can tell us that was previously hidden from our eyes.


I’m going to use a very simple example of sales data, it contains 3 sales rep and monthly sales that extends over a year. We want to see how our reps are preforming over the year by observing some execution indicators such as total sales and average sales.




In our not-so-random example data, sales are even for the sales team. As you can see in the picture below, their aggregated numbers are almost identical.




Average is just not enough to see how sales rep are performing, we need more granularity if we really want to understand how the sales process works. To do so we could try to include months and maybe use a different visualization object like a line chart.




Line chart will help us to see sales with a temporal component, I see how both Jerry and Sheri have a very regular sales process over the months while Dani's go all over the board with excellent months and not so great ones.


Distribution plot can help me to get a better picture of our sales by giving us a glance of data dispersion.




I see that despite having the same yearly sales amount and sales average the actual distribution over time is quite different from each other.


Jerry has tight sales performance month to month with all the points(months) falling in a compact cluster. Sheri meanwhile has a very tight bucket of dots a little over $150 but also a couple of months that could be considered as outliers. That is valuable information that wasn’t obvious only attending to the line chart.


Dani's sales don’t follow the pattern described by the other two individuals. For Dani, monthly sales range from $0 to $600 is either an excellent or a terrible month. Any company will be happier with a more consistent sales performance and our imaginary company is no exception to that. By learning how each one of the sales team performs we can take the necessary actions to help Dani to be more reliable.


As we have seen similar yearly sales and identical sales average could hide some valuable information, there’s a story in your data that needs to be discovered.


Enjoy it,

Arturo (@arturoqv)

Guided apps are probably the more common data viz pieces nowadays. Are strongly influenced by the traditional journalistic approach to a story and related with storytelling. The goal of guided apps is to walk the reader from point A to point Z.


A well-constructed guided visualization is incredible powerful at proving a point, examples can be found almost daily at mass media websites. As a data professional, I love data stories but maybe because I’m such a data geek I usually never get completely satisfied by the visualizations used to emphasize the story. I almost always hungry for ways to explore the data or I simply miss one angle from the story to feel fulfilled.


On the other hand, the so-called Discovery apps are intended to let the user to manage the ride and rely on reader capacity to be able to interact and to understand the data they are looking at. Scenarios with simple and familiar data are generally more appropriate for discovery apps.


We recently got one of those great data sets for discovery, simple data and containing thousands of potential stories in it. Barcelona Marathon organization contacted us to create a piece to let runners (data users) to explore every corner of their data. They have been collecting runners’ data during the last decade, our part was just to put a nice wrap around it. We like to see it as a nice hybrid (more on the discovery side) of guided and discovery app.





We divided the mashup into three sections trying to help first time users to better get familiarized with the data. It’s just a visual separation of the data, each section belongs to the same data model, filters are global and every selection affect all the charts. For the clarity of it we reduced the use of set analysis as much as possible.


The app starts with race overview data, about participation and finishing times. The second section serves as demographic info, with three main characteristics to consider, age, sex and nationality. Finally, we reserved a little bit of complexity for the very last section, we called it Performance. As you can see in the picture below taken from the chart “Avg time by age” the sweet spot age for someone to run this marathon is 35 years old, in average people in that age get the best results.


avg time by age.png


You can check the mashup live at Barcelona Marathon page here or as a stand-alone version at Marató Barcelona.



Arturo Munoz (@arturoqv)

A few weeks ago, we got into a new project to create an interactive piece with the Canadian media, National Post. The goal was to illustrate the donations candidates of the Conservative Leadership Race received from the start of the race through March 2017. Qlik Sense was integrated with Qlik GeoAnalytics to visualize where the donations were coming from and which candidates received the most donations in each area.


The map below was one of our first tries, we decided to use color to illustrate the top candidate by amount collected, and by postal code.




Problem with this approach appeared obvious at a first glance, postal codes areas have an insane size variance, regions such as the northern and barely populated province of Nunavut extents thousands of square miles in just one postal code while postal areas in urban zones, such as in Toronto, span a few city blocks and are hidden in the map.


So, how to make Nunavut and Toronto visible and comparable?


We decided to apply a binning operation to our data to solve most of the issues described. Qlik GeoAnalytics has a wizard that lets you chose operation, making the process seamless. The result is a new table containing squares (or hexagons) geo-polygons.







In this new map version, readers can compare areas easily without the distortion introduced by the different postal code sizes, letting us to see what’s going on in Toronto and in Nunavut at the same time.


We've added some extra cool features to the resulting Qlik Mashup. I recommend you to visit it and explore it at http://news.nationalpost.com/news/qlik




A few days ago I stumbled upon one of those little tricks that we all love. Roland Vecera came up with a nice solution to bring minicharts to Qlik Sense. It can help us to increase app data density and make our Qlik Sense tables sexy and informative again. Don't forget to add this to your bookmarks!


In Roland's blog post you will find instructions about how to build a linear gauge, a traffic light gauge, and even whiskers minicharts (right table in the image above),

I particularly like the linear gauge, with this technique we can now simulate small bars that goes along with each one of the table dimension items. The expression used to create the linear gauge 'bar chart' is actually reusable and very simple, looks like this:

repeat('█', rangemax(rangemin( ceil(((column(1)/column(2))-1)*10),10),1) )

The expression will paint a variable number of solid blocks █ based on a given calculation that is evaluated by row. By now you should have a nice grey bar from 1 to 10 blocks.

Next (optional) step is to apply color to it. You could add color based on any criteria you want, in the chosen example Roland is using color in the same way as he use size, both display Growth.

The text color expression looks like this in the example:


if(expression>2, argb(255,0,150,0),

     if(expression>1, argb(255,0,200,0),

         if(expression>0.5, yellow(),lightred())))


Where expression will be the same expression as in Growth column (Steigerung).


You can read more about minichars in tables trick at QlikView + Qlik Sense Blog von Heldendaten: Qlik Sense Calendar Measures & "Minicharts" in Tabellen


Hope you like it.


PS: For those of you who can't read German and/or use Google translator, please check out this community doc Creating Mini Chart in Qlik Sense tables (it also contains some hacks to make this trick even more complete)

It’s been a while since the last time we covered an extension in this blog, this time I would like to introduce ColorStyler by Johannes Sunden jsn .





The reason I found ColorStyler very special, besides its obvious value, is due the way this extension was built. It’s half an extension half a mashup or should I rephrase it as a “mashup that extends your Qlik Sense app”.


ColorStyler as you might have figured out by now is a coloring extension, it will let you preview and apply different color schemes to your charts, no coding is required, it will take care of the not-so-easy task of creating a ColorMix expression for you.


Once installed in your computer, ColorStyler sets up a mashup that will let you interact with the available apps and apply some color options to your charts.


To start working with ColorStyler you must pick an app from a list of your available Qlik Sense apps, then you will be presented with a list of available visualizations (as of today it only loads Master Items), and finally ColorStyler will offer you four main color categories to pick from.


I find very useful the gradient options, and especially gradient themes, it’s a good selection of nice and safe colors palettes. If you are not happy with the proposed themes you can always create your own by defining the gradient colors.


It’s quite interesting to see the chart update on real-time and compare how different color alternatives affect to our ability to read the visualization. Once you’re happy with your color selection you just need to “Save Changes” to make it persistent not only in the mashup but in the actual Qlik Sense app.

As I mentioned before,ColorStyler will only let you interact with Master Visualizations from your Qlik Master Items library so you must have at least one master object in your app to be able to use this tool. After applying color to your master item, you can edit it as normal in your Qlik Sense client and copy the generated expression (ColorMix1 or ColorMix2) and then apply it to any other visualization.

Note: I would recommend to be extra careful when applying colors to charts by dimension, it’s very important to use color with care, just remember color in data visualization should be used to convey information, and not as decoration. Also, is very important to make sure that a dimension chosen color will be applied consistently across your app, avoiding situations where the same dimension value has two different colors in two charts.

For latest version and technical questions please check Qlik Branch project page: Qlik Branch


If you prefer to watch a video instead:


NOTE: To increase resolution or size of the video, select the YouTube logo at the bottom right of the player. You will be brought directly to YouTube where you can increase the resolution and size of the player window. Look for the 'settings' gears icon in the lower right of the player once at YouTube.



Just that, a mashup template for dev-hub (aka dead simple drag and drop mashup creator) that ships with a bunch of cool features such as:


  • Dev-hub ready
  • Multi Page
  • KPI row built in
  • Prebuilt CSS color library
  • Cards with full screen toggle
  • Offcanvas filters pane
  • Help modal popup
  • Responsive design
  • Bootstrap built in
  • Custom fonts ready



Because we’ve heard you asking for a more powerful and good-looking template that can constitute a solid framework to create your customized mashups.



Anyone looking for a feature rich mashup template designed for use in the dev-hub.



Available today!



You can grab the latest* version here GitHub - fkabinoff/qs-dev-hub-dashboard-template: Dashboard template for Qlik Sense dev hub


*Please notice this is a live project, we will keep updating it frequently. Right now the project documentation (readme.md) is far from what we would like it to be.

Qlik Explorer for Developers (QEfD) is a tool that will let you to explore Qlik Sense content and obtain some valuable info. You can connect to a Qlik Sense server and drag and drop code snippets and IDs into whichever IDE you are using to build mashups or similar solutions.


You can learn more about QEfD here:

    Qlik Explorer for Developers is here!


I mainly use QEfD for two tasks, to obtain objects ID so I can inject them into my webpage, and eventually to poke around object properties.




To copy an object ID I just connect it to my server (you can also try it with your localhost:4848 or just try out the default connection to PlayGround) and then QEfD will show me a tree-list with all the apps available on that server. From there it gets pretty simple, navigate to the object I want to incorporate into my webpage, the preview tab gets very helpful to double check you are where you want to be, and then using a template* called "id" I can copy the object’s ID.

*What’s a template: is a set of code snippets which are bound to different nodes in Qlik Sense. A node is for instance a Qlik Sense application, a sheet or an object.


Since the introduction of the Visualization API a developer can create her own charts on-the-fly, this way we become independent from the Qlik Sense client and from the visualization layer within the qvf (you don’t have to create a chart first on Sense client).

To create your own charts, you are supposed to construct the object by yourself. QEfD can be super handy here. I use it to learn, and let’s face it, to copy all JSON properties from existing objects. It makes it super easy to create some pretty advanced on-the-fly charts. It almost feels like cheating, in a good way.

If you want to download now Qlik Explorer for Developers, please do it here:

Download Qlik Explorer for Developers

Built by Developers for Developers

If you want to see QEfD in action, please check out this video:

    Qlik Analytics plugin for Visual Studio - YouTube

    Please note that this stand alone tool works exactly as the Qlik Analytics for Visual Studio plugin.

Enjoy it!


2016 is almost over, we've made it this far; we can make it through one more day. To help you to reduce the end-of-year stress nothing better than our very own top blog posts of the year. Let's start by sharing some numbers.


7 author posted 77 articles (not including this one) during the year, and a total of 34,876 words (6.693 distinct words) were written. Last year we wrote the Q-word 323 times while this year the word “Qlik” appears 366 times in our articles, 4.75 times per post. You helped us to improve our content by commenting in average almost 7 times per post, a total of 531 comments were written.


Most popular posts in 2016


Most read/visited posts

Top selling posts.


Set Analysis in the Aggr function.

The sortable Aggr function is finally here.

AutoGenerate your data.

Five Qlik Sense extensions you should check out today.

Creating a KPI object in QlikView.


Most commented posts of the year

Something is going on in these posts.


The sortable Aggr function is finally here.

Qlik Sense 2.2 – It just keeps getting better and better.

Creating a KPI object in QlikView.

Full Accumulation example.

Autonumber function.


The underdogs 2016

They worth a second read.


Recipe for a Pareto Analysis – Revisited 
When I first wrote about the new sortable aggr function I was really curious to see what uses were unlocked by the new functionality. HIC found one.

Implicit Set Operators
Quite popular post that didn't make it to our top 5. It's a good lecture to improve your set analysis skills.

Use case for ValueList Chart function
Real life use case for a no-so-common function

Qlik Lars Mashup project template
If you are considering creating a mashup page with Qlik charts in it, you may want to check out this template.



Hope you all have a great end of the year!


Not that long ago, with the release of Qlik Sense 3.0, Qlik Sense introduced the Time-aware charts. Line charts are now able to intelligently zoom in and out when used in conjunction with a date/time dimension letting us explore the data in a very smart way.

Please check this post for further details: https://community.qlik.com/blogs/qlikviewdesignblog/2016/07/15/what-s-new-in-qlik-sense-30-time-aware-charts


Now with the release of Qlik Sense 3.1 SR2 (Qlik Sense 3.1 Service Release 3 now available, Information on Sense Desktop 3.1.1 expiry) the Time-aware feature has made it to the bar and the combo charts as well. This new feature will expand the capabilities of two of the most common charts in our library.


To get a working time-aware bar or combo chart in your app you just need to make sure you are running Qlik Sense 3.1 SR2 or higher, then modify an existing bar (combo) chart or create a new one, remember you should be using a time field as the dimension for your chart. Finally you need to activate the continuous axis in the chart properties panel as shown in the animation below.







Stacked bar charts are perfect to represent the contribution of particular elements to the total, the classic example is Sales by Year and by Quarter.




Just by observing the chart a few seconds we can conclude that Actual Amount was higher in 2007 than 2006, and it seems clear that Q2 rise in 2007 contributed significantly to the 2007 total increase in Actual Amount.


To create a simple stacked bar chart like the one in our example we've needed 2 dimensions (Year and Quarter) and one measure. Alternatively, we could recreate the chart using one single dimension "Year" and 4 expressions one per each one of the quarters. The procedure to customize the colors will depend of what type of chart you have, bi-dimensional chart or multi-expression chart, let’s start with bi-dimensional chart coloring.


Bi-dimensional stacked bar chart


This is the simplest case, you just need to target each one of the segments (Quarters in our example) by name, you could just use an if statement to target them, something like:


if(Quarter='Q1',red(),if(Quarter='Q2',blue(), if(Quarter='Q3', green(), yellow())))


Alternatively, you could use conditional functions for a more elegant approach:








Multi-expression stacked bar chart


In this scenario our data table contains one column per quarter as in the image below but we still want to represent them in one stacked chart using custom colors.




We could get a stacked bar chart using one single dimension "Year", and 4 expressions Q1,Q2, Q3 and Q4. The problem comes when trying to color the segments, at this point we can’t target specific segments anymore because each one of our segments is made of an expression.


To solve this situation, we need to work-around our chart to make it again bi-dimensional. In order to do that we’ll add a new table to our data model. Our table will contain the name of the segments for our chart, I called it [segment names] in my example.




Once the data has been loaded then it’s time to create our chart. The dimensions will be “Year” and the recently created “measure”. To complete our chart, we’ll need to add a simple if statement (or the more elegant pick&match combo) in our measure expression, similar to this one:


if(measure='Q1', sum(Q1),
if(measure='Q2', sum(Q2),
if(measure='Q3', sum(Q3),
if(measure='Q4', sum(Q4)))))


Now that our chart is standard bi-dimensional bar chart, all we need to do is to apply custom colors as described earlier in this post. So again we could use the good old if statement or pick&match to end up having customized segment colors in our stacked bar chart.




I'm attaching an example app so you can check how it's done.


I want to give credits to all the contributors to How to use custom colours in a stacked bar chart, please check that community thread if you have questions or just to learn more about custom colors in stacked bar charts.



Arturo Muñoz


Posted by Arturo Muñoz Oct 7, 2016

“Cardification” might not be one of the shiniest new features in Qlik Sense 3.1 but it’s an important step towards something bigger*.


For me, and I guess for some of you as well, one of the challenges when it comes to create a nice looking new app appears when composing a multi-object sheet in Qlik Sense. My struggles are related with the fact that the objects have no borders (thank you nordic minimalism) making it hard to distinguish where an object ends and the following starts.


To overcome that challenge some of us opted for leaving empty columns and/or rows to separate the app contents. For example to make a "cut" between the filters and the main charts.


Sales Discovery app is a good example of this. As you can see in the example below, we are leaving some breathing space to separate some areas within the app.




This method works just fine for me most of the time, and it has let me to compose complex layouts without any further issues. However, one of the most obvious disadvantages of leaving empty columns or/and rows is that we are losing precious pixels that in some cases could have made a great difference to display data properly.


Another approach commonly used to separate content consists in using a Text & Image object and then a background image containing a single line, making it look like a divider. It works OK when in a desktop-like device but it will force me to keep an unnecessary object when in a mobile device plus it doesn't solve any of the issues described before.


To ease our pains Qlik Sense 3.1 includes the so-called “cardification” feature. It's a theme (yes a *theme) called Qlik-Standard. It changes the aspect of your app by adding a nice light gray background, a border, and a lovely subtle padding to the objects. Although I’m not completely abandoning the idea of eventually using white space in my apps, or even the Qlik-Classic theme, this new theme will streamline the process of making my apps look nicer and to be more readable and digestible.


Please see the example below to discover how to activate it.




Extra tip: Once you have expanded the app options panel at the very top of your screen you may want to check out the color picker under sheet title styling section


So, do you think you will be using this new theme in your apps?



We all can agree on the fact that not all the data contained in an app is equally important, right? The most important data should be highly visible and be located in a prime location within your app. Is always interesting to recheck Michael Anthony’s post about hierarchy.


KPIs are one of those elements that for sure will be at the very top of your app's first sheet, it's something you don’t want anyone to miss.


Since we don’t have a KPI object in QlikView’s objects library, all of us have came up with different solutions and tricks to represent a value and some contextual information next to it. All of them have one common aspect, they require several text objects to look good. This is usually ok, is not that hard to achieve a nice looking KPI using multiple text objects, but it can be really tedious to maintain.


The object below shows an example of a KPI representing net sales, it also contains other key contextual information such as comparison vs previous year and comparison vs target. The KPI also includes graphical indicators that will let us know if the measured indicator is performing good or bad based on our goals.




It looks really neat but in order to achieve something like that in QlikView you will need to create and maintain a good amount of text objects as you can see.


Today we introduce yet another alternative to text objects, it's a really smart, sexy looking, and easy-to-manage KPI object. And it’s all done using only one object! Let’s see how it’s done.


Each one of those three KPI objects are in fact a gauge chart heavily tweaked to look like a completely new KPI object. To do so you need to remove the gauge image in the gauge chart and add some text boxes as “Text in Chart”. Good news is, it all belongs to the same object now so you will be able to move it around without missing any part.

My very favorite piece of this method is the flexibility obtained by using variables to modify each one of the moving parts that form the object making it a piece of cake to maintain. Next, I’m including a diagram of the object so you can get a better understanding of it.



  • Simplified administration.
  • Global configuration options = unified look&feel.
  • Manageability, no more loose parts when moving/copying objects across sheets.
  • Minor tweaks to replicate across projects.



  • It might be a bit confusing for newbies due the intensive use of variables.

I’m attaching an app (qvw) so you can just copy and paste it to your new project and explore how it's done.

Enjoy it!


PS: All kudos must go to Rasmus Andersson and Alexander Mosquera alexmosq at Mindcamp and Fredrik Thomsen and Peter Wedebrant @Qlik.

Filter Blog

By date:
By tag: