This is a basic example in order to get started with Advanced Analytics Integration in Qlik Sense using PYTHON.
The architecture at a high-level looks like this:
With this new capability, it is possible to add syntax to a chart expression that tells Qlik Sense that particular expression should not be evaluated on the Qlik Sense server, but instead, all the information and data needed to calculate that expression should be sent via the server side extension on to the back end Python system for calculation.
After the advanced analytic calculations are completed, the data is sent back to the Qlik Sense Server and to the client for visualization.
- Qlik Sense Server, all versions
- Qlik Sense Desktop, June 2017 release or later.
! The information in this article is provided as-is and to be used at own discretion. Depending on tool(s) used, customization(s), and/or other factors ongoing support on the solution below may not be provided by Qlik Support.
In order to display a "Hello World" message in Qlik Sense Desktop and with Qlik Sense Enterprise, please do the following steps.
- Note: If using Qlik Sense Desktop, install the June 2017 release or later.
- Make sure you have Python 3.4 (or later) installed including 'PIP' option
- Install the
grpcio package. In order to install grpcio, use:
python -m pip install grpcio
- Install the google package. Use pip install google
- Install the google API Python package: Use pip install --upgrade google-api-python-client
- Install the protobuf package. Use pip install protobuf
- Note: For Qlik Sense Desktop only, add
SSEPlugin=<EngineName>,localhost:<port> on a new line in your Settings.ini file located at C:\Users\[user]\Qlik\Sense. For example: SSEPlugin=SSEPython,localhost:50052
- Note: For Qlik Sense Server, see Creating an analytic connection
- Create a Qlik Sense app with basic data. In the app attached to this article Inline Load of 2 strings was used.
- Note: See example app attached. Create a new KPI object in a Sheet. Under Measures, add - SSEPython.ScriptAggrStr('", ".join(args)' , HelloWorldData)
- A Plugin using Python needs to be written so that you can communicate between Sense & Python engine using gRPC. See attached the example written using the open-source plugin provided by Qlik in order to test this functionality. Please note that these plugins are open-source and support will not be provided for it by Qlik Support (refer to the T&C in https://github.com/qlik-oss/server-side-extension/blob/master/docs/writing_a_plugin.md). See also How is custom code supported by Qlik Technical Support?
- Run the plugin in CMD prompt, using command: python ExtensionService_helloworld.py Note: Troubleshoot ModuleNotFoundError
- You will be presented with this screen -
9. Now restart Qlik Sense desktop & open your Sense app.
10. You should the below object utilizing Python -Understanding the Python script & Function:SSEPython.ScriptAggrStr('", ".join(args)' , HelloWorldData)
Eight script functions are automatically added to the functionality of the plugin. What is needed to be covered on the plugin side to fulfill
the functionality is to implement the Script aggregate rpc function.
The syntax of these functions is -
where the Script is a Python script to be evaluated & Parameter is the data sent from Qlik's end.
Here, the ScriptAggrStr
function is used which accepts argument of type String & returns a String after an aggregation. The 'join' function in Python method returns a string, which is the concatenation of the strings in the sequence seq. The separator between elements is the string providing this method. From Qlik side, we pass a field called HelloWorldData which contains the 2 strings as we have loaded.
To use SSE function(s) to load data via application load script, the "Extension" clause needs to be used. See additional information as well as an example under Load > Argument > Extension and Examples > Loading from Analytic connections via the following link: Script Regular Statements: Load