In this article, I'm proposing to extend Qlik Sense's capabilities with an automation server, based on EasyMorph Server. Such extension significantly simplifies a whole range of automation scenarios initiated by Qlik Sense user, that are difficult or non-trivial to implement otherwise. For instance:
- Database writeback based on current selection in Qlik Sense.
- One-click export of a subset of data from a Qlik Sense app into an external system or a disk folder.
- Sending personalized emails with attached customized data extracts from Qlik Sense.
- Downloading a particular file from a web-site and dynamically adding its content to a Qlik Sense app.
- Automated data quality checks of incoming source data with rule-based email notifications.
The integration mechanism between Qlik Sense and EasyMorph Server is based on REST API and Websockets (see the diagram below):
Click to zoom |
Actions are initiated by a Qlik Sense user by clicking a dynamically generated hyperlink, or an extension button. This triggers an EasyMorph Server task which runs an EasyMorph project with specified parameters (passed through the hyperlink or extension). The project performs required actions with external files and systems. Finally, the task status is reported back into the Qlik Sense app that initiated it. Alternatively, the task initiates a full or partial reload of the app using the REST API.
A few benefits of such integration scheme:
- In one Qlik Sense application there can be multiple action buttons that initiate different actions.
- It works well with tiered Qlik Sense apps, where one app is for ETL, another for building a data model, and another one for the UI objects.
- Closed loop feedback: task status and result are reported back to the user. If the task fails the errors will be reported to the user as well.
- Task parameters can be assigned dynamically using Qlik Sense variables and expressions.
- The action server can be hosted on a different machine thus reducing exposure of the Qlik Sense sever.
At this point we're half-way to implementing the integration scheme described above. This means that some of its elements are already in place, while other are in active development and will be released soon. As of version 3.7.1 already available:
- EasyMorph Server REST API
- Triggering EM Server tasks via hyperlinks that can contain task parameters
- Executing external applications and Windows shell commands.
- File commands: copying, downloading, unzipping, etc.
- Conditional IF...THEN...ELSE workflows
- PowerShell integration (think VBA replacement)
- Sending emails with attachments
- 90+ ETL transformations and 100+ functions.
The tool set described above is already suitable for adding automation capabilities to Qlik Sense apps. For instance database writebacks, extract generation or email sendouts are already possible by using dynamic hyperlinks in Qlik Sense applications. For better user experience and more advanced automation capabilities, a few more features are being developed and planned for release in version 3.8:
- An interactive Qlik Sense app extension for triggering EM Server tasks and monitoring task status and errors in real-time.
- The Qlik Sense Command transformation for triggering reloading Qlik Sense apps and QMC tasks right from EasyMorph projects.
- Fetching emails and processing attachments.
With the addition of these features, the full integration scenario described in this article becomes possible. Besides that, EasyMorph will be able to work as a visual data transformation tool for Qlik Sense:
Click to zoom |
In this case, a user triggers (through a link or extension) an EasyMorph task that generates QVD files (one file per one table in data model) and initiates reloading of the Qlik Sense app that called it. The app loads the generated QVDs.
If you would like to talk about about automation for Qlik Sense, send me an email (you can find my address in the upper right area of this blog or here).
To receive future updates on EasyMorph and its integrations with Qlik and other systems, subscribe to our newsletter on the download page.