thumb.pngHey guys - what a week we had at Qonnections! If I met some of you while attending, it was a pleasure to meet you in person and I'm glad we had a chance to chat. I look forward to working with you in the Qlik Community.  I also hope you have seen all the great content created by our Qlikies, analysts, partners and colleagues. Be sure to check our corp blog for the latest highlights and references. As we play catch-up and recoup from Qonnections withdrawal, one particular feature made a good impression on many that I spoke with at Qonnections.  So much so I decided to create a Qlik Sense in 60 on it to showcase it.


Within in the April 2018 release of Qlik Sense, you can now publish Qlik Sense apps to - AND - move apps from - Streams directly from within the Qlik Sense Hub. Making it much easier for content admins to share their Qlik Sense apps with the greater community. Check out this quick video to see how it is done:



Qlik Sense in 60 - Publish and Move from Hub



Michael Tarallo (@mtarallo) | Twitter


Can't see the video? YouTube blocked by your region or organization? Download the .mp4 to view on your computer or mobile device.



Hopefully you all attended Qonnections 2018 and saw Jimmie on the bike !!!

twitter4.jpg is the latest mashup build entirely with Qlik's open source libraries, Qlik Core, Enigma.js, Picasso.js, Leonardo UI and the Demo Team's Qdt-components.


Here is briefly how we did it

  • Sensors are sending data wireless to the Raspberry Pi
  • Node.js reads and writes csv
  • Qlik Core in Raspberry Pi is reading csv with a reload script and saves the data
  • Enigma.js connects and gets the data from Qlik Core then, Picasso.js is displaying that data in a graphical format
  • Node.js is uploading the qvds on
  • is a Docker that runs 2 containers in an AWS EC2 instance. One for the Qlik Core / Engine and another for an apache server
  • The htdocs and the Apps for the Qlik Core, are mounted outside of the 2 containers so there is no need to reload containers or recreate the Docker images, once the html code is changed or the qvf
  • Once uploaded, a Node.js restful api endpoint is reloading the session app, reads the new data from the just uploaded qvds and saves the qvf with the new data
  • React.js with Qdt-components is connecting to Qlik Core on the server and is getting the data
  • Qdt-components is rendering 11 KPI components and one search component (Leonardo UI) on the Rider field
  • Picasso.js is used to read the data and display a scatter plot and a line chart with tooltip and multiple selections


Expect more examples in the coming future with these combinations of our Open Source Software!!!!!



Arturo Muñoz

Introducing qdt-theme

Posted by Arturo Muñoz Apr 24, 2018

On the demo team we have been very busy lately working in some cool stuff for the community, qdt-components is a notable example of our commitment and contributions to the Qlik Community.


With the announcement of the new theme capabilities that were added to Qlik Sense in the February release we wanted to extend our involvement with you by sharing a custom theme we developed internally.


The qdt-theme is a curvy, bolder theme that significantly modifies the default look of Qlik Sense Desktop. Our goal was to create an appealing theme that you all can use right away, but more importantly we wanted it to be a theme for you to modify and extend as well.

In qdt-theme we changed font types, font sizes and a variety of styles including the current selection bar to make it fit in the new color scheme. Also, we incorporated lots of color palettes (borrowed from other themes, thank you) so you have a wild variety of schemes to choose from.



You can check out the qdt-theme library at our Demo Team's GitHub:


Hopefully you find it useful.

Enjoy it!

Hey guys - it's What's New in Qlik Sense time and I have prepared a brief video to share some of the awesome highlights in our next release Qlik Sense April 2018.



Highlights include:


Assisted data visualization with Qlik Sense chart suggestions / recommendations

Qlik Sense recommendations make it easier to create a visualization by allowing you to simply drag and drop fields onto your sheets. Chart suggestions are created using the Cognitive Engine in Qlik, which leverages insights from the data loaded and combines them with best practices for data visualization.


NEW Grid Size control

Now with the creation of a new sheet, the application author can choose between 3 grid sizes - small, medium and large.


Maps visualizations improvements

Qlik Sense April 2018 features significant improvements to the built-in maps visualization:

  • Support for multiple layers.
  • Labels for point layers and area layers.
  • Quick look up of countries, divisions, cities, postal code areas.
  • Circle select with distance measure.
  • Drill down support.
  • Layer control, zoom limit and draw order.
  • English or local name in the background map.


Publishing an app from the hub

In Qlik Sense April 2018 you can publish an app that you have created to any stream for which you have publish access. If you have published an app to a stream, you can move your app between the streams for which you have permission to publish.


Qlik Geocoding
A new subscription service part of the Qlik GeoAnalytics product package, that allows you to coordinate geo lookups all the way down to the street level.


Also included:


Keyboard navigation support for Qlik Sense hub

To improve accessibility, Qlik Sense hub now supports keyboard navigation and shortcuts.


Linking Qlik Sense Mobile to third-party applications

Qlik Sense Mobile can now interact with third party mobile applications through a custom generated URL (deep link). The link can be embedded within the third party mobile application, with appropriate selections and filters. Clicking the link opens the app in Qlik Sense Mobile with the filters and selections that were applied during original presentation. As a result, user experience is improved and context is provided when interacting with the app.


Enable anonymous users to export data

From Qlik Sense April 2018 anonymous users can print and export data.


For a complete list of fixes and improvements check out the release notes in the Qlik Help site.


You can download it from our customer downloads site or play with it right now on


Note: Our amazing product content and media team has also produced a number of updated videos supporting this release, check them out here on the Qlik Help YouTube channel:


Qlik Sense April 2018 Playlist


Can't see the video? YouTube blocked by your region or organization? Download the attached .mp4 to play on your computer or mobile device.


Additional resources:




Michael Tarallo (@mtarallo) | Twitter


Hey guys - I know you will love this blog and video as much as I enjoyed making it; working with this really smart feature in the Qlik Sense April 2018 release. Here I will present a new feature made available in Qlik Sense April 2018, Chart Suggestions / Recommendations. If you have tried the Qlik Sense 2018 Technical Preview, then you have already got a glimpse of the power of the new Cognitive Engine. In my opinion the best part of this release are the new capabilities and future possibilities brought about by the new Cognitive Engine. Its main purpose is to streamline and enhance the analytics creation experience - taking you from data to insight in a matter of seconds / minutes. In short the Cognitive Engine leverages best practices, augmented intelligence and perhaps a little elf magic - along with your loaded data, to not only recommend data model associations BUT also suggests the best visualization for your data. All you need to do is drag and drop measures and dimensions either on to the design canvas or chart objects and the suggested visualization will display -  best depicting your data (no magic words required).  Allowing users to focus their efforts on gaining insight instead of building charts. Let me give you a quick demonstration.


You can try this right now in Qlik Sense Cloud!




Can't see the video? YouTube blocked by your region or office? Download the .mp4 to watch on your computer or mobile device.


Sample data attached.

Francis Kabinoff

Introducing qdt-lui

Posted by Francis Kabinoff Apr 13, 2018

If you follow our blog posts regularly, you'll know we've been working on a library called qdt-components which includes a bunch of custom components we're using in our Qlik-powered apps. We've been using Bootstrap 4 with reactstrap, which is a collection of React components that use Bootstrap 4. The thing is that made Bootstrap 4 a dependency, and many of its styles are global, and that was a problem. We also wanted to be able to use Qlik's own Leonardo UI as a general style guide, but we needed the functionality of things like Bootstraps dropdowns. So we've been working on a new library called qdt-lui, which is a collection of React components that use Leonardo UI,  Just today we finally finished replacing all of the reactstrap components in qdt-components with qdt-lui components! There's still a bit of styling to touch up on because of this transition, but for the most part it's looking and working great.


So the general idea is very similar to reactstrap, but instead of creating React components that use Bootstrap for styles, we use Leonardo UI. So far, we have 6 components, and they are - LuiButton, LuiDropdown, LuiIcon, LuiList, LuiListItem, and LuiSearch. If you're familiar with Leonardo UI, you may be aware that Leonardo UI doesn't have a dropdown component at all, it's actually a select component that just reskins an actual html select element. But for our use cases, select elements are generally not very useful, so we borrowed the styles from the Leonardo UI select component and built something very similar to a bootstrap dropdown.


The LuiSearch component uses the Leonardo UI search component styles, but makes it a controlled react component which accepts as props a value and a clear method, so you can control the value from the parent component, and we can call the passed down clear method to clear the value in the parent component when you click on the clear symbol that's in the component. Again, this pattern is very similar to reactstrap, and what we've been using as a reference when building these components.


So check it out here - and hopefully you find it useful. You'll be seeing it used a lot from us now in most of our projects on the demo team, and we'll have a lot of examples soon. Documentation is non-existent at the moment, but checking the source of each component and taking a look at the prop-types it should be pretty clear for now, but documentation will be coming. It's still marked as alpha, but we'll be moving it to beta soon. Let us know what you guys think, if you find this useful, and any features that you would like to see. Oh, and any pull requests submitted would have us spinning in our chairs excited, so if you're so inclined to contribute, that would be very, very cool.

1 f6YOV8dKjI9lXCC7TUpjIQ.pngImagine having a suite of proven tools and technologies built for developers by developers that allows you to build highly-scalable, cloud ready solutions using the power of the Qlik Associative Engine. Well, imagine no longer last Friday, 4/6,  we released the Beta of Qlik Core. Qlik Core is a development platform built on top of the Qlik Associative Engine. With Qlik Core, you can take advantage of the powerful associative indexing engine from Qlik to build your custom data exploration and data visualization solutions.


Please note that Qlik Core is a product - but it is not something you simply download and install with an installer. It works with technologies such as Node.js, Docker and Kubernetes and development knowledge of working with APIs is a prerequisite.  To learn more about the Qlik Core Beta and to get started watch this brief video below and visit - where our product manager John Trigg provides some more of the particulars. You can also visit the many getting started resources here


This brief video below is a short promotional video designed to briefly introduce Qlik Core.


Introducing Qlik Core



Michael Tarallo (@mtarallo) | Twitter



Can't see the video? YouTube blocked by your region or organization? Download the .mp4 to view on your computer or mobile device.

Jennell McIntire

Replace() Function

Posted by Jennell McIntire Apr 6, 2018

The Replace() function can be used in the script or a chart to replace all occurrences of a sub-string with another sub-string within an input string.  Basically, you can replace a character or string of characters in a field or input string.  The syntax from Qlik Help looks like this:


Replace(text, from_str, to_str)

The first parameter, text, is a string.  This can be a field or some text.  The second parameter, from_str, is the string you would like to replace in the input string.  This can be a single character or a string of characters.  The third parameter, to_str, is the string that should replace the second parameter.  If the from_str is not found in the text then nothing is replaced.  The Replace() function works from left to right.


I have used the Replace() function when I have a field that has some characters that I do not need.  For example, I was loading names in a recent project and some of the names had a leading underscore character (_).  Since this was the case with only some of the names and not all, I used the Replace() function to replace the underscore with an empty string using syntax like this:


You can also nest the Replace() function.  I have used this if there is more than one character I would like to replace in a string.  The nesting works from the inside out so keep this in mind as it may affect your results.  In the table below are a few examples of how Replace() can be used.


  • Column 1 - shows the original text string for Product.  This is the first parameter for all the Replace() examples.
  • Column 2 – replaces the underscore with a space.
  • Column 3 – is an example of a nested Replace() function.  First it replaces the underscore with an empty string.  Then it looks at the result of that string and replaces the question mark with an empty string.  The last step is to look at the results of that string and replace underscore question mark (_?) with a space (which will not be found in the Column 3 example).
  • Column 4 – is another example of a nested Replace() function but notice how the order affects the results for the input string “Product_?E”.  Since the first Replace() function to be evaluated replaces the “_?” with a space, the next two Replace() functions do not find the second parameter to replace.  Therefore, the result is “Product E” with a space before “E.”  In Column 3, the result is “ProductE,” without a space, since the underscore and the question mark were replaced individually with an empty string before the Replace(‘_?’, ‘ ‘) part of the expression was executed.


While my example shows how the Replace() function can be used in a chart expression, I always use it in the script to handle any replacements as I load the data.  What is nice about the Replace() function is it does not modify the text if the sub-string cannot be found.  With that in mind, you should make sure you want to replace all occurrences of the sub-string because there is not an option to pick and choose which sub-string occurrences to replace - all of them will be replaced.




We have been adding more features to our qdt-components and some of these, are the latest Picasso.js charts.


Here are the charts that we have so far.

Also you can interact with them live on our react template,


  1. You can Embed any object from Qlik Sense and the Capability API
  2. You can create any custom Session object by defining your own definition properties like dimension, measures, title, subtitle, color, order etc
  3. There is a custom Selection Toolbar that we use extensively in our mashups
  4. A Picasso Horizontal bar that detects the height of the div. Once The bars exceed that, it adds a scrollbar. It also features multiple selections and tooltip
  5. The same idea but with vertical bars
  6. A new Picasso Pie Chart with Legend, multiple selections and tooltip
  7. A new Scotterplot with multiple selections, tooltip and legend
  8. And now the latest addition, scotterplot with custom images
  9. A simple line chart

10. Combo chart



More are coming soon with this amazing library!!!!



My buddy from down under is back in this week's edition of the Qlik Design Blog. Lee Mathews, Qlik Principal Solution Architect based in Melbourne Victoria, Australia, shows and tells how Qlik Sense can be used for financial reporting.


Financial Reports with Qlik Sense


I often have customers asking how they can produce financial style reports in Qlik. These reports are actually quite difficult to produce in most BI systems, as they usually require calculations and formatting that needs to change row by row. Most BI systems produce tables of data that display a single calculation in each column, with a dimension being used to provide a breakdown for the rows. Qlik is actually no different in this regard, however there are several aspects of the Qlik platform that provide the flexibility to replicate structured financial reports. Let me briefly introduce these aspects below:

  • Qlik’s powerful Extract Transform and Load (ETL) capabilities make Qlik the ideal platform for combining and reporting on data from disparate systems. But these ETL capabilities also allow you to take a data set and restructure it to include the necessary sub-totals that must be displayed in a financial report for example. You can also then flag these sub-totals in the data model so that different formatting can be applied to them in the UI.

  • Qlik’s extensive APIs allow visualization extensions to be created easily, with formatting options specifically for structured financial reporting. Two such extensions are illustrated in the video below, along with the use of the standard Qlik Sense pivot table object.

  • Qlik’s flexible expression syntax allows for a variety of tricks, to ensure that the right expression is displayed on each row. This includes Pick/Match functions, If Then Else logic, and of course Qlik’s powerful set analysis capabilities.

3-27-2018 10-40-08 AM.png

The short video below shows several approaches to producing structured financial reports. It is by no means an exhaustive list of techniques, but is a good overview of some of the options available.




Lee Matthews
Principal Solution Architect


Qlik Sense for Financial Reporting


Can't see the video? Download the .mp4 to watch on your computer or mobile device.

Sometimes the secret sauce of a successful data visualization project lies in the correct choice of the visual object(s) that represents the data. Factors like picking the right chart, placing it in the right spot, and user interaction are key to make a data piece memorable, insightful, and truthful. However, on other occasions, the key to success is to “simply” make data available, this is particularly true for data that was previously inaccessible to most of us.


An example of this is our latest project. We partnered with Canadian National Post to, for the first time, make available over 6 million donations made on a national scale during the last 25 years.




In the last decade, open data has been a hot topic for governments all over the world, but open or public data isn't necessarily easy to access. That’s especially true when it's data that can help citizens to understand and track how our politicians’ campaigns are funded.

There are no consistent rules — or penalties — for political financing across Canada. Spending limits, out-of-province and foreign gifts, money from unions and corporations, donations from numbered companies: in some places anything goes, in other regulations are rarely enforced.


For Qlik one of the project main challenges was the data cleaning and normalization process. The project contains more than 25 different data sources. We fixed some of the most obvious issues with data, please read the methodology page (, but we also wanted the data to show how it was originally recorded without any makeover. It’s common to find small variations in names across the app, for example chances are that the donor names ‘Justin Trudeau’ and ‘Justin P.J. Trudeau’ belong to the same person also known as Justin Pierre James Trudeau.


We ended up having a large app holding around 6.5 million rows of data (at the time of writing) and a clear goal, make the data searchable. Anyone should be able to find individual donations and get some information about the shape of the data.


We used enigma.js to interface our Qlik Engine API and React to build the user interface. We created a powerful piece that displays millions of rows of data in the blink of an eye. React.js is designed to work with simply reacting to changes in data, and its super-efficient diffing algorithm makes DOM updates super-fast resulting in a blasting fast experience.




The main table displays the more granular level of data including individual donations and all the relevant details. To show the complete 6.5 millions of rows we use virtual scrolling and paging. The table is getting new data from the server as users scrolls the table.


We also included two bar charts to ease the data profiling task, compressing down millions of rows to a few bars. Lastly we use two small tables to illustrate the top donors and donations so the readers who are interested only in the super donors have a quick way of finding the information in the table.






Check the online version here Follow the Money - Political Donations Database | National Post



Hi guys - when working with a customer requirement, I recently discovered some additional controls one can implement in a published Qlik Sense app. There may be times, when you want to hide additional fields that are displayed in the Qlik Sense design interface. Now these fields are commonly ID and KEY fields which may not be necessary to one's analysis and the requirement might not always be for any specific in our example they simply just want to control the visibility in the interface to reduce clutter and confusion.

Under default conditions, these fields will be displayed in the data visualization's field selector, the data properties drop down and in the expression editor. During this discovery, I was under the impression that when a user (consumer / viewer / non ContentAdmin role) - who can create their own analysis from a approved base app, they would only see the measures and dimensions populated in the Master Items panel on the left. While this is true, I discovered that the aforementioned user interface components, still display ALL the fields.


Here is how you can control that: Use system variable HidePrefix

set HidePrefix='_' ;

Watch this video to learn more:




Note: The data model fields are STILL accessible - however one would need to know what the prefix character is in order to use it in the expression editor or to be able to access it.


3-19-2018 5-18-41 PM.png


If you need an extra layer of security - where access to certain fields and data are restricted per user, group, or role then you would use section access to control the available fields and data from displaying.

One of our community members has also made mention you can use:



Tag Fields

[Hidden Field 1],

[Hidden Field 2],

[Hidden Field 3]

with $hidden;



Thank you!


Can't see the video? YouTube is blocked by your organization or region? Download the .mp4 to view on your computer or mobile device?



Michael Tarallo

As many of you know, custom themes shipped with Qlik Sense February 2018, and we covered how to start creating custom themes which you can check out here -How to create a custom theme in Qlik Sense. But did you know that Qlik Sense February 2018 also shipped with a new Theme API under the Capability APIs collection?


What can you do with the Theme API?

The Theme API can basically be used for two purposes, to get and to apply themes. You can view the documentation here - Theme API. Getting a theme is useful for applying styles to extensions, widgets, and mashups that are identical to the theme style. You can also apply themes to both Qlik Sense apps and independently of the theme set in the Qlik Sense app to native Qlik Sense objects created or embedded using the Visualization API (or app.getObject, if you're still using that).


You can get a theme using one of two different methods, the `get` method and the `getApplied` method. The difference is that the `get` method you call on the `qlik` object and pass a theme id to get any theme in your extensions, while the `getApplied` method you call on an instance of an `app` and it simply returns the current theme applied to that app. The `getApplied` method is particularly useful for widgets and extensions, since it allows you to style your widgets and extensions in such a way that they will match the theme the user applies to their app.


Both the `get` method and the `getApplied` method returns a promise which resolves to a `QTheme` object. The `QTheme` object currently has two methods available on it, the `getStyles` method, and the `apply` method. The `getStyles` method can be used to get a particular style by passing it a few parameters. It's an easy way to find the style you are looking for in the `QTheme` object. The `apply` method is one of the ways in which you can apply a theme to all visualizations on the page.


You can also apply a theme using the `apply` method of the Theme API without first fetching a `QTheme` object. The `apply` method of the Theme API just requires that you pass the theme id. These apply methods are particularly helpful for applying a theme to mashups and other embedded visualizations. Below is a code sample and image of the mashup with the theme applied.


require( ["js/qlik"], function ( qlik ) {


 var app = qlik.openApp('Helpdesk Management.qvf', config);

} );



There's one final method to mention, and that is the `save` method. The `save` method allows you to programmatically set the theme in a Qlik Sense app. This differs from simply applying a theme, as it actually sets and saves the theme in the Qlik Sense app, and not just for the session like the apply methods do.


And that's the introduction to the Theme API.

Hi Guys - do you have 4 minutes? Good, then let's forego my normal formalities this morning and jump right into it!


Here are some recent product and resource updates s well as an informal list of features for the next release of Qlik Sense - April 2018.


Let us know what you think in the comments below.




Michael Tarallo (@mtarallo) | Twitter



Links mentioned in the video are:





  • Can't see the video?
  • YouTube blocked by your organization or region?


Download the attached .mp4 to view on your computer or mobile device.

As a member of the Demo Team, I often use random, dummy data to build demos.  If the data is not exactly how I would like it to be, I can tweak it to best illustrate Qlik products and features.  One of the tweaks that I often make is to update the dates in the data model – I take an old data set from a few years ago and refresh it so it looks more current.  The AddYears and AddMonths functions make this easy to do.


The AddYears and AddMonths functions can be used in the script and in a chart.  Here is how the AddYears function is defined in Qlik Sense Help.



This function returns the date occurring n years after startdate or, if n is negative, the date occurring n years before startdate.



AddYears(startdate, n)


The AddYears function adds or decreases a date by the number of years indicated in the second parameter.  If the parameter is positive, the date is increased, and if the parameter is negative, the date is decreased.  In the table below, the Date column has the original date.  The AddYears(“Date”, 5) column increases the date by 5 years.  The AddYears(“Date”, -5) column decreases the date by 5 years.  You can see how easy this to use to refresh the dates in your data model.


The AddMonths function works the same way except the AddMonths function has a third parameter to set the mode.  The syntax looks like this:



This function returns the date occurring n months after startdate or, if n is negative, the date occurring n months before startdate.



AddMonths(startdate, n , [ , mode])


The mode, as defined in Qlik Sense Help, “specifies if the month is added relative to the beginning of the month or relative to the end of the month. If the input date is the 28th or above and mode is set to 1, the function will return a date which is the same distance from the end of the month as the input date. Default mode is 0.”


Let’s look at some examples.  In the table below, the AddMonths(“Date”, 3) column add 3 months to the date in the Date column and AddMonths(“Date”, -3) shows a date 3 months prior to the date in the Dates column.  By default, mode is 0 so by excluding it I am assuming the default value.  So you can see that AddMonths(“Date”, 3, 0) returns the same results as AddMonths(“Date”, 3).  If I set the mode to 1, AddMonths(“Date”, 3, 1), it will take into account the distance of the date from the end of the month when the day is the 28th or above.  You can see that for the Dates 1/1/2013 and 1/15/2013, AddMonths(“Date”, 3, 1) returns 4/1/2013 and 4/15/2013, respectively, as you would expect.  But for 1/30/2013, the results are a little different.  Since the 30th is past the 28th day of the month, the function checked to see how many days from the end of the month the day falls.  In this case, the 30th is 1 day from the last day of the month (which is the 31st for January).  So the results of AddMonths(“Date”, 3, 1) will return a date 3 months later and 1 day from the last day of the month, hence 4/29/2013 since there are 30 days in April.


The AddYears and AddMonths functions can also be used to create a new date in your data model.  For instance, if you need to create a new date field that is one month after a transaction date, you can do that in the script with an expression like this:


AddMonths(“Transaction Date”, 1) as “New Date Field”


There are many ways these functions can be used in your app.  The one thing to keep in mind is if you are going to increase or decrease the dates in your data model, you should do so consistently.  Make sure you are updating all dates in the data model by the same time frame.  This way, date relationships in the data model are maintained throughout the app.  You may also need to update other date related fields like day, week, month, year, etc. if you are using these fields in your app.




Filter Blog

By date:
By tag: