<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article Getting Started with Advanced Analytics in Qlik Sense using Python in Official Support Articles</title>
    <link>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/ta-p/1711379</link>
    <description>&lt;P&gt;This is a basic example in order to get started with Advanced Analytics Integration in Qlik Sense using PYTHON.&lt;/P&gt;
&lt;BLOCKQUOTE class="quote"&gt;This customization is provided as is. Qlik Support cannot provide continued support of the solution. For assistance, reach out to our &lt;A href="https://community.qlik.com/t5/Official-Support-Articles/How-and-when-to-contact-Qlik-s-Professional-Services-and/ta-p/1714936" target="_blank" rel="noopener"&gt;Professional Services&lt;/A&gt; or engage in our active &lt;A href="https://community.qlik.com/t5/Integration-Extension-APIs/bd-p/qlik-sense-integration-extension-api" target="_blank" rel="noopener"&gt;Integrations forum&lt;/A&gt;.&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The architecture at a high-level looks like this:&lt;BR /&gt;&lt;BR /&gt;&lt;IMG src="https://qlik.my.salesforce.com/servlet/servlet.ImageServer?id=015D0000006AH0f&amp;amp;oid=00D20000000IGPX&amp;amp;lastMod=1539301744000" border="0" alt="User-added image" /&gt;&lt;BR /&gt;&lt;BR /&gt;With this new capability, it is possible to add syntax to a chart expression that tells Qlik Sense that a 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&amp;nbsp;via the server side extension on to the back end Python system for calculation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;After the advanced analytic calculations are completed, the data is sent back to the Qlik Sense Server and to the client for visualization.&lt;/P&gt;
&lt;P&gt;For an example with video that uses R-Server instead, see&amp;nbsp;&lt;A href="https://community.qlik.com/t5/Support-Knowledge-Base/R-Integration-with-Qlik-Sense/ta-p/1717165" target="_blank" rel="noopener"&gt;R Integration with Qlik Sense&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 class="qlik-migrated-tkb-headings"&gt;&lt;STRONG&gt;Resolution:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;In order to display a "&lt;FONT face="courier new,courier"&gt;Hello World&lt;/FONT&gt;" message in the Qlik Sense App, Perform the steps below:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; To obtain the latest HelloWorld example and other Python examples, see &lt;A href="https://github.com/qlik-oss/server-side-extension/tree/master/examples/python" target="_blank" rel="noopener"&gt;Python Examples&lt;/A&gt; in Qlik's Github repository. Make sure to check out the &lt;A href="https://github.com/qlik-oss/server-side-extension/blob/master/examples/python/GetStarted.md" target="_blank" rel="noopener"&gt;GetStarted.md&lt;/A&gt; documentation as well.&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Make sure you have Python 3.4 (or later) installed including 'PIP' option. Run&amp;nbsp;&lt;FONT face="courier new,courier"&gt;python -m pip install --upgrade pip&lt;/FONT&gt; to upgrade to latest version of pip.&lt;/LI&gt;
&lt;LI&gt;Install the&amp;nbsp;&lt;FONT face="courier new,courier"&gt;grpcio&lt;/FONT&gt;&amp;nbsp;package. In order to install it, use:&amp;nbsp;&lt;FONT face="courier new,courier"&gt;python -m pip install grpcio&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Install the&amp;nbsp;&lt;FONT face="courier new,courier"&gt;numpy&lt;/FONT&gt;&amp;nbsp;package. In order to install it, use:&amp;nbsp;&lt;FONT face="courier new,courier"&gt;python -m pip install numpy&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Install the&amp;nbsp;&lt;FONT face="courier new,courier"&gt;nose&lt;/FONT&gt;&amp;nbsp;package. In order to install it, use:&amp;nbsp;&lt;FONT face="courier new,courier"&gt;python -m pip install nose&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Install the&amp;nbsp;&lt;FONT face="courier new,courier"&gt;pandas&lt;/FONT&gt;&amp;nbsp;package. In order to install it, use:&amp;nbsp;&lt;FONT face="courier new,courier"&gt;python -m pip install pandas&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Install the &lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;google&lt;/SPAN&gt;&lt;/FONT&gt; package. Use &lt;FONT face="courier new,courier"&gt;python -m&amp;nbsp;&lt;SPAN&gt;pip install google&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Install the &lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;protobuf&lt;/SPAN&gt;&lt;/FONT&gt; package. Use &lt;FONT face="courier new,courier"&gt;python -m&amp;nbsp;&lt;SPAN&gt;pip install protobuf&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;May need to install the google API Python package on older examples: If so, use &lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;pip install --upgrade google-api-python-client&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&amp;nbsp;If using Qlik Sense Desktop, add&amp;nbsp;&lt;FONT face="courier new,courier"&gt;SSEPlugin=&amp;lt;EngineName&amp;gt;&lt;/FONT&gt;,&lt;FONT face="courier new,courier"&gt;localhost:&amp;lt;port&amp;gt;&lt;/FONT&gt;&amp;nbsp;on a new line in your&amp;nbsp;&lt;FONT face="courier new,courier"&gt;Settings.ini&lt;/FONT&gt;&amp;nbsp;file located at&amp;nbsp;&lt;FONT face="courier new,courier"&gt;C:\Users\[user]\Qlik\Sense&lt;/FONT&gt;. For example:&amp;nbsp;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;SSEPlugin=SSEPython,localhost:50052&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&amp;nbsp;If using Qlik Sense Server, Create an Analytic Connection. See &lt;A href="https://help.qlik.com/en-US/sense-admin/Subsystems/DeployAdministerQSE/Content/Sense_DeployAdminister/QSEoW/Administer_QSEoW/Managing_QSEoW/create-analytic-connection.htm" target="_blank" rel="noopener"&gt;Creating an analytic connection&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Create a Qlik Sense app with basic data. In the app attached to this article Inline Load of 2 strings was used. &lt;STRONG&gt;Alternatively&lt;/STRONG&gt;, use the HelloWorld example app included with the Server-Side Extension (SSE) package that can be downloaded in .zip format under&amp;nbsp;&lt;A href="https://github.com/qlik-oss/server-side-extension" target="_blank" rel="noopener"&gt;Qlik SSE.&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; See example app attached. Create a new KPI object in a Sheet. Under Measures, add:&amp;nbsp;&lt;FONT face="courier new,courier"&gt;SSEPython.ScriptAggrStr('", ".join(args[0])' , HelloWorldData&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;)&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;A Plugin using Python needs to be written so that you can communicate between Sense &amp;amp; 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&amp;amp;C in &lt;A href="https://github.com/qlik-oss/server-side-extension/blob/master/docs/writing_a_plugin.md" target="_blank" rel="noopener"&gt;Writting an SSE Plugin&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Run the plugin in CMD prompt, using command: &lt;FONT face="courier new,courier"&gt;python&amp;nbsp;ExtensionService_helloworld.py&amp;nbsp;&lt;/FONT&gt; Note: Troubleshoot &lt;A href="https://community.qlik.com/t5/Qlik-Server-Side-Extensions-Discussions/Qlik-Sense-SSE-Python-error-ModuleNotFoundError-No-module-named/td-p/1425554" target="_blank" rel="noopener"&gt;ModuleNotFoundError&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;You will be presented with this screen&lt;BR /&gt;&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="running server in insecure mode on port.png" style="width: 500px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/119779i5B60C52C0EA1C40D/image-size/large?v=v2&amp;amp;px=999" role="button" title="running server in insecure mode on port.png" alt="running server in insecure mode on port.png" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;Now restart Qlik Sense desktop &amp;amp; open your Sense app&lt;/LI&gt;
&lt;LI&gt;You should the below object utilizing Python:&lt;BR /&gt;&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hello world.png" style="width: 457px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/119781i94416B361362FFC3/image-size/large?v=v2&amp;amp;px=999" role="button" title="hello world.png" alt="hello world.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;FONT color="#339966"&gt;&lt;STRONG&gt;Understanding the Python script &amp;amp; Function:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;SSEPython.ScriptAggrStr('", ".join(args[0])' , HelloWorldData)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Eight script functions are automatically added to the functionality of&amp;nbsp;the plugin. What is needed to be covered on the plugin side to fulfill&lt;BR /&gt;the functionality is to implement the Script aggregate rpc function.&lt;BR /&gt;&lt;BR /&gt;The syntax of these functions is&amp;nbsp;&lt;FONT face="courier new,courier"&gt;&amp;lt;EngineSSEName&amp;gt;.&amp;lt;FunctionName&amp;gt;(Script [,Parameter...])&lt;/FONT&gt;&lt;BR /&gt;where the &lt;FONT face="courier new,courier"&gt;Script&lt;/FONT&gt; is a Python script to be evaluated &amp;amp; &lt;FONT face="courier new,courier"&gt;Parameter&lt;/FONT&gt; is the data sent from Qlik's end.&lt;BR /&gt;&lt;BR /&gt;Here, the&amp;nbsp;&lt;FONT face="courier new,courier"&gt;ScriptAggrStr&amp;nbsp;&lt;/FONT&gt;function is used which accepts argument of type String &amp;amp; returns a String after an aggregation. The '&lt;FONT face="courier new,courier"&gt;join&lt;/FONT&gt;' 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 &lt;FONT face="courier new,courier"&gt;HelloWorldData&lt;/FONT&gt; which contains the 2 strings as we have loaded.&lt;BR /&gt;&lt;BR /&gt;To use SSE function(s) to load data via application load script, the &lt;FONT face="courier new,courier"&gt;Extension&lt;/FONT&gt;&amp;nbsp;clause needs to be used. See additional information as well as an example under Load &amp;gt; Argument &amp;gt; Extension and Examples &amp;gt; Loading from Analytic connections via the following link: &lt;A href="https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm" target="_blank" rel="noopener"&gt;Script Regular Statements: Load&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;&lt;FONT color="#339966"&gt;Related Content:&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Support-Knowledge-Base/R-Integration-with-Qlik-Sense/ta-p/1717165" target="_blank" rel="noopener"&gt;R integration with Qlik Sense&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://help.qlik.com/en-US/sense-admin/Subsystems/DeployAdministerQSE/Content/Sense_DeployAdminister/QSEoW/Administer_QSEoW/Managing_QSEoW/analytic-connections-overview.htm" target="_blank" rel="noopener"&gt;Analytic Connections - Qlik Sense for Administrators&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm" target="_blank" rel="noopener"&gt;Script Regular Statements - Load - Qlik Sense on Windows&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Support-Knowledge-Base/Creating-an-Advanced-Analytics-Server-in-15-minutes-using-AWS/ta-p/1512977" target="_blank" rel="noopener"&gt;Creating an Advanced Analytics Server in 15 minutes using AWS&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Support-Knowledge-Base/Qlik-Server-Side-Extension-SSE-with-Analytic-Connections/ta-p/1715066" target="_blank" rel="noopener"&gt;Qlik Server-Side Extension (SSE) with Analytic Connections&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Support-Knowledge-Base/How-to-call-an-external-custom-function-in-Qlik-Sense/ta-p/1713478" target="_blank" rel="noopener"&gt;How to call an external / custom function in Qlik Sense?&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Support-Knowledge-Base/Qlik-Sense-Analytic-Connection-SSE-Error-when-reloading-App/ta-p/1713855" target="_blank" rel="noopener"&gt;Qlik Sense Analytic Connection (SSE) Error when reloading App&lt;/A&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;</description>
    <pubDate>Mon, 13 Nov 2023 08:44:39 GMT</pubDate>
    <dc:creator>Sonja_Bauernfeind</dc:creator>
    <dc:date>2023-11-13T08:44:39Z</dc:date>
    <item>
      <title>Getting Started with Advanced Analytics in Qlik Sense using Python</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/ta-p/1711379</link>
      <description>&lt;P&gt;This is a basic example in order to get started with Advanced Analytics Integration in Qlik Sense using PYTHON.&lt;/P&gt;
&lt;BLOCKQUOTE class="quote"&gt;This customization is provided as is. Qlik Support cannot provide continued support of the solution. For assistance, reach out to our &lt;A href="https://community.qlik.com/t5/Official-Support-Articles/How-and-when-to-contact-Qlik-s-Professional-Services-and/ta-p/1714936" target="_blank" rel="noopener"&gt;Professional Services&lt;/A&gt; or engage in our active &lt;A href="https://community.qlik.com/t5/Integration-Extension-APIs/bd-p/qlik-sense-integration-extension-api" target="_blank" rel="noopener"&gt;Integrations forum&lt;/A&gt;.&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The architecture at a high-level looks like this:&lt;BR /&gt;&lt;BR /&gt;&lt;IMG src="https://qlik.my.salesforce.com/servlet/servlet.ImageServer?id=015D0000006AH0f&amp;amp;oid=00D20000000IGPX&amp;amp;lastMod=1539301744000" border="0" alt="User-added image" /&gt;&lt;BR /&gt;&lt;BR /&gt;With this new capability, it is possible to add syntax to a chart expression that tells Qlik Sense that a 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&amp;nbsp;via the server side extension on to the back end Python system for calculation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;After the advanced analytic calculations are completed, the data is sent back to the Qlik Sense Server and to the client for visualization.&lt;/P&gt;
&lt;P&gt;For an example with video that uses R-Server instead, see&amp;nbsp;&lt;A href="https://community.qlik.com/t5/Support-Knowledge-Base/R-Integration-with-Qlik-Sense/ta-p/1717165" target="_blank" rel="noopener"&gt;R Integration with Qlik Sense&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 class="qlik-migrated-tkb-headings"&gt;&lt;STRONG&gt;Resolution:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;In order to display a "&lt;FONT face="courier new,courier"&gt;Hello World&lt;/FONT&gt;" message in the Qlik Sense App, Perform the steps below:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; To obtain the latest HelloWorld example and other Python examples, see &lt;A href="https://github.com/qlik-oss/server-side-extension/tree/master/examples/python" target="_blank" rel="noopener"&gt;Python Examples&lt;/A&gt; in Qlik's Github repository. Make sure to check out the &lt;A href="https://github.com/qlik-oss/server-side-extension/blob/master/examples/python/GetStarted.md" target="_blank" rel="noopener"&gt;GetStarted.md&lt;/A&gt; documentation as well.&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Make sure you have Python 3.4 (or later) installed including 'PIP' option. Run&amp;nbsp;&lt;FONT face="courier new,courier"&gt;python -m pip install --upgrade pip&lt;/FONT&gt; to upgrade to latest version of pip.&lt;/LI&gt;
&lt;LI&gt;Install the&amp;nbsp;&lt;FONT face="courier new,courier"&gt;grpcio&lt;/FONT&gt;&amp;nbsp;package. In order to install it, use:&amp;nbsp;&lt;FONT face="courier new,courier"&gt;python -m pip install grpcio&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Install the&amp;nbsp;&lt;FONT face="courier new,courier"&gt;numpy&lt;/FONT&gt;&amp;nbsp;package. In order to install it, use:&amp;nbsp;&lt;FONT face="courier new,courier"&gt;python -m pip install numpy&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Install the&amp;nbsp;&lt;FONT face="courier new,courier"&gt;nose&lt;/FONT&gt;&amp;nbsp;package. In order to install it, use:&amp;nbsp;&lt;FONT face="courier new,courier"&gt;python -m pip install nose&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Install the&amp;nbsp;&lt;FONT face="courier new,courier"&gt;pandas&lt;/FONT&gt;&amp;nbsp;package. In order to install it, use:&amp;nbsp;&lt;FONT face="courier new,courier"&gt;python -m pip install pandas&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Install the &lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;google&lt;/SPAN&gt;&lt;/FONT&gt; package. Use &lt;FONT face="courier new,courier"&gt;python -m&amp;nbsp;&lt;SPAN&gt;pip install google&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Install the &lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;protobuf&lt;/SPAN&gt;&lt;/FONT&gt; package. Use &lt;FONT face="courier new,courier"&gt;python -m&amp;nbsp;&lt;SPAN&gt;pip install protobuf&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;May need to install the google API Python package on older examples: If so, use &lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;pip install --upgrade google-api-python-client&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&amp;nbsp;If using Qlik Sense Desktop, add&amp;nbsp;&lt;FONT face="courier new,courier"&gt;SSEPlugin=&amp;lt;EngineName&amp;gt;&lt;/FONT&gt;,&lt;FONT face="courier new,courier"&gt;localhost:&amp;lt;port&amp;gt;&lt;/FONT&gt;&amp;nbsp;on a new line in your&amp;nbsp;&lt;FONT face="courier new,courier"&gt;Settings.ini&lt;/FONT&gt;&amp;nbsp;file located at&amp;nbsp;&lt;FONT face="courier new,courier"&gt;C:\Users\[user]\Qlik\Sense&lt;/FONT&gt;. For example:&amp;nbsp;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;SSEPlugin=SSEPython,localhost:50052&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&amp;nbsp;If using Qlik Sense Server, Create an Analytic Connection. See &lt;A href="https://help.qlik.com/en-US/sense-admin/Subsystems/DeployAdministerQSE/Content/Sense_DeployAdminister/QSEoW/Administer_QSEoW/Managing_QSEoW/create-analytic-connection.htm" target="_blank" rel="noopener"&gt;Creating an analytic connection&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Create a Qlik Sense app with basic data. In the app attached to this article Inline Load of 2 strings was used. &lt;STRONG&gt;Alternatively&lt;/STRONG&gt;, use the HelloWorld example app included with the Server-Side Extension (SSE) package that can be downloaded in .zip format under&amp;nbsp;&lt;A href="https://github.com/qlik-oss/server-side-extension" target="_blank" rel="noopener"&gt;Qlik SSE.&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; See example app attached. Create a new KPI object in a Sheet. Under Measures, add:&amp;nbsp;&lt;FONT face="courier new,courier"&gt;SSEPython.ScriptAggrStr('", ".join(args[0])' , HelloWorldData&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;)&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;A Plugin using Python needs to be written so that you can communicate between Sense &amp;amp; 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&amp;amp;C in &lt;A href="https://github.com/qlik-oss/server-side-extension/blob/master/docs/writing_a_plugin.md" target="_blank" rel="noopener"&gt;Writting an SSE Plugin&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Run the plugin in CMD prompt, using command: &lt;FONT face="courier new,courier"&gt;python&amp;nbsp;ExtensionService_helloworld.py&amp;nbsp;&lt;/FONT&gt; Note: Troubleshoot &lt;A href="https://community.qlik.com/t5/Qlik-Server-Side-Extensions-Discussions/Qlik-Sense-SSE-Python-error-ModuleNotFoundError-No-module-named/td-p/1425554" target="_blank" rel="noopener"&gt;ModuleNotFoundError&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;You will be presented with this screen&lt;BR /&gt;&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="running server in insecure mode on port.png" style="width: 500px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/119779i5B60C52C0EA1C40D/image-size/large?v=v2&amp;amp;px=999" role="button" title="running server in insecure mode on port.png" alt="running server in insecure mode on port.png" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;Now restart Qlik Sense desktop &amp;amp; open your Sense app&lt;/LI&gt;
&lt;LI&gt;You should the below object utilizing Python:&lt;BR /&gt;&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hello world.png" style="width: 457px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/119781i94416B361362FFC3/image-size/large?v=v2&amp;amp;px=999" role="button" title="hello world.png" alt="hello world.png" /&gt;&lt;/span&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;FONT color="#339966"&gt;&lt;STRONG&gt;Understanding the Python script &amp;amp; Function:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;SSEPython.ScriptAggrStr('", ".join(args[0])' , HelloWorldData)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Eight script functions are automatically added to the functionality of&amp;nbsp;the plugin. What is needed to be covered on the plugin side to fulfill&lt;BR /&gt;the functionality is to implement the Script aggregate rpc function.&lt;BR /&gt;&lt;BR /&gt;The syntax of these functions is&amp;nbsp;&lt;FONT face="courier new,courier"&gt;&amp;lt;EngineSSEName&amp;gt;.&amp;lt;FunctionName&amp;gt;(Script [,Parameter...])&lt;/FONT&gt;&lt;BR /&gt;where the &lt;FONT face="courier new,courier"&gt;Script&lt;/FONT&gt; is a Python script to be evaluated &amp;amp; &lt;FONT face="courier new,courier"&gt;Parameter&lt;/FONT&gt; is the data sent from Qlik's end.&lt;BR /&gt;&lt;BR /&gt;Here, the&amp;nbsp;&lt;FONT face="courier new,courier"&gt;ScriptAggrStr&amp;nbsp;&lt;/FONT&gt;function is used which accepts argument of type String &amp;amp; returns a String after an aggregation. The '&lt;FONT face="courier new,courier"&gt;join&lt;/FONT&gt;' 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 &lt;FONT face="courier new,courier"&gt;HelloWorldData&lt;/FONT&gt; which contains the 2 strings as we have loaded.&lt;BR /&gt;&lt;BR /&gt;To use SSE function(s) to load data via application load script, the &lt;FONT face="courier new,courier"&gt;Extension&lt;/FONT&gt;&amp;nbsp;clause needs to be used. See additional information as well as an example under Load &amp;gt; Argument &amp;gt; Extension and Examples &amp;gt; Loading from Analytic connections via the following link: &lt;A href="https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm" target="_blank" rel="noopener"&gt;Script Regular Statements: Load&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;&lt;FONT color="#339966"&gt;Related Content:&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Support-Knowledge-Base/R-Integration-with-Qlik-Sense/ta-p/1717165" target="_blank" rel="noopener"&gt;R integration with Qlik Sense&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://help.qlik.com/en-US/sense-admin/Subsystems/DeployAdministerQSE/Content/Sense_DeployAdminister/QSEoW/Administer_QSEoW/Managing_QSEoW/analytic-connections-overview.htm" target="_blank" rel="noopener"&gt;Analytic Connections - Qlik Sense for Administrators&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm" target="_blank" rel="noopener"&gt;Script Regular Statements - Load - Qlik Sense on Windows&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Support-Knowledge-Base/Creating-an-Advanced-Analytics-Server-in-15-minutes-using-AWS/ta-p/1512977" target="_blank" rel="noopener"&gt;Creating an Advanced Analytics Server in 15 minutes using AWS&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Support-Knowledge-Base/Qlik-Server-Side-Extension-SSE-with-Analytic-Connections/ta-p/1715066" target="_blank" rel="noopener"&gt;Qlik Server-Side Extension (SSE) with Analytic Connections&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Support-Knowledge-Base/How-to-call-an-external-custom-function-in-Qlik-Sense/ta-p/1713478" target="_blank" rel="noopener"&gt;How to call an external / custom function in Qlik Sense?&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.qlik.com/t5/Support-Knowledge-Base/Qlik-Sense-Analytic-Connection-SSE-Error-when-reloading-App/ta-p/1713855" target="_blank" rel="noopener"&gt;Qlik Sense Analytic Connection (SSE) Error when reloading App&lt;/A&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Mon, 13 Nov 2023 08:44:39 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/ta-p/1711379</guid>
      <dc:creator>Sonja_Bauernfeind</dc:creator>
      <dc:date>2023-11-13T08:44:39Z</dc:date>
    </item>
    <item>
      <title>Re: Getting Started with Advanced Analytics in Qlik Sense using Python</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2136747#M10660</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;Great article! Do you know if&amp;nbsp;server-side-extension works on Qlik Cloud?&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Elizabeth&lt;/P&gt;</description>
      <pubDate>Fri, 10 Nov 2023 14:30:52 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2136747#M10660</guid>
      <dc:creator>E8</dc:creator>
      <dc:date>2023-11-10T14:30:52Z</dc:date>
    </item>
    <item>
      <title>Re: Getting Started with Advanced Analytics in Qlik Sense using Python</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2137078#M10669</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/190479"&gt;@E8&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Does this help?&amp;nbsp;&lt;A href="https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/sse-syntax.htm" target="_blank" rel="noopener"&gt;Server side extensions syntax (Qlik Cloud)&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;All the best,&lt;BR /&gt;Sonja&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 13 Nov 2023 08:36:22 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2137078#M10669</guid>
      <dc:creator>Sonja_Bauernfeind</dc:creator>
      <dc:date>2023-11-13T08:36:22Z</dc:date>
    </item>
    <item>
      <title>Re: Getting Started with Advanced Analytics in Qlik Sense using Python</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2138416#M10694</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I've set up an publicly available endpoint using Python which I'd like to connect to with the Advanced Analytics connector on Qlik Cloud. At the moment the endpoint is returning dummy data to test if Qlik receives everything, but I get the following error:&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;The following error occurred:
Connector reply error: grpc::StatusCode::FAILED_PRECONDITION: 'The response did not include the expected data table'&lt;/LI-CODE&gt;
&lt;P&gt;Am I understanding correctly that, even though the endpoint is hosted somewhere else, I basically need to follow the implementation of the code as documented in the article here?&lt;/P&gt;</description>
      <pubDate>Thu, 16 Nov 2023 13:51:58 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2138416#M10694</guid>
      <dc:creator>MorganHeijdemann</dc:creator>
      <dc:date>2023-11-16T13:51:58Z</dc:date>
    </item>
    <item>
      <title>Re: Getting Started with Advanced Analytics in Qlik Sense using Python</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2138472#M10701</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/28597"&gt;@Sonja_Bauernfeind&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks for your answer. It seems very helpful for my need&lt;/P&gt;
&lt;P&gt;Best Regards,&lt;/P&gt;
&lt;P&gt;Elizabeth&lt;/P&gt;</description>
      <pubDate>Thu, 16 Nov 2023 15:33:11 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2138472#M10701</guid>
      <dc:creator>E8</dc:creator>
      <dc:date>2023-11-16T15:33:11Z</dc:date>
    </item>
    <item>
      <title>Re: Getting Started with Advanced Analytics in Qlik Sense using Python</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2466235#M14196</link>
      <description>&lt;P&gt;Greetings &lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/28597"&gt;@Sonja_Bauernfeind&lt;/a&gt;!&lt;/P&gt;
&lt;P&gt;I am interested in invoking inference functions written in Python, and running on &lt;A href="https://docs.snowflake.com/en/developer-guide/snowpark-ml/overview" target="_blank" rel="noopener"&gt;Snowflake's Snowpark ML infrastructure&lt;/A&gt;, from a Qlik Sense SaaS App.&amp;nbsp; The idea would be to achive something similar to what can be done using the Advanced Analytics Connector in a QSEoW environment, but, in the scenario that I need, the backend would be based on Snowpark ML.&lt;/P&gt;
&lt;P&gt;Are you aware of any on-going efforts to provide this capability?&amp;nbsp; Can you check with the PM in charge of &lt;LI-PRODUCT title="Qlik Native and Custom Connectors" id="qlikNativeandCustomConnectors"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;to see if this is in the roadmap?&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;++José&lt;/P&gt;</description>
      <pubDate>Fri, 28 Jun 2024 02:57:01 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2466235#M14196</guid>
      <dc:creator>diagonjope</dc:creator>
      <dc:date>2024-06-28T02:57:01Z</dc:date>
    </item>
    <item>
      <title>Re: Getting Started with Advanced Analytics in Qlik Sense using Python</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2503033#M15261</link>
      <description>&lt;P&gt;Dear&lt;/P&gt;
&lt;P&gt;settings.ini file is empty in below folder path for qliksense desktop&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Tool_Tip_0-1737976158451.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/176893i3598662556406A35/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Tool_Tip_0-1737976158451.png" alt="Tool_Tip_0-1737976158451.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 27 Jan 2025 11:09:35 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2503033#M15261</guid>
      <dc:creator>Tool_Tip</dc:creator>
      <dc:date>2025-01-27T11:09:35Z</dc:date>
    </item>
    <item>
      <title>Re: Getting Started with Advanced Analytics in Qlik Sense using Python</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2504609#M15318</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/300668"&gt;@Tool_Tip&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If the file is empty it will need to be populated with the setting you need.&lt;/P&gt;
&lt;P&gt;All the best,&lt;BR /&gt;Sonja&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 05 Feb 2025 13:02:08 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/Getting-Started-with-Advanced-Analytics-in-Qlik-Sense-using/tac-p/2504609#M15318</guid>
      <dc:creator>Sonja_Bauernfeind</dc:creator>
      <dc:date>2025-02-05T13:02:08Z</dc:date>
    </item>
  </channel>
</rss>

