It was Saturday 11:30 when my phone buzzed; I picked it out of my pocket and checked the message. “Hey, I’m running late. See you in 15 min“. At that time I was already in a bar packed with football fans wearing Messi or Ronaldo jerseys ready to watch one of the best games of the year. El Clásico, where the two best teams in the world, Real Madrid and Barcelona, go head-to-head.


With a few minutes to kill before the game kickoff I was browsing my Twitter (@arturoqv) timeline when I stumbled upon a link to the map below.Facebook Fandom.jpg

Facebook Fandom map.Displays which one of the two teams has more fans (likes) on their official Facebook page.


When I looked at the map, and despite having a pretty good idea of what to expect, it took me a while to understand what I was looking at. Where was the chart legend? After reading the text on the chart I finally understood that the red areas were for Barcelona while the white areas are for Real Madrid fans. It’s pretty clear that Barcelona has a lot more fans that Real Madrid, right?


Later when the game ended (congratulations to Real Madrid fans for such a great game and victory) I wanted to check the map again. This time I used my favorite search engine to find the map, it pointed me to an article from the Daily Mail. The article includes some facts in addition to the cited map, such as the total number of fans. Based on Facebook-likes data, Barcelona has more than 77 million fans while Real Madrid has a very close 75.5 million. Just 1.5 million people difference.


But, wait a minute that changes everything, right?


Why this map is poorly coded?


It seems clear that Facebook Data team aim was to illustrate fandom across the world in a binary and easy way by comparing just two numbers, Barcelona and Real Madrid number of fans, but is the visualization being truthful?


Well, I don’t think so. The data may be good but the information it contains is partial and is not giving the readers all the relevant data.


Based on the above map color code, you might think that Barcelona FC is by far more popular. When looking at the actual numbers; there are only 2% more Barça supporters than Real Madrid. The map doesn’t reflect at all that small difference; on the contrary it’s showing a huge distance between teams.


How to improve it?


Working with diverging gradient color scheme will show where the difference is more intense, where the gap is bigger.


In the map below we still can see how the forces are distributed across the countries, blue versus red, but this time using color intensity we can see how big the difference between the two teams is.



Unfortunately Facebook is not making their data available anywhere so I made up some fake data to illustrate my example


Adding more information layers


In terms of data density the map above is far more complete and truthful than the original one but the downside is that isn’t so obvious which team has more fans across the globe.


We could improve readers’ comprehension creating what I think is a better and more truthful experience.




First we will create a map that will color the countries based on which team has more fans in it (top left chart) nothing new here, we are showing same information as in the original chart. Next we’ll add more information layers (objects) to our sheet. Fandom intensity chart on the top right corner shows not just where there are bluer fans but also it displays how big the gap is. To complete our alternative proposal we could add a couple of supporting charts; a bar chart that lets readers accurately see how big the gap is and compare countries, and a table for those number lovers in the audience.


I guess the bottom line of this story is, always show all the relevant and supportive data that will guide readers or users to better understand the facts.

Enjoy Qliking!

Raw data is useful but data with additional contextual information is better because it helps us do what we already do naturally: compare, contrast, and weigh our options as part of the bigger picture. Contextual data is the supporting information that helps the reader more fully understand the primary data.


Key performance indicators (KPIs) at the top of a Dashboard page are a great way to give the general summary of how something is functioning, but the very next thought in any reader's mind is about context. Only people who are very familiar with the data can look at a number and place it in the context of the full story.  The rest of us need additional information to contextualize this data. There are a variety of simple ways to give readers additional context so they can make smarter decisions.


Traffic light

One way most people in BI are familiar with providing additional context is color coding information with traffic light colors. Green is good, yellow is a warning, red is bad. This visual metaphor is so common that most people understand it without any additional information. You might not know why a number is red, but at least you know there is a problem. Something to consider however is using an additional visual cue along with this metaphor for color blind users. Red-green color blindness is the most common form of color blindness which is where red & green colors shift to being shades of yellow and brown. You can use shapes / symbols along with your colors to improve the accessibility of this system. Perhaps you use up or down triangles in addition to coloring them green or red. Perhaps a fully colored circle can be green for good where an empty circle with just a red border can be bad. The shape is an additional indicator to users who have difficulty seeing the differences in your colors as to the context of your data.


cfo dashboard.png


Lines & Bars

Having a simple line or bar chart below a KPI can quickly place a KPI in the context of a larger whole. These are charts with no axes or written values. They are simply there to give context - drilling into the details is done elsewhere.

  • A line chart helps show the overall trend. To see a KPI number in green is useful, but more useful is to see that perhaps the overall trend in sales is going down and pretty soon that number might be red.
  • A bar/bullet chart is useful for showing, among other things, the completion of goals. Show a goal/reference line and show how well you met or exceeded that goal. This is essentially a more streamlined, quieter, more aesthetically pleasing version of a gauge chart.




This time last …

An additional piece of context you can add is some variation of "This Time Last …" year, quarter, month etc. You communicate to the reader that at some previous point in time the value of this field was something else and you are helping them compare the two values and judge if progress is being made.


this time last.png


You can employ any/all of these in your designs to help bring context to the data and enable users to make smarter decisions.

When we designed Qlik Sense one important aspects was to start using standard security components where possible to solve different aspects of security. Protecting communication is a good example of this, as we used standard components to protect against adding rogue servers and eavesdropping.


If you interested in understanding how we achieved this in Qlik Sense then continue reading…


When Qlik Sense needs to exchange information between different services, a couple of things need to be in place. The services need to trust each other and they need a way to talk without other listening in to the conversation.


In Qlik Sense all communication between services and clients use web protocols. With these we get the option of using a widely deployed standard for building trust and protecting the communication from eavesdropping. The way of achieving secure communication is tightly knit together by two components:

• TLS (Transport Layer Security), the protocol for how encryption and exchange of information/keys works

• Certificates for authentication of the servers that need to communicate


What TLS supplies is a way to build protected tunnels between two identified servers using encryption. The identification of the servers that communicate is done using certificates. Each tunnel needs two certificates, one to prove to the one starting the communication that they talk to the correct recipient and one to prove to the recipient that the one wanting to communicate is allowed to do so, i.e. mutual authentication.


So how do we know if the certificates are valid for communication between the servers? All certificates that belong to a trust zone are signed by the same signature (root certificate) and only if this signature exists will they be accepted as proof that you belong to the trust zone.


When these protected tunnels are in place and we have the right certificates in place we are able to build a trust zone for all Qlik Sense services to work within. Within the Qlik Sense trust zone only the services belonging to that specific Qlik Sense installation can communicate.



Outside this trust zone we have the clients (Qlik Management Console and the Client). These components are running on less trusted end user devices; therefore we do not allow them to be part of the Qlik Sense trust zone. The only component that can bridge the two zones is the proxy (but there may exist more than one bridge in an installation). The criteria for being allowed to cross the bridge and communicate in a controlled way with the servers in the trust zone is that you can authenticate (show who you are) to the system so it can determine if you are allowed to cross the bridge.


Even though the clients are not part of the Qlik Sense trust zone, protected tunnels (TLS) play a vital role in securing the communication between the client and the proxy, as sensitive information is sent across this connection. But as this is a different trust zone a certificate with a different signature should be used for client communication.

small_sense.png On October 8, 2014, Qlik hosted a live webcast featuring CTO Anthony Deighton and CMO Rick Jackson introducing Qlik Sense. We only had one hour slotted for our speakers to run through the demonstration and answer questions. Unfortunately we could not get to them all.


We had some great questions that ended up in the unanswered queue, so we wanted to address them separately here on our Design Blog. If you missed the webcast, you can view it in its entirety here. Thanks to everyone who was able to join us last week, and we hope that you can drop by the website to try Qlik Sense for yourself!

Be sure to join the conversation on the Qlik Community. Our members share various insight, tips, tricks and other contributions that can make you more familiar with Qlik Sense.



Q: Can Qlik Sense reports be shared and scheduled for automated delivery?

A: Assuming automated delivery means the sending of an attachment or posting of a static document for others to review, in a traditional BI sense, then no, not at this time. However, this is not your typical BI product, you may want to rethink how information is distributed. Qlik Sense provides both online and desktop-based self-service data visualization capabilities, including storytelling through the creation of apps. These apps can be shared in a few ways. Qlik Sense Desktop users can share their local app with other Qlik Sense Desktop users – simply through file sharing and/or email. They can also upload an interact-only copy of their app to the Qlik Cloud online sharing service – to be shared with those inside and outside of their organization. You can see both these capabilities in action here: Qlik Sense Desktop - Sharing Apps (video) and Qlik Sense Desktop - Sharing Apps (video)


Q: Does Qlik Sense allow scroll-bars in chart objects on iPads and iPhones?


A: Yes – when and where necessary and depending on the chart object. Our responsive design enables chart objects to resize and reconfigure themselves along with their layout depending on the device and form-factor. Here is a screenshot showing a scroll-bar that displays only when a drag gesture is performed on the table object.




Q: Can Qlik Sense export data / data model from another Qlik Sense dashboard app?


A: Yes – a .qvf file (which is the Qlik Sense app in file form and contains the data and the model) can be used as a data source with the BINARY LOAD Qlik syntax. Note that similar, if not all, Qlik script syntax concepts that have been used with QlikView, can also be used with Qlik Sense. You can see this in action here: Qlik Sense Desktop - Loading Data from QlikView Applications (video) Also note that chart objects - can also export, the chart object's individual data, by right-clicking on the object and selecting "export data" from the pop-up menu.


Q: Does Qlik Sense use DMS and NTFS for authorization?


A: With Qlik Sense, authorization is similar to the QlikView DMS mechanism, but has been vastly improved with the introduction of the Qlik Sense Repository and the new security rules engine. NTFS is no longer needed as Qlik Sense apps are not accessed or stored via the file system like they were with QlikView. Take a look at the Qlik Management Console video series and the Qlik Sense help site for more information on this topic.


Q: What sort of security does Qlik Sense provide as some data may be company sensitive?


A: In summary, any type you want. We can handle many different layers of security from authentication, authorization, action and data level perspectives. This topic can be quite elaborate, so we suggest you check out the Qlik Help site under the security topic. Data level security in regards to rows and columns can be handled with Dynamic Data Reduction and Section Access.

Q: Is it possible to see a 3D view of Geographical data?


A: In version 1.0 of Qlik Sense, no not with the available out-of-the-box chart objects. However an extension object that utilizes a 3rd party library and API such as D3 could be built to do this. In addition it could be made available from our extensive partner network.  Qlik Sense has a robust set of APIs and works with open standards making it easy and familiar for developers and partners to create such a thing. You may want to check out – Qlik Branch  - to join the developer community and download some creative and useful extensions for both QlikView and Qlik Sense. You can learn more about Qlik Sense extensions here: Qlik Sense - Introduction to Extensions (video)


Q: How could Qlik Sense work offline if a network connection is not available?


A: The free Qlik Sense Desktop could be used to access a Qlik Sense app that has been exported from the complete Qlik Sense platform or used to open a shared Qlik Sense app file provided by another Qlik Sense Desktop user; therefore providing a type of offline access.


Q: Will users have the ability to change things like fonts and font colors?


A: At the moment there is a theme engine in place that can be configured with the use of files, to change and brand the global interface and object styles. Branding and other user style capabilities are making their way into the product over time. Specifics have not been communicated just yet, however as you can see with the text / image object and the data storytelling capabilities – you can change font sizes and colors, so the capability is part of the architecture. Enhancements such as these are prioritized along with other needs.



Q: Are there any downloadable files (spreadsheets, desktop Qlik Sense file, etc) available for training?


A: There is an extensive list of video tutorials, documents, guides and samples available in the Qlik Community and the Qlik Help site, these include:


Jennell McIntire

When Not to Average

Posted by Jennell McIntire Oct 10, 2014

During a recent conversation with colleagues the topic of chart types that should be avoided when Average is used was discussed.  Do you know which charts you should avoid using if you want to show the Average?  In both Qlik Sense and QlikView there are 3 chart types:


  1. Stacked Bar chart
  2. Pie chart
  3. Treemap (Qlik Sense) and Block chart (QlikView)


In these charts, the sum of the different parts should equal the total (100%).  When Average is used in the expression of these charts that is not the case – the sum of the parts does not equal the total.  (Note that this does not include a Grouped Bar chart only a Stacked Bar chart).  For example, in the Helpdesk Management demo, the pie chart below is used to show the number of open cases by age.  If the number of open cases (or percentages as displayed in the chart) were totaled they would equal all of the open cases and 100%.


Pie chart.png


Let’s take a look at another example in a stacked bar chart.  In the Human Capital Management demo, the Demographics sheet has several visualizations that display demographics of employees based on their gender (red = unknown gender, yellow = female, blue = male).


Stacked bar chart.png


Each bar represents the total number of employees for the specified dimension but it is further broken down by the gender dimension so you can see how the parts add up to the whole.


Stacked bar chart single.png


In the chart above there are 1.52K employees in the United States (904 are male, 494 are female and 114 are unknown).  The gender totals add up to the total number of employees in the respective country.


Now there may be exceptions to this rule depending on the story that you are telling with your data but in most cases, it is fair to say that you should not use Average in the expression of a Stacked Bar chart, Pie chart, Treemap or Block chart.  So this does not mean you should shy away from the Average (Avg) function because there are many instances when it can and should be used but when you want to display the ratio to the total, avoid using Average.




QlikView has extremely powerful load script syntax which in 99% of the cases will solve every problem you have or might encounter. But sometimes you run into one of those edge cases where the standard load script syntax is not enough or the end result would be un-maintainable.


I recently ran into one of those cases when I was analyzing first names in the US. Typically with both first and last names you have many different variations of the same name.Take Susanna for example, in Sweden it’s probably Susanne or in Russia Syuzanna. Although spelled differently they do belong to the same family. But how should I group them together in QlikView?

An unlikely hero to the rescue


I settled on implementing a SoundEx algorithm, http://en.wikipedia.org/wiki/Soundex, which is commonplace in most database software nowadays. However, being somewhat lazy I quickly realized that replicating the algorithm using load script syntax would take me forever so I settled on something different.


A Google search later I had discovered the SoundEx algorithm implemented in JavaScript, http://creativyst.com/Doc/Articles/SoundEx1/SoundEx1.htm#JavaScriptCode.

Perfect, just what I needed!

The QlikView macro module supports both VB and JScript (Microsoft’s variant of JavaScript) so I could easily copy and paste the algorithm as a new macro module in QlikView. Now from my load script I can call that module during reload as such,


  //Call macro module SoundEx() – returns soundex code.
  SoundEx(Name) as SoundEx
From …


Great! Now all the loaded names have a SoundEx code attached to them which would allow me to count the names within those groups instead of only basing my analysis around the count of a single name.


This was just one use-case for how you could leverage macro modules during reload.
Seeing as JavaScript also has implemented regex you could also leverage macro modules to do phone number or address validation. With the recent explosion of open source JavaScript code on the web, chances are someone before you already built a module of what you are looking for.


A final word or warning, do exercise caution and don’t push all your logic into macro modules just because you can.
Also before you consider using macros for the front end, read this excellent post by HIC http://community.qlik.com/blogs/qlikviewdesignblog/2014/04/28/macros-are-bad

Filter Blog

By date:
By tag: