Skip to main content

Blogs

This space offers a variety of blogs, all written by Qlik employees. Product and non product related.

Announcements
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
cancel
Showing results for 
Search instead for 
Did you mean: 

Design

The Design blog is all about product and Qlik solutions, such as scripting, data modeling, visual design, extensions, best practices, and more!

Product Innovation

By reading the Product Innovation blog, you will learn about what's new across all of the products in our growing Qlik product portfolio.

Support Updates

The Support Updates blog delivers important and useful Qlik Support information about end-of-product support, new service releases, and general support topics.

Qlik Academic Program

This blog was created for professors and students using Qlik within academia.

Community News

Hear it from your Community Managers! The Community News blog provides updates about the Qlik Community Platform and other news and important announcements.

Qlik Digest

The Qlik Digest is your essential monthly low-down of the need-to-know product updates, events, and resources from Qlik.

Qlik Education

The Qlik Education blog provides information about the latest updates of our courses and programs with the Qlik Education team.

Subprocessors List

Qlik Subprocessors General Data Protection Regulation (GDPR).

Japan

Qlik Community blogs for our customers and partners in Japan.

Recent Blog Posts

  • Image Not found

    Support Updates

    Qlik Sense Enterprise for Windows - New Security Patches Available Now

    Edited August 30th, 15:55 CET: Added clarification on older Qlik Sense Enterprise on Windows versionsEdited August 31st, 13:10 CET: Added clarification on possible workarounds (none exist) as well as information regarding what authentication methods (all) are affected and that HTTP and HTTPS are impactedEdited November 21st, 8:40 CET: Added clarification to apply the latest patches Hello Qlik Users, Two security issues in Qlik Sense Enterprise fo... Show More

    Edited August 30th, 15:55 CET: Added clarification on older Qlik Sense Enterprise on Windows versions
    Edited August 31st, 13:10 CET: Added clarification on possible workarounds (none exist) as well as information regarding what authentication methods (all) are affected and that HTTP and HTTPS are impacted
    Edited November 21st, 8:40 CET: Added clarification to apply the latest patches

    Hello Qlik Users,

    Two security issues in Qlik Sense Enterprise for Windows have been identified and patches made available. Details can be found in Security Bulletin Critical Security fixes for Qlik Sense Enterprise for Windows (CVE-2023-41266, CVE-2023-41265).

    This announcement from August 2023 and the mentioned releases only cover CVE-2023-41266 and CVE-2023-41265. Apply the most recent patches as documented in Critical Security fixes for Qlik Sense Enterprise for Windows (CVE-2023-48365) (September 2023), which resolve CVE-2023-48365 as well.

    Today, we have released five service releases across the latest versions of Qlik Sense to patch the reported issues. All versions of Qlik Sense Enterprise for Windows prior to and including these releases are impacted:

    • May 2023 Patch 3
    • February 2023 Patch 7
    • November 2022 Patch 10
    • August 2022 Patch 12

    All prior versions of Qlik Sense Enterprise on Windows are affected, including releases such as May 2022, February 2022, and earlier. While no patches are currently listed for these versions, Qlik is actively investigating the possibility of patching older releases. 

    No workarounds can be provided. Customers should upgrade Qlik Sense Enterprise for Windows to a version containing fixes for these issues. August 2023 IR released today already contains the fix

    • August 2023 Initial Release
    • May 2023 Patch 4
    • February 2023 Patch 8
    • November 2022 Patch 11
    • August 2022 Patch 13
    This issue only impacts Qlik Sense Enterprise for Windows. Other Qlik products including Qlik Cloud and QlikView are NOT impacted.

    All Qlik software can be downloaded from our official Qlik Download page (customer login required). Follow best practices when upgrading Qlik Sense.

    The information in this post and Security Bulletin Critical Security fixes for Qlik Sense Enterprise for Windows (CVE-2023-41266, CVE-2023-41265) are disclosed in accordance with our published Security and Vulnerability Policy.

     

    Clarifications and Frequently Asked Questions:

    What can be done to mitigate the issue?

    No mitigation can be provided. An upgrade should be performed at the earliest. As per Qlik's best practices, the proxy should not be exposed to the public internet, which reduces the attack surface significantly.

    What authentication methods are affected?

    All authentication methods are affected.

    Are environments with HTTP disabled impacted?

    Environments will be affected regardless if HTTP or HTTPS are in use. These vulnerabilities affect the HTTP protocol overall, meaning even if HTTP is disabled, the environment remains vulnerable.

    These attacks don’t rely on intercepting any communication, and therefore, are indifferent whether the HTTP communication is encrypted or not.

    Kind regards, and thank you for choosing Qlik,

    Qlik Global Support

    Show Less
  • Image Not found

    Design

    Cyclic Dimension

    Today I am going to blog about cyclic dimensions. A cyclic dimension is a group of dimensions that can be cycled through in a visualization. The dimensions do not have to be related or have a hierarchical relationship. The dimensions only have to make sense with the measures used in the visualizations. Cyclic dimensions can be very useful when it is valuable to view a visualization across many dimensions. It becomes even more valuable if there ar... Show More

    Today I am going to blog about cyclic dimensions. A cyclic dimension is a group of dimensions that can be cycled through in a visualization. The dimensions do not have to be related or have a hierarchical relationship. The dimensions only have to make sense with the measures used in the visualizations. Cyclic dimensions can be very useful when it is valuable to view a visualization across many dimensions. It becomes even more valuable if there are multiple visualizations on a sheet, or in an app, that use the same cyclic dimension. When a cyclic dimension is switched to the next field, all visualizations that use the cyclic dimension will be changed to the same field. This is a time saver.  You may wonder if alternate dimensions can do the same thing. Alternate dimensions allow a user to change the dimension in a chart, but it only changes it for the specified chart whereas a cyclic dimension can change the dimension for multiple charts.  Alternate dimensions can also be used in a visualization with a cyclic dimension.

    Building a cyclic dimension is very easy and there are few ways to use them. You create a cyclic dimension the same as you do a single or drill-down dimension. From the Master items, create a new dimension. At the top select Cyclic dimension type, then add the fields to include. Give the cyclic dimension a name and save. Labels can be added to give the fields a different name and description.  At least two fields need to be added to a cyclic dimension.

    cyclic dimension.png

    A cyclic dimension can be added to a visualization the same way a single dimension is added. Once they are added to a visualization a cycle icon will appear next to the field name as well as an arrow. By default, the first field in the cyclic dimension will be displayed. To change the dimension in the visualization, a user can click on the cycle icon or click on the label or down arrow and select another dimension.

    pie2.png

     

     

     

     

     

     

     

     

     

    Another way a user can cycle through the dimensions is to use a button. In the What’s New app, buttons have been created to cycle through the cyclic dimensions.

    buttons.png

     

     

    In all three buttons, the action is set to Step cyclic dimension and the Step is set to backward for the left arrow and forward for the right arrow and the cycle button in the middle.

    Left arrow buttonLeft arrow buttonRight arrow & cycle buttonsRight arrow & cycle buttons

    In the What’s New app, you can also see how changing the cyclic dimension in one visualization, updates all the visualizations using the cyclic dimension. In the screenshot below, Category Name is the current cyclic dimension.

    cat name.png

    If I switch the dimension, using any of the ways I have described above, Country Code is the dimension. Notice that the dimension in all the visualizations have been updated to Country Code in the screenshot below.

    country.png

    Check out Qlik Help to learn more about cyclic dimensions and to be aware of the limitations. Also watch Michael Tarallo’s SaaS in 60 video on Cyclic Group Dimensions. Try them out in your next app.

    Thanks,

    Jennell

    Show Less
  • Image Not found

    Product Innovation

    Qlik Data Integration Client Managed May 2024 General Availability Release

    As May brings Spring to a close and heralds the glimpse of summer, the days get a bit brighter and last longer. May seems full of new hope. Apart from Star Wars Day, which always occurs on May 4th (be with you), another galactic event that happens in May is our General Availability releases of both Qlik Replicate and Qlik Enterprise Manager.
  • qlik-community-blogs.jpg

    Design

    Do..Loop

    The do..loop control statement is used in the script to iterate through one or more statements until a condition is met.  It is useful when you need to dynamically check a condition while executing statements in the script.  There are two ways the do..loop can be used.  The first is to check the condition before executing statement(s) in the loop and the second is to check the condition after the statement(s) in the loop have been executed.  Let’... Show More

    The do..loop control statement is used in the script to iterate through one or more statements until a condition is met.  It is useful when you need to dynamically check a condition while executing statements in the script.  There are two ways the do..loop can be used.  The first is to check the condition before executing statement(s) in the loop and the second is to check the condition after the statement(s) in the loop have been executed.  Let’s look at some examples.

     

    The script below checks to see if the condition has been met before the statements are executed.  When x is no longer less than 10, the do..loop will stop.

    Do while.png

    The script below is a little different.  In this script, the condition is checked after the statements are executed so the statements will always run at least one time.

    Do loop while.png

    Both scripts produce the same results as seen below.  Products 1 through 9 were created.

    Do while table.png

    The do..loop also can be used with the “Until” keyword instead of the “While” keyword producing different results.  In the script below, the statements will be executed until x is less than 10.  Since x is equal to 1 which is less than 10, the statements never run so no products are generated.

    Do until.png

    Now if the condition is checked after the statements are run, as shown in the script below, one product will be created since the statements run once before the condition is checked.

    Do loop until.pngDo until table.png

    Now what if you need to exit the do..loop.  You can do this using Exit do.  The loop will be exited and execution will continue with the statement(s) following the loop.  Here is an example of what this looks like.  In the script below, the loop will exit after the Load statement runs 3 times, stopping when x is equal to 3.

    exit do when.png

    In the script below, this loop will exit after the Load statement executes one time.  Since x is not equal to 3, the loop will be exited when execution gets to the exit do statement.

    exit do unless.png

    The do..loop is helpful in the script when you need to execute statements while /until a condition is met.   It provides flexibility since the condition can be dynamic and be evaluated before or after the statement(s) in the loop.  This is a little different from the For..Next loop where a counter is used to determine the number of times the statement(s) in the loop are executed.  Learn more about loops in Henric’s‌‌ blog Loops in the Script.

     

    Thanks,

    Jennell

    Show Less
  • Image Not found

    Product Innovation

    Qlik Introduces a New Era of Visualization

    "A picture is worth a thousand words, but a visualization can tell a million stories."
  • Image Not found

    Design

    Button + Reload Data or Button + Execute App Automation - which do I use?

    Learn the differences between Qlik Sense button actions - Reload Data and Execute Automation - when you want to reload a Qlik Sense app, or have ANY user execute an automation.
  • Image Not found

    Support Updates

    Qlik Sense Enterprise for Windows - New Security Patches Available Now

    Edited 20th of May 2024: Added recently assigned CVE number.Edited 22nd of May 2024: Added to the Frequently Asked Questions.   Hello Qlik Users, A security issue in Qlik Sense Enterprise for Windows has been identified, and patches have been made available. Details can be found in Security Bulletin High Severity Security fixes for Qlik Sense Enterprise for Windows (CVE-2024-36077). Today, we have released eight service releases across the latest... Show More

    Edited 20th of May 2024: Added recently assigned CVE number.
    Edited 22nd of May 2024: Added to the Frequently Asked Questions.

     

    Hello Qlik Users,

    A security issue in Qlik Sense Enterprise for Windows has been identified, and patches have been made available. Details can be found in Security Bulletin High Severity Security fixes for Qlik Sense Enterprise for Windows (CVE-2024-36077).

    Today, we have released eight service releases across the latest versions of Qlik Sense to patch the reported issue. All versions of Qlik Sense Enterprise for Windows prior to and including these releases are impacted:

    • February 2024 Patch 3 
    • November 2023 Patch 8 
    • August 2023 Patch 13 
    • May 2023 Patch 15 
    • February 2023 Patch 13 
    • November 2022 Patch 13 
    • August 2022 Patch 16 
    • May 2022 Patch 17

     

    No workarounds can be provided. Customers should upgrade Qlik Sense Enterprise for Windows to a version containing fixes for these issues. May 2024 IR, released on the 14th of May, contains the fix as well

    • May 2024 Initial Release 
    • February 2024 Patch 4 
    • November 2023 Patch 9 
    • August 2023 Patch 14 
    • May 2023 Patch 16 
    • February 2023 Patch 14 
    • November 2022 Patch 14 
    • August 2022 Patch 17 
    • May 2022 Patch 18 
    This issue only impacts Qlik Sense Enterprise for Windows. Other Qlik products including Qlik Cloud and QlikView are NOT impacted.

    All Qlik software can be downloaded from our official Qlik Download page (customer login required). Follow best practices when upgrading Qlik Sense.

    The information in this post and Security Bulletin High Severity Security fixes for Qlik Sense Enterprise for Windows (CVE-2024-36077) are disclosed in accordance with our published Security and Vulnerability Policy.

     

    Frequently Asked Questions

    Q: What steps can be used to reproduce the vulnerability?
    A: Qlik will not be providing steps on how to reproduce this test case.

    Q: What authentication method is affected?
    A: Qlik strongly recommends moving to a patched version as per the bulletin, regardless of the authentication method used.

    Q: Will Qlik Sense February 2022 or earlier be patched?
    A: See the Qlik Sense Enterprise on Windows Product Lifecycle (link) for information on what versions of Qlik Sense have reached End of Service (EOS). Versions which have reached EOS will not receive patches and Qlik strongly recommends moving to an up to date release.

     

    The Security Notice label is used to notify customers about security patches and upgrades that require a customer’s action. Please subscribe to the ‘Security Notice’ label to be notified of future updates. 

     

    Thank you for choosing Qlik,

    Qlik Global Support

    Show Less
  • qlik-community-blogs.jpg

    Design

    Dissecting the Engine API - Part 5: Multiple Hypercube Dimensions

    My friend, Øystein Kolsrud - Software Architect at Qlik, is back with part 5 of the Qlik Engine API fundamentals: Multiple Hypercube DimensionsPrevious articles: Part 1:  Let's Dissect the Qlik Engine API - Part 1: RPC Basics Part 2:  Let's Dissect the Qlik Engine API - Part 2: Handles Part 3:  Let's Dissect the Qlik Engine API - Part 3: Generic ObjectsPart 4: Let's Dissect the Qlik Engine API - Part 4: Hypercubes  With part 5 of this series  Øys... Show More

    My friend, Øystein Kolsrud - Software Architect at Qlik, is back with part 5 of the Qlik Engine API fundamentals: 

    Multiple Hypercube Dimensions

    Previous articles: 

    1. Part 1:  Let's Dissect the Qlik Engine API - Part 1: RPC Basics 
    2. Part 2:  Let's Dissect the Qlik Engine API - Part 2: Handles 
    3. Part 3:  Let's Dissect the Qlik Engine API - Part 3: Generic Objects
    4. Part 4: Let's Dissect the Qlik Engine API - Part 4: Hypercubes  

    With part 5 of this series  Øystein will discuss some consequences of how the engine computes the data sets that hypercubes define.

    Introduction

    The hypercubes we have looked at so far were used to calculate multiple expressions for all values of a single field. We have seen how we in one go can compute both the sales, and the sales per month for all employees. Our next step will be to compute these statistics not only for the total set of data, but for sales per year as well. The data we have contains sales information for two different years, so if we want to calculate our expressions for a particular year, then we could simply select that year, and retrieve the data. The engine will do all the filtering for us and guarantee that only sales for the selected year is included in the hypercube computations. It is quite possible to use such a flow to iterate across the years in order to get sales information for each year, but as anyone who has ever added a table visualization to an app knows, there is a more efficient way to do this! We can simply extend the hypercube with the "Year" dimension, and have the engine do all the work for us!

    How the engine deals with multiple dimensions

    When the engine encounters multiple dimensions in a hypercube, it will compute the expressions for all possible combinations of values of the dimensions. Since our data contains information about sales for two employees from the years 2019 and 2020 we get the following set of four combinations:

    "Amalia Craig", 2019
    "Amalia Craig", 2020
    "Amanda Honda", 2019
    "Amanda Honda", 2020

    The hypercube definition we will use for our computations needs to contain two entries in the "qDimensions" array, like this:

     

     

    {
      "jsonrpc": "2.0",
      "id": 21,
      "method": "SetProperties",
      "handle": 4,
      "params": [
        {
          "qInfo": {
            "qId": "3cb898dc-b7dc-44ed-ba83-c27fae5d0658",
            "qType": "myCube"
          },
          "qHyperCubeDef": {
            "qDimensions":
              [ { "qDef": { "qFieldDefs": [ "SalesRep"  ] } },
                { "qDef": { "qFieldDefs": [ "Year" ] } }
              ],
            "qMeasures":
              [ { "qDef": { "qDef": "Sum(Sales)" } },
                { "qDef": { "qDef": "Sum(Sales)/Count(Month)" } }
              ]
          }
        }
      ]
    }

     

     

    Now that we have added a second dimension, the resulting table will contain four columns (two dimensions, two measures), so in order to get all data, we need to set the width of the page ("qWidth") to 4:

     

     

    {
      "jsonrpc": "2.0",
      "id": 22,
      "method": "GetHyperCubeData",
      "handle": 4,
      "params": [
        "/qHyperCubeDef",
        [ { "qLeft": 0,
            "qTop": 0,
            "qWidth": 4,
            "qHeight": 20
          }
        ]
      ]
    }

     

     

    The response will contain 4 rows with 4 cells each for a total of 16 cells (and I'll be truncating to reduce verbosity):

     

     

    {
      "jsonrpc": "2.0",
      "id": 22,
      "result": {
        "qDataPages": [
          {
            "qMatrix": [
              [ { "qText": "Amalia Craig", ... },
                { "qText": "2019", ... },
                { "qText": "104480", ... },
                { "qText": "2749.4736842105", ... }
              ],
              [ { "qText": "Amalia Craig", ... },
                { "qText": "2020", ... },
                { "qText": "156662", ... },
                { "qText": "2701.0689655172", ... }
              ],
              [ { "qText": "Amanda Honda", ... },
                { "qText": "2019", ... },
                { "qText": "84396", ... },
                { "qText": "2482.2352941176", ... }
              ],
              [ { "qText": "Amanda Honda", ... },
                { "qText": "2020", ... },
                { "qText": "169293", ... },
                { "qText": "2821.55", ... }
              ]
            ],
            ...
          }
        ]
      }
    }

     

     

    And there you have it! The engine has computed our two expressions for both employees for both years!

    The size of hypercubes

    The data rows you get for a particular cube depends not only on the number of field values of the dimensions, but also on how those values relate to each other in the data model. Say for instance that "Amanda Honda" had no sales recorded for the year 2019 (perhaps because she was hired in 2020). The loaded data will then not contain any records associating "Amanda Honda" with the year "2019". When you get the data for the hypercube in this scenario, then there will only be three rows returned as the combination of the field values "Amanda Honda" and "2019" is excluded by the data.

    You can check how many rows a hypercube has by looking at the property "qSize" of the hypercube layout. This is what the "GetLayout" response could look like in our case:

     

     

    {
      "jsonrpc": "2.0",
      "id": 23,
      "result": {
        "qLayout": {
          "qInfo": {
            "qId": "3cb898dc-b7dc-44ed-ba83-c27fae5d0658",
            "qType": "myCube"
          },
          "qHyperCube": {
            "qSize": {
              "qcx": 4,
              "qcy": 3
            },
            "qDimensionInfo": [ ... ],
            "qMeasureInfo": [ ... ],
            ...
          }
        }
      }
    }

     

     

    The "qSize" property indicates both the number of columns ("qcx") and the number of rows ("qcy").

    Excluded combinations

    One might think that there should be a row generated also for combinations that do not have values. After all, one could without lying say that the sales for "Amanda Honda" in 2019 was 0. But this is not how the engine works! And that is a good thing! If the engine didn't do this type of filtering, then most cubes would result in such a large number of rows that they would be completely unusable. Consider for example that all sales transactions had both a timestamp and a unique ID associated with them. Then we create a hypercube that lists the timestamp, the ID, and the sales amount for each transaction represented in 1000 USD. We could define our cube like this:

     

     

    "qHyperCubeDef": {
    
      "qDimensions":
    
        [ { "qDef": { "qFieldDefs": [ "Timestamp"  ] } },
    
          { "qDef": { "qFieldDefs": [ "ID" ] } }
    
        ],
    
      "qMeasures":
    
        [ { "qDef": { "qDef": "Sales/1000" } } ]
    
    }

     

     

    The number of rows this cube would yield would be equal to the number of IDs, as there is exactly one timestamp associated with each ID. Also, in this case it clearly makes no sense to return rows that show the sales for nonexistent combinations of "Timestamp" and "ID". In fact, if we did, then we would soon run into trouble. Imagine that there are 10 IDs. The resulting table would in that case contain 10*10=100 rows (if we assume that the timestamps are unique as well). If there were 1000 IDs then there would be a million rows. And if there were a million IDs then you'd better dive for cover and hope you don't bring down the entire engine when you try to compute the layout! Because the resulting number of rows would be astronomical!

    It's good to be aware of this engine behavior as there are in fact cases where you risk creating such huge cubes. I have accidentally done so myself on several occasions. And I can tell you, it's not a good thing... The problem occurs when you add two fields to a cube that have no association to each other what so ever. A company could for instance have data for both sales and purchases, both of which have unique ID's, but are stored in different tables. Then I create a table visualization with timestamp and ID, but accidentally choose the ID from the "Purchases" table instead of from the "Sales" table like this:

     

     

    "qHyperCubeDef": {
    
      "qDimensions":
    
        [ { "qDef": { "qFieldDefs": [ "Sales.Timestamp"  ] } },
    
          { "qDef": { "qFieldDefs": [ "Purchases.ID" ] } }
    
        ],
    
      "qMeasures":
    
        [ { "qDef": { "qDef": "Sales.Sales/1000" } } ]
    
    }

     

     

    Since all possible combinations of "Sales.Timestamp" and "Purchases.ID" are legal, this is likely to give me a hypercube of a rather intimidating size.

    Summary

    Hypercubes with multiple dimensions is a very common thing in Qlik Sense. Apart from the obvious example of a table visualization, most other visualizations allow for some form of multiple dimension configuration as well. Two examples that I frequently use are the bar chart and line chart visualizations, both of which will have cubes with multiple dimensions under certain configurations.

    The handling of hypercubes is at the very core of how the engine deals with computations, but there are of course limits to what the engine can handle. If you run into surprisingly long computation times or very high engine memory usage, then be on the lookout for visualizations that accidentally span very large sets of field value combinations. Such cubes can sometimes give you nasty surprises.

    Show Less
  • Image Not found

    Design

    FROM_FIELD() - Is very powerful! It helped me parse JSON data stored in a field!

    See how powerful FROM_FIELD() is. It helped me extract a simple JSON data structure from a field into it's own dimension table.
  • Image Not found

    Design

    Building What-If Scenarios using SSE and the Qlik AutoML Prediction API

    Qlik AutoML is a powerful tool that makes it easy for analytics teams to easily generate models, make predictions, and test business scenarios using a code-free experience.In a previous introductory blog post by Dipankar, you can learn more about how to get started with AutoML and find out just how easy it is to navigate the interface and start training and evaluating ML models in a few steps.Today, we will leverage the power of Qlik Server-Side ... Show More

    Qlik AutoML is a powerful tool that makes it easy for analytics teams to easily generate models, make predictions, and test business scenarios using a code-free experience.

    In a previous introductory blog post by Dipankar, you can learn more about how to get started with AutoML and find out just how easy it is to navigate the interface and start training and evaluating ML models in a few steps.

    Today, we will leverage the power of Qlik Server-Side Extension (SSE) to build a simple Scenario Analysis dashboard right into Qlik Sense.

    “What-if scenarios” are a great way to plan for decisions and actions by testing different parameters while capitalizing on AutoML’s prediction API.

    So what is SSE?

    Server-side Extension protocol allows us to extend the Qlik built-in expression library with functionality from external calculation engines. In our case, we will use AutoML’s re-calculation of the prediction based on changes on variables to show the result in a KPI chart.

    Let’s go through the process in a practical example. We will look at Employee Turnover Risk (dataset attached at the end of the post)

    1. Create your AutoML project and load the dataset making sure to select the “left” field as the target. After successfully completing the training process, go ahead and deploy your model and enable API Access. Take note of the Access URL and Token, we will need them to make the connection in Qlik Sense.

      analyzing.PNGdeploy.PNG
    2. On our QS tenant, we need to create a new Data Connection via the "Qlik AutoML" Analytics source connector. If you don’t see it, make sure to enable Machine learning Endpoints in the Management Console.
      Inkeddata-connection_1.jpg

      data-connection 2.PNG

    3. Now, let’s move on to building our Scenario analysis sheet on the Qlik Sense app (find the qvf attached at the end of the post).
    • First, we create multiple variables to be used in our “Variable Input” objects. We concentrate on the features that are more important according to the Feature Importance chart.
      variables.PNG
    • Next, we create our objects:
      • The KPI that shows the Likelihood for Employees to leave is based on a measure that uses the SSE expression as follows, where some of the features are passed in as variables.
        P.S: note the first argument of the ScriptEvalEx matches the field types of our features in order - with N being number and S being string. Also, the features passed as the third argument need to map 1 to 1 with autoML, missing features will result in an error.

     

     

    =endpoints.ScriptEvalEx('NNNNNNNSS','{"RequestType":"endpoint", "endpoint":{"connectionname":"Qlik_AutoML_Employee_Turnover","column":"probability_yes"}}',
    vSatisfactionLevel AS satisfaction_level,
    last_evaluation,
    vNumberOfProjects AS number_project,
    vAvgMonthlyHoursWorked AS average_montly_hours,
    vTimeSpent AS time_spend_company,
    Work_accident,
    promotion_last_5years,
    vDepartment AS sales,
    vSalary AS salary)

     

     

    • Next. we build our variable inputs using the “Variable Input” chart under Custom Objects > Qlik Dashboard Bundle. Adjust the “Show as” type as needed.

    variable input.PNG

    And that’s all! You can now adjust the variables to trigger AutoML which automatically redistributes the data and re-predicts the outcome in order to understand the implication of any potential action.


    Below, notice that Employee #2 has a high turnover %. Upon adjusting the “Avg Monthly Hours Worked”, “Number of Projects”, and “Salary” or a combination of these parameters, the % drops drastically.

     

    changes what if.gif

    Attached is the dataset used as well as the qvf.

    I hope you found this post helpful!

    Show Less
  • Image Not found

    Qlik Digest

    May Qlik Digest

    Welcome to the May Qlik Digest featuring a rockin’ party at Qlik Connect, upcoming webinars, exciting learning promotions, and more!   3 reasons that’ll give you FOMO. 1.  Customer Lightening Round A quick, fun, and energetic exploration into how successful global brands have conquered unique business challenges and found the opportunities in their data. Featuring Qlik customers: Penske Transportation Solutions: Sarvant “Rana” Singh, VP, Data & ... Show More

    Welcome to the May Qlik Digest featuring a rockin’ party at Qlik Connect, upcoming webinars, exciting learning promotions, and more!

    ElizabethKropp_0-1716233927804.png

     

    3 reasons that’ll give you FOMO.

    1.  Customer Lightening Round

    A quick, fun, and energetic exploration into how successful global brands have conquered unique business challenges and found the opportunities in their data.

    Featuring Qlik customers: Penske Transportation Solutions: Sarvant “Rana” Singh, VP, Data & Emerging Technologies; and Anthony Arana, Director, Data Engineering and Business Intelligence

    Vanguard: Glenn Wilkins, Sr. Enterprise Architect

    Takeuchi: Susan Dean, Director of Business Technology

    Genentech: Prashant Sahay, Analytics Director Technology

    2.  Qlik Ecosystem Discussion

     Learn how to kick your data journey into high gear. Katie Linendoll and our strategic partners, AWS and Accenture, discuss how partner expertise enhances Qlik deployment

    3.  Data. Analytics. AI. And rides.

    Are you registered for Qlik Connect? Beyond over 100 breakout sessions, 30+ certifications, and 60+ areas to explore on the show floor, you need to get ready for one of the biggest parties Qlik has ever thrown. We’ve reserved areas of Universal Islands of Adventure theme park just for you. Featuring themed lands and cutting-edge rides, Islands of Adventure promises excitement around every .

    June 5 • 7:00 PM - 10:00 PM

    Register Now

     

    ElizabethKropp_1-1716234109779.png

    New Qlik Learning Promotions!

    Sometimes your work can’t wait for an upcoming class with in-person training. That’s why there’s the Qlik Continuous Classroom, our self-paced learning platform.  It allows you to catch up on courses and assessments that match your role, style, and schedule. Redeem code SELFPACED20 for 20% off Qlik Continuous Classroom subscriptions. Explore the catalog here

    Or if you prefer traditional classroom training, where one of our expert instructors offers demonstrations and hands-on exercises, we are offering a discounted rate of 30% with code CLASSROOM30 on all public courses.

    Use our course catalogue to find the right training course(s) for you.

    Act fast, these codes expire on June 30th. 

    Get Signed Up!

     

    ElizabethKropp_3-1716234841230.pngLook out for a new Qlik Learning experience!

    Qlik has joined forces with Talend to bring you the very best of data analytics and integration, and now we're doing the same with your learning experience. Our new, integrated learning platform combines the best of both worlds, providing you with a one-stop-shop for all your training . 

    Take a moment to watch this sneak peek.

     

     

    ElizabethKropp_4-1716234953881.png

    Do More with Qlik: Qlik Cloud Analytics Recap and Getting Started

    May 29, 2024, at 10:00am EDT

    Join Mike Tarallo, as he shows you how to quickly get started with Qlik Cloud.  Mike will explain exactly what makes Qlik Sense the next-generation data exploration and visualization software, and make it easy for you to take action today.

    Watch On Demand!

     

    ElizabethKropp_5-1716235012302.png

    Join Our Customer Survey: We Value Your Feedback!

    We're excited to announce that we launched our semi-annual customer survey on May 27! This is your opportunity to share your thoughts and experiences with us, helping us better understand your needs and preferences.

    If you haven’t already, make sure to check your inbox for our survey invitation!

     

     

     

     

     

    Show Less
  • Image Not found

    Product Innovation

    Qlik Sense May 2024 (Client-Managed) now available!

    We are happy to announce the next version of our client-managed analytics offering, Qlik Sense May 2024.  This version includes improvements primarily focused on visualizations, connectivity, and the ability to preload apps.
  • Image Not found

    Design

    Straight Table

    The straight table, included in the Visualization bundle, has all the table properties that we are used to as well as many new features. These new features make it easier for developers to create a straight table and it gives users the ability to customize straight tables in the apps they view. The straight table is ideal when you want to provide detailed data – the raw data. While you do not want to have too many columns (ten or less columns are... Show More

    The straight table, included in the Visualization bundle, has all the table properties that we are used to as well as many new features. These new features make it easier for developers to create a straight table and it gives users the ability to customize straight tables in the apps they view. The straight table is ideal when you want to provide detailed data – the raw data. While you do not want to have too many columns (ten or less columns are ideal for the best performance), a straight table can have many columns (dimensions and measures).

    As previously mentioned, the straight table can be added to a sheet from the Qlik Visualization bundle. This means developers will need to open the advanced options to add the straight table to their sheet(s) and make edits. Once the straight table is added to a sheet, developers can add columns – either fields and master items or custom expressions. One of the new features that developers can take advantage of to build tables quickly is the ability to add more than one dimension and/or measure at once. Simply select the dimensions and measures you would like to add to the table and then click the Add button.

    fields and master items.png

     

     

     

     

     

     

     

     

     

     

     

    Once columns are added to the table, they can be dragged as needed to the desired position/order. Developers also can add alternate columns to the straight table. These columns can be dimensions and/or measures. These alternates columns will be available to users to customize the straight table if chart exploration is enabled. This is a great new feature because the user does not need edit permissions to modify the straight table. Users can add and/or remove columns based on their analysis. Being able to add columns as needed also improves performance since the straight table does not need to display all the columns, all the time. Loading the straight table with the minimum columns needed will decrease the load time.

    columns and alts 2.png                  exploration.png

    Chart exploration allows users, who are in analysis mode, to add and remove columns from the straight table they are viewing by checking or unchecking them in the Chart exploration panel (see image below). Any users viewing the sheet can customize the straight table. Users cannot see layout changes made by other users using the app, unless they opt to share the visualization or create a public bookmark with the layout saved.

    table with chart exploration.png

    Another new feature for developers is the ability to set the column width. By default, the column width is set to Auto, but developers can set it to Fix to content, Pixels or Percentage. Pagination is another new feature that can be enabled in a Straight table. With pagination, a specified number of rows are displayed at once and the user can navigate through the pages using arrows or selecting the page.

    column width.png

     

     

     

    pagination.png

     

    Many of the properties for the straight table are familiar but the new ones are moving the straight table to a new level. Learn everything you need to know about the straight table in Qlik Help and add one to your next app. Also check out the SaaS in 60 video for a quick video overview:

    Thanks,

    Jennell

     

     

     

     

     

    Show Less
  • Image Not found

    Support Updates

    Qlik Sense Migration: Migrating your Entire Qlik Sense Environment

    Hi everyone, For various and valid reasons, you might need to migrate your entire Qlik Sense environment, or part of it, somewhere else. In this post, I’ll cover the most common scenario: a complete migration of a single or multi-node Qlik Sense system, with the bundled PostgreSQL database (Qlik Sense Repository Database service) in a new environment. So, how do we do that? Introduction and preparationBackup your old environmentDeploy and rest... Show More

    Hi everyone,

    For various and valid reasons, you might need to migrate your entire Qlik Sense environment, or part of it, somewhere else.

    In this post, I’ll cover the most common scenario: a complete migration of a single or multi-node Qlik Sense system, with the bundled PostgreSQL database (Qlik Sense Repository Database service) in a new environment.

    So, how do we do that?

     

     

    Introduction and preparation

    Let’s start with a little bit of context: Say that we are running a 3 nodes Qlik Sense environment (Central node / Proxy-Engine node / Scheduler node).

    On the central node, I also have the Qlik shared folder and the bundled Qlik Sense Repository Database installed.

    This environment has been running well for years but I now need to move it to a brand new hardware ensuring better performance. It’s not possible to reinstall everything from scratch because the system has been heavily used and customized already. Redoing all of that to replicate the environment is too difficult and time-consuming.  

    I start off with going through a checklist to verify if the new system I’m migrating to is up to it:

    And then I move right over to…

     

    Backup your old environment

    The first step to migrate your environment in this scenario is to back it up.

    To do that, I would recommend following the steps documented on help.qlik.com (make sure to select your Qlik Sense version top left of the screen).

    https://help.qlik.com/en-US/sense/April2019/Subsystems/PlanningQlikSenseDeployments/Content/Sense_Deployment/Backing-up-a-site.htm

    Once the backup is done you should have:

    • A backup of the database in .tar format
    • A backup of the content of the file share which includes your applications, application content, archived logs, extensions,…
    • Backups of any data source files that need to be migrated and are not stored in the shared folder like QVDs

    Then we can go ahead and…

     

    Deploy and restore the new central environment

    The next steps are to deploy and restore your central node. In this scenario, we will also assume that the new central node will have a different name than the original one (just to make things a bit more complicated 😊).

    Let’s start by installing Qlik Sense on the central node. That’s as straightforward as any other fresh install.

    You can follow our documentation. Before clicking on Install simply uncheck the box “Start the Qlik Sense services when the setup is complete.

    The version of Qlik Sense you are going to install MUST be the same as the one the backup is taken on.

    Now that Qlik Sense is deployed you can restore the backup you have taken earlier into your new Qlik Sense central node following Restoring a Qlik Sense site.

    Since the central node server name has also changed, you need to run a Bootstrap command to update Qlik Sense with the new server name. Instruction provided in Restoring a Qlik Sense site to a machine with a different hostname.

    The central node is now almost ready to start.

    If you have changed the Qlik Share location, then the UNC path has also changed and needs to be updated.

    To do that:

    1. Go to C:\Program Files\Qlik\Sense\Repository\Util\QlikSenseUtil
    2. Run QlikSenseUtil.exe as Administrator
    3. Click on Connect to the database and enter the credential to connect to the new PostgreSQL database
    4. Click on Service Cluster and press OK. This should display the previously configured UNC Path
    5. You simply need to update each path, save and start/restart all the Qlik sense services.

      01.png

    At this point make sure you can access the Qlik Sense QMC and Hub on the central node. Eventually, check that you can load applications (using the central node engine of course). You can also check in the QMC > Service Cluster that the changes you previously made have been correctly applied.

    Troubleshooting tips: If after starting the Qlik Sense services, you cannot access the QMC and/or Hub please check the following knowledge article How to troubleshoot issue to access QMC and HUB

     

    What about my rim nodes?

    You’ve made it here?! Then congratulation you have passed the most difficult part.

    If you had already running and configured rim nodes in your environment that you now need to migrate as well, you might not want to remove them from Qlik Sense to add the new ones since you will lose pretty much all the configuration you have done so far on these rim nodes.

    By applying the following few steps I will show you how to connect to your “new” rim node(s) and keep the configuration of the “old” one(s).

    Let’s start by installing Qlik Sense on each rim node like it was a new one.

    The process is pretty much the same as installing a central node except that instead of choosing “Create Cluster”, you need to select “Join Cluster

    Detailed instruction can be found on help.qlik.com: Installing Qlik Sense in a multi-node site

    Once Qlik Sense is installed on your future rim node(s) and the services are started, we will need to connect to the “new” Qlik Sense Repository Database and change the hostname of the “old” rim node(s) to the “new” one so that the central node can communicate with it.

    To do that install PGAdmin4 and connect to the Qlik Sense Repository Database. Detailed instruction in Installing and Configuring PGAdmin 4 to access the PostgreSQL database used by Qlik Sense or NPrinting knowledge article.

    Once connected navigate to Databases > QSR > Schemas > public > Tables

    You need to edit the LocalConfigs and ServerNodeConfigurations table and change the Hostname of your rim node(s) from the old one to the new corresponding one (Don’t forget to Save the change)

    LocalConfigs table

    02.png

     

    ServerNodeConfigurations table

    03.png

     

    Once this is done, you will need to restart all the services on the central node.

    When you have access back, login to the QMC and go to Nodes. Your rim node(s) should display the following status, “The certificate has not been installed

    04.png

     

    From this point, you can simply select the node, click on Redistribute and follow the instruction to deploy the certificates on your rim node. After a moment the status should change and you should see the services being up and running.

    Do the same thing on the remaining rim node(s).

    Troubleshooting tips: If the rim node status is not showing “The certificate has not been installed” it means that either the central node cannot reach the rim node or the rim node is not ready to receive new certificates.

    Check that the port 4444 is opened between the central and rim node and make sure the rim node is listening on port 4444 (netstat -aon in command prompt).

    Still no luck? You can completely uninstall Qlik Sense on the rim node and reinstall it.

     

    Finalizing your migration

    At this point, your environment is completely migrated and most of the stuff should work.

    Data Connection

    There is one thing to consider in this scenario. Since the Qlik Sense certificates between the old environment and the new one are not the same, it is likely that data connections with passwords will fail.  This is because passwords are saved in the repository database with encryption.  That encryption is based on a hash from the certs.  When the Qlik Sense self-signed cert is rebuilt, this hash is no longer valid, and so the saved data connection passwords will fail.  You will need to re-enter the passwords in each data connection and save.  This can be done in the QMC -> Data Connections.

    See knowledge article: Repository System Log Shows Error "Not possible to decrypt encrypted string in database"

    Licensing

    Do not forget to turn off your old Qlik Sense Environment. As per your license agreement, you can only use one license per active Qlik Sense environment. Reach out to your account manager for more details.

     

    Best practices

    Finally, don’t forget to apply best practices in your new environment:

     

     

     

    Show Less
  • qlik-community-blogs.jpg

    Explore Qlik Gallery

    BMW & Layout Container

    BMW & Layout ContainerJOIN DATATesting layout container features.DiscoveriesNew possibilities with layout container featureImpactNew design to catch insightsAudienceDevelopersData and advanced analyticsDesign only
  • Image Not found

    Support Updates

    QlikView - New Security Patches Available Now

    Update 21st of March 16:00 CET: published CVE numberUpdate 27th of March 10:45 CET: added FAQ Hello Qlik Users, A security issue in QlikView has been identified and patches have been made available. Details can be found in the Security Bulletin High Severity Security fix for QlikView (CVE-2024-29863). Today, 20th of March 2024, we have released two service releases across the latest versions of QlikView to patch the reported issue. All versions o... Show More

    Update 21st of March 16:00 CET: published CVE number
    Update 27th of March 10:45 CET: added FAQ

    Hello Qlik Users,

    A security issue in QlikView has been identified and patches have been made available. Details can be found in the Security Bulletin High Severity Security fix for QlikView (CVE-2024-29863).

    Today, 20th of March 2024, we have released two service releases across the latest versions of QlikView to patch the reported issue. All versions of QlikView prior to and including the releases below are impacted:

    • QlikView May 2023 SR1 (12.80.20100)
    • QlikView May 2022 SR2 (12.70.20200)

     

    Call to Action

    As no workarounds can be provided, Customers should upgrade QlikView to one of the following versions that contain the fix:

    • QlikView May 2023 SR2 (12.80.20200)
    • QlikView May 2022 SR3 (12.70.20300)
    This issue only impacts QlikView. Other Qlik data analytics products including Qlik Cloud and Qlik Sense Enterprise on Windows are not impacted.

    Additional Details


    The Security Notice label is used to notify customers about security patches and upgrades that require a customer’s action. Please subscribe to the ‘Security Notice’ label to be notified of future updates. 

    Frequently Asked Questions

    Q: Is the vulnerability present in the QlikView Plugin or other QlikView products? 
    A: The vulnerability is related to the MSI files on disk.

    Q: Will deleting the MSI files mitigate the issue?
    A: Qlik does not consider removing the MSI files a complete workaround. A server user can restore them.

    Show Less
  • Image Not found

    Design

    Creating Visual Button Selections States

    Ever wonder how those Qlik experts make those awesome interactive dashboards? It is easier than you think. Check out this video that quickly shows you how to create custom beautiful buttons to apply selections and visually represent an active or non-active selection state. Allowing users just another way to analyze data in a way that is easy and familiar.
  • Image Not found

    Qlik Education

    Get discounted trainings and subscriptions!

    Have you heard the news? Education Services has launched a super exciting deal, and it's time to spread the word like crazy!
  • qlik-community-blogs.jpg

    Design

    Switch Control Statement

    The switch control statement is one of many controls statement that can used to determine the flow of the script.  In Qlik Sense help, it is defined as: The switch control statement is a script selection construct forcing the script execution to follow different paths, depending on the value of an expression. Syntax:Switch expression {case valuelist [ statements ]} [default statements] end switch The switch control statement can be used in the sc... Show More

    The switch control statement is one of many controls statement that can used to determine the flow of the script.  In Qlik Sense help, it is defined as:

     

    The switch control statement is a script selection construct forcing the script execution to follow different paths, depending on the value of an expression.

     

    Syntax:

    Switch expression {case valuelist [ statements ]} [default statements] end switch

     

    The switch control statement can be used in the script to identify a specific execution path.  With the switch control statement, several paths can be defined and a default path can be defined as well when no match is found in the case clause.  The various script paths cannot cross – they should be individual paths that do not overlap.  In the script below, the expression x will be compared to each case.  When there is a match, the script for that case will be executed.

     

    In the example below, Case 1 will be executed – the variable y will be set to Sunday and one record will be generated in the table.

    script.png

    Below is a look at the record generated.

    Table.png

    It is also possible to have more than one value for a case, for instance, you can use the script below to run the same script if x matches 1, 2 or 3.

    case 1 2 3.png

    When faced with various script execution paths, try using the switch control statement.  While I rarely have a need to use it, I like how neat and straight-forward the syntax is.  I have attached an example Qlik Sense app with the full script for you to test out for yourself.

     

    Thanks,

    Jennell

    Show Less
  • Image Not found