At the beginning of last year I blogged on the differences between QlikView and Qlik Sense, using Lego as a metaphor. Returning to that theme I am looking at how things are progressing as Qlik Sense is maturing as a product, and more APIs are being exposed.

Looking Back

qlikmindstorms
In my previous post (QlikView, Qlik Sense and Lego) I looked at how QlikView provides a developer with the unlimited possibilities of a bucket of standard Lego bricks, whilst Qlik Sense was more like a kit that forces you to stay within the lines of the instructions to build a highly polished end result.

Back in the early days of Sense (a product which has evolved and improved at an incredible rate) there were very rigidly defined ways in which you could work. A fixed grid for placing your objects and many of the things we knew and loved as QlikView developers (variables, KPIs, pivots) were mysteriously missing from the initial releases.

Whilst these features have now appeared, along with many others, the base product is still restrictive in how things are laid out. This is great for certain circumstances, where end users want to be able to create without having to worry about the finer details of design.

But, the tools to create hugely customised interfaces (as you could in QlikView) are there – if you have the requisite skills to harness them.

Beyond the Product – Meet the Platform

The messaging around Qlik Sense and how it was going to disrupt the market (as QlikView had before) was all around how the product could be extended and embedded. This functionality was evident right from day one, but as Sense grows up the ability to interact with Sense via APIs is becoming front and centre to the offering.

To keep with the Lego analogy, once you start programming Sense via the APIs it is more like building with Lego’s Mindstorm products than just standard bricks. With Mindstorms fantastic programmable machines can be built which will make your mind boggle. Have a look at this for example:

The only limit is the imagination, and the coding skills of the developer. The same is true of the Qlik Platform.

Software developers can build anything they want, harnessing the power of Qlik’s associative engine (QIX) and using it in ways that Qlik themselves may not have even thought of. Here I look at the ways this can be done.

Extend Sense with Extensions

These are the way that most people are introduced to the Qlik Sense API, even if they are not aware of it. Using an extension is as simple as going to the Qlik Branch site, finding something you like, downloading it and installing it to Qlik Sense. A new object is then available on your left hand menu to use within Sense, with not one line of code being written.

If you take the time to look into the extension folder that you copied or imported (in Desktop or Server respectively) you will find a number of JavaScript files. These plain text files contain the code that tells the extension how to behave. You can modify the code of an extension yourself and see the changes in Sense (certain changes will require you to delete and recreate all objects based on that extension). If you happen to be a web developer who is skilled in HTML, CSS and JavaScript then you will be able to highly customise these extensions.

Building extensions from scratch is not all that difficult either. There are certain conventions that must be followed (such as getting the Type and Name defined in the .qext JSON file) but beyond that it is pure JavaScript. Furthermore, if you download some of the Branch examples you will see that some of these do not contain massive amounts of code.

Most extensions, in fact any that do anything useful, will be interacting with the Sense API, whether that is talking to a HyperCube, interacting with variables or performing some other task.

Embed Sense with Mashups and the Single Configurator

qlikdevhub

Both of these functions can be found under the Dev Hub. This can be reached either by using the ellipsis button in the Sense Hub, or going to http://[server name]/dev-hub/ . Through the wizards here you can generate code to embed objects from Qlik Sense into other web pages (Single Configurator) or build a whole web page which pulls elements from Qlik Sense (Mashup Editor). Both of these wizards create objects that interact with the API, and they both allow you to make changes to the code (via HTML, CSS, JavaScript or URL parameters).

In both of these cases the wizards expose a small part of what is possible with the API. Just like script generation wizards in QlikView, the wizard you use has no bearing on how things work – it’s the resultant script that counts. Whilst the wizards can provide an excellent starter for ten when building these things the real power comes from going beyond these and creating your own code.

Whilst some of the functions you may want to use you need to dig around for (this is where the Engine API Explorer, also in the Dev Hub, can be a great help) there is some excellent documentation on the APIs in the Qlik help pages. Hopefully this documentation will continue to expand in both scope and depth.

Unleash Sense with The Qlik Analytics Platform (QAP)

With the techniques discussed above you can interact directly with the APIs, and pull things into your own web applications. This does not however mean you can offer functionality to users without licences. Any user that interacts with a chart that is delivered using these methods will need to be authenticated and have a token to cover that interaction. This is because they are still using Sense.

To move away from this the QAP can be used. The Qlik Analytics Platform is a term that can cause some confusion, as it gets used to refer both to Qlik’s whole stack of tools (QIX, Sense, NPrinting) but also a single offering. Here I am talking about the QAP product.

A QAP licence gives you access to all of the power of Qlik’s associative engine via the APIs, it does not however give you the ability to use any of the Sense User interface. In fact, the Sense UI is an example of something that has been built on the Qlik Platform, using the APIs, and is available to licence. A software developer could, in theory, create Sense using the platform – but there would be little point in doing this as it has already been done.

mindstorm-armWhat can be created though is (just like the Mindstorms models I mentioned above) just about anything that can be imagined within the skills of the web developer building them. Rich interactive web applications with data visualisation at the heart of them, and all the power of the associative engine.

If you want an example of an application built this way, just look at Qlik Branch. This site is driven entirely from a data model loaded into the engine and accessed via the APIs. For evidence of this just look at the powerful search tool that is part of the site.

Applications written on top of the QAP do not require end users to have a Sense licence, as Sense is not something that is being used here. This opens up a world of possibilities to organisations that want to let consumers interact with their data, perhaps as a marketing tool or to give consumers feedback on their usage of a product or service.

There is however a downside, and that is that the cost of a QAP licence puts it beyond the budget of many of these sort of solutions. The very fact that the QAP exists though shows where Qlik’s head is at with regards to driving adoption of this kind of solution.

Enter The Playground

As the same APIs are exposed by Sense Desktop, Sense Enterprise and QAP you can build applications and libraries that can be ported between the platform’s. The way apps are hosted changes, but the API code itself does not.

If your interest in the APIs is purely as a web developer that wants to create something innovative then Qlik have catered for you also. Qlik Playground is a hosted instance of the QAP that links to a number of other APIs to pull data into the engine. Developers can sign up for a free account and create web applications against those APIs which can be hosted online and interacted with by anyone. Presently there are a limited number of data sources (Twitter, GitHub and Untappd) but hopefully more will be added to soon.

There are already some example apps showing what can be done using this platform (such as these beer consumption and AirBnB examples) and developers are encouraged to submit their own so more should be available soon.

A Quantum Leap For Developers

The development skills required to create these kind of apps and extensions are quite different to the ones required to build excellent QlikView and Sense apps. This was a conscious decision by Qlik to open their previously closed world to the huge number of JavaScript developers out there. Within their own development teams things were constrained, but now with open source development (driven by Branch) the universe is expanding and maturing at a rapid speed.

This is something that can seem incredibly daunting to companies that have been delivering pure QlikView solutions. The learning curve is definitely steep, and new skills will almost certainly need to be bought in to be able to deliver solutions.

websyWe have opted to work with Websy.io, a company formed by two ex Qlik employees who are intimately aware of how to get the most out of the Qlik APIs having been involved in creating them. If you are finding the new world of web development a bit daunting I can highly recommend these guys to help you get your capabilities up to speed quickly.

I strongly believe that the companies that are going to be blazing trails with Qlik technology are going to be those that can harness the APIs. The challenge will be not to get left behind.

Final Thoughts

This doesn’t mean that there is not still a place for Qlik Sense for those that want a Lego kit with easy to follow instructions to build something that looks great and obeys the rules. Or QlikView, for those that want a bucket of random tried and tested bricks from which great things can be constructed with some skill and imagination. These applications will be around for a long time to come and will serve the needs of most users.

It’s good to know, however, that the Lego Mindstorms set of the Qlik API is available for people to build something truly amazing.

I’m very keen to hear what other peoples thoughts are on this, and also see what others have created using the APIs. Please feel free to share thoughts and links in the comments below.