Qlik Sense - Optimizing app performance

这篇具有很好参考价值的文章主要介绍了Qlik Sense - Optimizing app performance。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Optimizing app performance

App performance can be improved with reduced app size, simplified data models, and strategic use of set analysis. This section will help you avoid performance issues by pointing out areas where performance can be impacted and how you can evaluate and monitor app performance.

App complexity

These are loose categories that can help diagnose issues. The most complex apps have the lowest performance.

Simple apps:

  • Do not include complex set analysis or If() statements.
  • Do not include large tables.
  • Have a simple data model.
  • Contain simple calculations.
  • May have large data volumes.

Moderate apps:

  • Have a data model with many tables, but follow best practices.
  • Use set analysis and several If() statements.
  • Have large or wide tables on sheets (15 columns or more).

Complex apps:

  • Have a very complex data model.

  • Connect to large data volumes.
  • Contain complex calculations, charts, and tables.

App details

You need to consider your hardware environment in relation to app size, because it affects the performance of your Qlik Sense deployment. For example, if you do not optimize your apps, they may require more hardware resources.

Monitoring app size will help you:

  • Understand current performance.
  • Understand the performance impact of deploying a new app.
  • Understand the performance impact of modifying an existing app.
  • Resolve performance issues.
  • Plan for future growth.

Qlik provides tools that can help you asses your apps. For more information, see: Performance and scalability in Qlik Sense Enterprise.

These are the basic app elements that can affect performance:

App details that can affect performance
Feature Description
App disk size (MB) You can find app size in the QMC. Go to Apps, and open the Column selector on the right hand side next to Actions. Click the radio button next to File size (MB). If you are using Qlik Sense Desktop, you can find app size in Windows Explorer. The default folder is %USERPROFILE%\Documents\Qlik\Sense\Apps. The Apps folder lists all app names and file sizes.

App size in RAM (GB)

You can determine an app's base RAM footprint by:

  1. Restarting the Qlik Sense server.
  2. Noting the current RAM usage.
  3. Opening up the Qlik Sense app.
  4. Recording the difference in RAM.

You can use the App Metadata Analyzer to find this metric if you are using Qlik Sense June 2018 or later. For more information, see App Metadata Analyzer.

App total rows (M)

You can use system fields to calculate total rows. Create a KPI with the measure Sum($Rows). For more information, see System fields.
App total fields You can use system fields to calculate total fields. Create a KPI with the measure Sum($Fields). For more information, see System fields.
App total tables You can use system fields to calculate total tables. Create a KPI with the measure Count(DISTINCT $Table). For more information, see System fields.

Monitoring your app

The Qlik Management Console (QMC) provides apps for monitoring system performance and usage on Qlik Sense Enterprise on Windows:

  • The Operations Monitor app provides information about hardware utilization, such as server memory and CPU usage, active users, and reload task activity. It also provides summary and detailed information about errors, warnings, and log activities in the Qlik Sense server environment.

  • The License Monitor app tracks license usage, and facilitates monitoring changes to license allocation.

  • The Log Monitor app presents nearly all log data available and enables trend analysis and troubleshooting.
  • The Sessions Monitor app shows log data about usage of apps.
  • The Reloads Monitor app presents detailed information about reload data, both from the QMC and apps open in the hub.
  • The Sense System Performance Analyzer app displays Qlik Sense performance across all nodes.
  • The Sense Connector Logs Analyzer app provides insights into usage and errors of specific Qlik connectors.
  • The App Metadata Analyzer app provides a holistic view of all your Qlik Sense apps, including granular level detail of an apps data model and its resource utilization.

For more information, see Monitoring a Qlik Sense Enterprise on Windows site.

Large data volumes

You can employ these architecture strategies when you are connecting to large data volumes.

Segmentation

You can segment QVDs by dimensions, such as time frame, region or aggregation level. For example, you can have:

  • A QVD that contains data from the two most recent years.
  • A QVD that contains historical data further than two years.
  • A QVD that contains all data aggregated on a higher level. For example, per month instead of date, or per country instead of individual customers.

  • One large QVD with all the data, which is only used by a small subset of users.

You can segment the apps in a similar way. Smaller apps will address the analytical needs of most users. This saves memory.

You can also have multiple apps focused on different regions. This way, users will not open an app with data that they are not interested in or do not have rights to access. Data that is not accessible via section access still affects memory.

On-Demand App Generation (ODAG)

Qlik Sense on-demand apps give users aggregate views of big data stores. They can identify and load relevant subsets of the data for detailed analysis.

From a user perspective, there are two apps:

  1. A shopping cart with aggregated data.
  2. An empty template app used to display detail.

The user makes selections in the shopping cart app. Once a threshold has been met, a custom LOAD script is created which populates the template app with the requested details. For more information, see Managing big data with on-demand apps.

Data model performance

These are indicators that can impact data model performance. Each one is a best practice that will improve app usability.

Data model performance best practices
Action Description

Synthetic keys removed

Qlik Sense creates synthetic keys when two or more data tables have two or more fields in common. This may mean that there is an error in the script or the data model. To diagnose synthetic keys, see Synthetic keys.

Circular references removed from data model

Circular references occur when two fields have more than one association. Qlik Sense will attempt to resolve these by changing the connection to one of the tables. However, all circular reference warnings should be resolved, see Understanding and solving circular references.

Appropriate granularity of data

You should only load data that is necessary. For example: a group of users only need data divided by week, month, and year. You can either load in the aggregated data or aggregate the data within the load script to save memory. If a user does need to visualize data at a lower level of granularity, you can use ODAG or document chaining.

QVDs used where possible

A QVD is a file containing a table of data exported from Qlik Sense. This file format is optimized for speed when reading data from a script, but is still very compact. Reading data from a QVD file is typically 10-100 times faster than reading from other data sources. For more information, see: Working with QVD files.

QVD files optimized on load

QVD files can be read in two modes: standard (fast) and optimized (faster). The selected mode is determined automatically by the script engine.

There are some limitations regarding optimized loads. It is possible to rename fields, but any of these operations will result in a standard load:

  • Any transformations on the fields that are loaded.
  • Using a where clause causing Qlik Sense to unpack the records.
  • Using Map on a field that is loaded.

Incremental loads leveraged

If your app connects to a large amount of data from databases that are continuously updated, reloading the entire data set can be time consuming. Instead, you should use incremental load to retrieve new or changed records from the database. For more information, see Loading new and updated records with incremental load.

Snowflake model consolidated

If you have a snowflake data model, you may be able to reduce the number of data tables by joining some of them using the Join prefix or other mapping. This is especially important for large fact tables. A good rule of thumb is to have only one large table. For more information see To Join or Not to Join.

Tables that have a small number of fields are denormalized

If you have two tables with few fields, it may improve performance to join them. For more information, see Next steps in scripting.

Denormalized lookup (leaf) tables with mapping loads

You should not use the Join prefix if you only need to add one field from a table to another. You should use the ApplyMap lookup function, see Don't join - use ApplyMap.

Time stamps removed or decoupled from date field

Date fields can fill up space when the timestamp is present as the string representation is larger, and the number of distinct values is larger. If the precision is not necessary for your analysis, you can round the timestamp to e.g. the nearest hour using Timestamp(Floor(YourTimestamp,1/24)) or remove the time component completely using Date(Floor(YourTimestamp)).

If you want the timestamp, you can decouple it from the date itself. You can use the same Floor() function, and then create a new field with the extracted time by using something along the lines of: Time(Frac(YourTimestamp)).

Unnecessary fields removed from data model

You should only load necessary fields in your data model. Avoid using Load * and SELECT. Make sure you keep:

  • Fields that are necessary for your analysis.
  • Fields that are actually being used in the app.

Link tables avoided when dealing with high data volumes

You should use link tables where possible. However, if you are dealing with large data volumes, concatenated tables can out-perform link tables.

Concatenated dimensions broken to new fields

You should break apart concatenated dimensions into separate fields. This reduces the number of unique occurrences of values in your fields. This is similar to how timestamps can be optimized.

AutoNumber used where possible

You can create an optimized load by loading your data from a QVD file first, and then using the AutoNumber statement to convert values to symbol keys. For more information, see AutoNumber.

Data islands avoided

Data islands can be useful, but they usually affect performance. If you are creating islands for selection values, use variables.

QVDs are stored based on incremental timeframes

You should store QVD in segments, such as monthly. These smaller monthly QVD can then support many different apps that might not need all of the data.

Sheet performance

These are best practices that will improve performance of sheets and visualizations.

Sheet performance best practices
Action Description

The If() function is avoided where possible

If the If() function is used inside an aggregation function, it will operate at the record level and be evaluated many times.

For example, if you have 1000 records in an aggregation, an If() condition will be evaluated 1000 times. This could cascade rapidly if you nest statements. You should use set analysis instead. A set analysis filter is applied before the aggregation, resulting in a faster response. These responses can also be cached via set analysis, where If() cannot. You could also consider other functions and modifications to the data model.

Fields from different tables inside an aggregation table are avoided where possible.

When an aggregation is evaluated, the calculation runs through two steps:

  1. The first step is finding the relevant combinations on which the to make the calculation. This step is single-threaded.

  2. The second step is performing the calculation. This step is multi-threaded.

The single-threaded part can affect performance considerably. One example is if you have multiple fields inside the aggregation, for example, Sum(Quantity*ListPrice). If Quantity is in the fact table, and ListPrice is in the master products table, the engine first needs to join the two tables to find the combinations before it can start to sum the product. The joining is the single-threaded part, and the summing is multi-threaded. If both fields are found in the same table, no join is necessary, and the aggregation is evaluated considerably faster.

Aggr() and nested Aggr() functions are used minimally

The Aggr() function greatly affects performance. Incorrect use can give inaccurate results. For example, in a table with dimensions that vary from the dimensions within the Aggr() function. For more information, see When should AGGR not be used?

Set analysis is used where possible

You can use set analysis to define a set of data values that is different from the normal set defined by the current selections. For more information, see Set analysis.

String comparisons avoided where possible

String comparisons are not as efficient as set analysis. For example, you should avoid Match(), MixMatch(), WildMatch(), and Pick(). Create flags in the script or use set analysis instead. For more information, see Conditional functions and Performance of conditional aggregations.

Calculation conditions are used on objects containing intensive calculations

You may have visualizations with many records when there are no selections. As a best practice, add calculation conditions to objects so that they only render after certain selections have been made. This stops the creation of very large hypercubes. For example: GetSelectedCount([Country])=1 OR GetPossibleCount([Country])=1. In this scenario, the visualization will not render unless the user selects a single country, or makes other selections where only a single country is possible.

Measures are pre-calculated in the script where possible

Any measure that is at the lowest level of granularity of the data model should be calculated in the script. For example, if in the same record in a table you have Sales and Cost, you could derive the margin by calculating Sales - Cost AS Margin. You can also aggregate other values in advance if you know that they will not vary based on selection, or that are bound to a different level of granularity.

Tables have less than 15 columns and have calculation conditions

A table with 15 columns could be considered wide. If your tables consist of many records, you should use calculated conditions on the table object so that it only renders after certain selections or criteria have been met. If your table is very wide, consider:

  • Creating multiple smaller tables that show conditionally.
  • Using methods to conditionally show columns.
  • Keeping your tables limited to only what fields are necessary for your analysis.

Sheets do not have an excessive number of objects

Objects are calculated when the user navigates to the sheet. Every time a user makes a selection on that sheet, each object will be recalculated if that current state does not exist in the cache. If you have a sheet with many charts, the user will have to wait for every object to calculate on nearly every selection. This puts significant load on the engine. As a best practice, follow the Dashboard/Analysis/Reporting (DAR) concept to develop a clean and minimal app. For more information, see DAR methodology.

Numeric flags are leveraged in the script for use in set analysis

Set analysis with flags can be more efficient than using string comparisons or multiplication.

Master items or variables used for expressions文章来源地址https://www.toymoban.com/news/detail-685404.html

Master items enable drag and drop of governed metrics and guarantee that expressions will be cached. For example, Sum(Sales) is different from SUM(Sales). Expressions are cached on spelling and case, and need to match verbatim in order to be reused.

到了这里,关于Qlik Sense - Optimizing app performance的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • How to configure Qlik Sense to use a dedicated PostgreSQL database

    The Qlik Sense Repository Database (QSR) can be moved to a dedicated standalone PostgreSQL instance not hosted on the same machine as other Qlik Sense Services. It is also possible to move an already existing QSR from a local Sense install, to a dedicated PostgresSQL database. Content: Set up a postgresSQL database Simplified checklist of steps: Moving the Q

    2024年02月07日
    浏览(38)
  • Unity-HDRP-Sense-7

    2.1 摘要 使用办公室的示例场景来学习如何搭建一个完整HDRP场景,并利用HDRP针对VR的支持,制作一个HDRP VR应用。本章提供了 两个工程Office_HDRP_Start和Office_HDRP_Complete(其实项目将,场景只包含主相机、一盏平行光等 和导入Unity中的场景模型) 首先打开Office_HDRP_Complete,在Unity编辑

    2024年04月11日
    浏览(35)
  • Unity-HDRP-Sense-5

    4.HDRP配置文件(HDRP Asset) HDRP得全称是High Definition Render Pipeline(高清渲染管线)。它是基于Scriptable Render Pipeline(简称 SRP,中文翻译为 ”可编程渲染管线“ )实现的一个模板,目前的目标平台是支持 Compute Shader的带独立下i安卡的台式机和家庭游戏机,比如PlayStation4 和 Xbo

    2024年03月18日
    浏览(54)
  • 直流电源的SENSE远端电压补偿技术

    原创移步如下链接:直流电源的SENSE远端电压补偿技术_新闻资讯_GWINSTEK 固纬电子(苏州)有限公司-台湾固纬、苏州固纬、上海固纬 专业的示波器、频谱分析仪、信号源、电源等电子测量仪器 生产厂家 高精度电源通常采用四线制测量远端输出电压。四线制的输出端包括正、

    2024年02月15日
    浏览(37)
  • 【ESP32S3 Sense接入百度在线语音识别】

    视频地址: ESP32S3 Sense接入百度在线语音识别 目前这是我使用的ESP32S3官方硬件👍👍👍(小小的身材有大大的力量)只需要35元加摄像头麦克风79元,后期我会整理相关专栏进行Arduino系统学习😘😘😘。有需要可以购买xiao开发板💕💕💕,SeeedXIAO ESP32S3 Sense硬件购买地址:

    2024年04月10日
    浏览(49)
  • 【ESP32S3 Sense接入语音识别+MiniMax模型对话】

    围绕ESP32S3 Sense接入语音识别+MiniMax模型对话展开,首先串口输入“1”字符,随后麦克风采集2s声音数据,对接百度在线语音识别,将返回文本结果丢入MiniMax模型,进而返回第二次结果文本,实现语言对话文本效果。以上一共有两次调用,后期只需加入tts模块就可完整对话。

    2024年04月16日
    浏览(69)
  • 【ESP32S3 Sense接入语音识别+MiniMax模型+TTS模块语音播报】

    讲解视频: ESP32S3 AI助手使用MiniMax大模型生产工具1 大家好,今天的教程将围绕如何实现精准的语音播报功能展开,我们用到了ESP32S3 Sense接入语音识别+MiniMax模型对话+SNR9816TTS模块。 目前这是我使用的ESP32S3官方硬件👍👍👍(小小的身材有大大的力量)只需要35元加摄像头麦

    2024年04月12日
    浏览(63)
  • Common Sense Machines(CSM):立志成为图像生成适用于游戏引擎的3D资产AI产品

    详细说明 Common Sense Machines(CMS):立志成为图像生成适用于游戏引擎的3D资产AI产品-喜好儿aigc 详细说明:https://heehel.com/CSM-3d 官方网站:https://www.csm.ai/ 使用体验网址:https://3d.csm.ai/ 来自普纳的前 Google DeepMind 研究科学家 Tejas Kulkarni 与他人共同创立了 Common Sense Machines, htt

    2024年03月10日
    浏览(56)
  • CSAPP cache lab - Optimizing Matrix Transpose

    矩阵转置是一种操作,它将矩阵的行和列互换位置,即将原始矩阵的行变为转置矩阵的列,将原始矩阵的列变为转置矩阵的行。转置操作可以通过改变矩阵的布局来方便地进行某些计算和分析。 假设有一个m×n的矩阵A,其转置矩阵为n×m的矩阵B。那么B的第i行第j列的元素就是

    2024年01月22日
    浏览(40)
  • PyTorch翻译官网教程7-OPTIMIZING MODEL PARAMETERS

    Optimizing Model Parameters — PyTorch Tutorials 2.0.1+cu117 documentation 现在我们有了一个模型和数据,是时候通过优化我们的数据参数来训练、验证和测试我们的模型了。训练模型是一个迭代过程;在每次迭代中,模型对输出进行预测,计算猜测中的误差(损失),收集误差相对于其参数的导

    2024年02月16日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包