Environment
- Qlik Sense All versions
Description
In Qlik Sense, when if you export some stories to PDF/PPTX you might sometime have some issue like image no appearing.
If the Printing logs doesn't help to figure out the issue it might be needed t
...Environment
- Qlik Sense All versions
Description
In Qlik Sense, when if you export some stories to PDF/PPTX you might sometime have some issue like image no appearing.
If the Printing logs doesn't help to figure out the issue it might be needed to add a feature in the Printing config file.
Resolution
Modify the printing config file to get more details in the System_Printing_rwr.txt log.
- Edit C:\Program Files\Qlik\Sense\Printing\printing.exe.config
- Add below setting in file
<!-- ===================================== Sense rendering configuration ===================================== --> <add key="webrenderer-args" value="-l=trace" />
- Save and close the file.
- Restart Qlik Sense services.
- Repeat on each node that has a running Qlik Sense Printing service.
Troubleshooting
You will now have more information in log SERVERNAME_System_Printing_rwr.txt
In the below example, we do see there is a custom Theme (XTheme) and the format is invalid, and after that there is a timeout:
[2021-01-27 10:26:19.013001] successfully downloaded resource from GRPC, size in bytes: 59396, url: https://qlik.net/extensions/XTheme/Cond_Regular.ttf [2021-01-27 10:26:19.013966] PaintHandler::OnResourceLoadComplete url=https://qlik.net/extensions/XTheme/Cond_Regular.ttf bytes=59396 response_status=OK [2021-01-27 10:26:19.068861] CefOnPaintReceivedTask img=worker_1_3w_imgidx_002_navid__rid_bdcc1e7a49dd43b5b2f0cf37074e3b3c state=WATERMARKED INVALID [2021-01-27 10:26:19.068868] CefOnPaintReceivedRwrCefTaskPixelWatermark::~CefOnPaintReceivedRwrCefTaskPixelWatermark [2021-01-27 10:26:19.089326] CefOnPaintReceivedTask img=worker_1_3w_imgidx_002_navid__rid_bdcc1e7a49dd43b5b2f0cf37074e3b3c state=WATERMARKED INVALID [2021-01-27 10:26:19.089331] CefOnPaintReceivedRwrCefTaskPixelWatermark::~CefOnPaintReceivedRwrCefTaskPixelWatermark [2021-01-27 10:26:42.461485] it timeout for js_timeout_counter=1 img=worker_1_1w_imgidx_000_navid__rid_3a88eaeb2d1d4b60a2c5d323195d325e
In this example, the problem is coming from some box-shadow and/or margin and/or padding containing in this Theme.
Since the theme is the source of the issue, the solution if the you want to keep the dashboard style is to overwrite the problematic style entry with a following entry with increased specificity (more detailed CSS tag matches).
For instance, if the box-shadow element is the one causing the issue, you could add to the theme CSS the second section below:
.qv-object .qv-inner-object {
border: 1px solid lightgray;
box-shadow: 1px 1px 5px lightgray;
}
.printing-snapshot-content-v2 .qv-object .qv-inner-object,
.printing-live-content .qv-object .qv-inner-object {
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
This is an example which may work or may not work, you will need to analyze which styles causes export issues, box-shadow is one candidate.
The workaround is always based on this approach though, regardless of the style. The "side-effect" is that the exported PDF/image won't have the box shadow style.
Note that Printing is not guaranteed to work with custom themes (Qlik Sense does not provide printing support for custom themes).
- Labels:
-
How To
This is a sample on how to audit security rules with the Qlik Sense Repository Service (QRS) API.
Environments:
- Qlik Sense Enterprise on Windows June 2017 and later
Resolution
In order to filter on "Hub Only" or "QMC Only", "environmentAttribut
This is a sample on how to audit security rules with the Qlik Sense Repository Service (QRS) API.
Environments:
- Qlik Sense Enterprise on Windows June 2017 and later
Resolution
In order to filter on "Hub Only" or "QMC Only", "environmentAttributes" needs to be set.
Hub & QMC :
"environmentAttributes":"" (or do not specify it)
Hub Only:
"environmentAttributes":"conte
QMC Only:
"environmentAttributes":"conte
Sample:
$body = '{"resourceType":"App","subjectRef":{"resourceFilter":""},"actions":46,"environmentAttributes":"context=AppAccess;","subjectProperties":["id","name","userId","userDirectory"],"auditLimit":999999,"outputObjectsPrivileges":0,"resourceProperties":["name"]}'
$hdrs = @{}
$hdrs.Add("X-Qlik-xrfkey","12345678qwertyui")
$hdrs.Add("hdr-usr","DOMAIN\Administrator")
$url = "https://qlikserver1.domain.local/hdr/qrs/systemrule/security/audit/matrix?xrfkey=12345678qwertyui"
Invoke-RestMethod -Uri $url -Method Post -Headers $hdrs -Body $body -ContentType 'application/json'
Note: the above sample is using header authentication for simplicity.
More details can be found on the help site.
- Labels:
-
Integration and Embedding
If an application using default bookmark (with "Save sheet location") is publish on an engine node set for Production purpose, the first opening attempt will work correctly and take you to the sheet with associated selections saved in the bookmark.
H
...If an application using default bookmark (with "Save sheet location") is publish on an engine node set for Production purpose, the first opening attempt will work correctly and take you to the sheet with associated selections saved in the bookmark.
However, closing the app and reopening it will only keep the selections and not the sheet location.
It will basically open the app on the sheet overview page.
Environment
- Qlik Sense Enterprise on Windows April 2020 and up
Resolution
A fix for this defect has been implemented in
- Qlik Sense June 2020 Patch 15
- Qlik Sense November 2020 Patch 9
- Qlik Sense February 2021 Patch 3
Cause
Product Defect ID: QB-3327
- Labels:
-
Visualization
2021年1月27日に「Dual の基本と応用知識」について、APAC地域向けにテクニカル・イネーブルメントを開催致しました。動画をYoutubeに公開しています。動画は英語で、所々日本語の補助字幕がついています。
DualはQlikViewとQlik Senseにおけるデータの基本的な概念です。是非御覧ください。
2021年1月27日に「Dual の基本と応用知識」について、APAC地域向けにテクニカル・イネーブルメントを開催致しました。動画をYoutubeに公開しています。動画は英語で、所々日本語の補助字幕がついています。
DualはQlikViewとQlik Senseにおけるデータの基本的な概念です。是非御覧ください。
Related Content
Below is the list of defects resolved with Qlik Sense June 2020 Patch 13. For more information, please see the Release Notes.
Environment: Qlik Sense June 2020 Patch 13
Filterpane objects inside container not displayed correctly
Jira issue ID: QB-299
Below is the list of defects resolved with Qlik Sense June 2020 Patch 13. For more information, please see the Release Notes.
Environment: Qlik Sense June 2020 Patch 13
Filterpane objects inside container not displayed correctly
Jira issue ID: QB-2993
Description: Having multiple filterpane objects inside a container might cause that some of those objects are
not visible or partially visible in the container object.
Physical keyboard is forcing bookmark close
Jira issue ID: QB-2878
Description: With a physical keyboard on an iPad the screen resizes when focus is on an input field. The
device will show a small bar on the bottom. This fix makes sure that the popup is not closed when the screen
is resized for apple devices
Two-dimensional line chart incorrectly showing gaps in lines
Jira issue ID: QB-2343
Description: Fix for an issue where a two-dimensional line chart with "Missing values" set to either "Show as
gaps" or "Show as zeroes" in certain cases incorrectly showed gaps where data points existed.
- Labels:
-
General Question
When floating point numbers are used in the parameter Class() function expected result cannot be achieved. For example, expected output of class(0.15, 0.05) is "0.15 <= x < 0.2", however output is "0.1 <= x < 0.15" which 0.15 is not included in inter
...When floating point numbers are used in the parameter Class() function expected result cannot be achieved. For example, expected output of class(0.15, 0.05) is "0.15 <= x < 0.2", however output is "0.1 <= x < 0.15" which 0.15 is not included in interval.
Please refer to following to learn about more class function.
Environment
- QlikView, any version
- Qlik Sense, any version
Resolution
It is expected behavior.
Workaround
To get desired result, first convert the floating point number to an integer (by multiplication), leaving no decimal part, and thereafter round the integer accordingly and finally convert the integer back to a float (by division).
Please check following script in the example of class(0.15, 0.05) to get desired "0.15 <= x < 0.2" result:
SET DecimalSep='.';T1:
Load *, dual(String, First) as DualClass;
Load *, First&' <= x < '&Second as String;
Load *, subfield(Class100,' ',1)/100 as First, subfield(Class100,' ',5)/100 as Second;
Load *, class(Value,'0.05') as Class, class(Value*100,'0.05'*100) as Class100;
Load recno() as ID, recno()/100 as Value autogenerate 20;
Cause
This is only a problem when you use a single constant floating point value. When you have a base 10 system (like ours), it can only express fractions that use a prime factor of the base. The prime factors of 10 are 2 and 5. So 1/2, 1/4, 1/5, 1/8, and 1/10 can all be expressed cleanly because the denominators all use prime factors of 10. In contrast, 1/3, 1/6, and 1/7 are all repeating decimals because their denominators use a prime factor of 3 or 7. In binary (or base 2), the only prime factor is 2. So you can only express fractions cleanly which only contain 2 as a prime factor. In binary, 1/2, 1/4, 1/8 would all be expressed cleanly as decimals. While, 1/5 or 1/10 would be repeating decimals. So 0.1 and 0.2 (1/10 and 1/5) while clean decimals in a base 10 system, are repeating decimals in the base 2 system the computer is operating in. When you do math on these repeating decimals, you end up with leftovers which carry over when you convert the computer's base 2 (binary) number into a more human readable base 10 number.
These are not errors in QlikView or Qlik Sense. And they are not errors in IEEE 754 either. Rather, they represent errors in the expectation of binary floating point numbers. It's simply that some values cannot be exactly represented as binary numbers, so result gets rounding errors.
- Labels:
-
App Development
Below is the list of defects resolved with Qlik Sense April 2020 Patch 13. For more information, please see the Release Notes.
Environment: Qlik Sense April 2020 Patch 13
Filterpane objects inside container not displayed correctly
Jira issue ID: QB-2
Below is the list of defects resolved with Qlik Sense April 2020 Patch 13. For more information, please see the Release Notes.
Environment: Qlik Sense April 2020 Patch 13
Filterpane objects inside container not displayed correctly
Jira issue ID: QB-2993
Description: Having multiple filterpane objects inside a container might cause that some of those objects are
not visible or partially visible in the container object.
Virtual proxy with Underscore in name cause image URL issues
Jira issue ID: QB-2660
Description: Fix problems with images in text and image object when the virtual proxy path contains
underscore
Two-dimensional line chart incorrectly showing gaps in lines
Jira issue ID: QB-2343
Description: Fix for an issue where a two-dimensional line chart with "Missing values" set to either "Show as
gaps" or "Show as zeroes" in certain cases incorrectly showed gaps where data points existed
Fixes issue with NPrinting export of some specific charts
Jira issue ID: QB-1448
Description: An issue could occur when using NPrinting to export some specific charts that had been
converted from a table.
- Labels:
-
General Question
Below is the list of defects resolved with Qlik Sense September 2020 Patch 8. For more information, please see the Release Notes.
Environment: Qlik Sense September 2020 Patch 8
Filterpane objects inside container not displayed correctly
Jira issue ID
Below is the list of defects resolved with Qlik Sense September 2020 Patch 8. For more information, please see the Release Notes.
Environment: Qlik Sense September 2020 Patch 8
Filterpane objects inside container not displayed correctly
Jira issue ID: QB-2993
Description: Having multiple filterpane objects inside a container might cause that some of those objects are
not visible or partially visible in the container object.
Physical keyboard is forcing bookmark close
Jira issue ID: QB-2878
Description: With a physical keyboard on an iPad the screen resizes when focus is on an input field. The
device will show a small bar on the bottom. This fix makes sure that the popup is not closed when the screen
is resized for apple devices
Two-dimensional line chart incorrectly showing gaps in lines
Jira issue ID: QB-2343
Description: Fix for an issue where a two-dimensional line chart with "Missing values" set to either "Show as
gaps" or "Show as zeroes" in certain cases incorrectly showed gaps where data points existed
- Labels:
-
General Question
Email notifications for reload failures go the wrong address. How can this be changed?
Environment
- SaaS editions of Qlik Sense
Resolution
- login using the user that is currently receiving the notifications
- go to Settings --> Notifications --> and
Email notifications for reload failures go the wrong address. How can this be changed?
Environment
- SaaS editions of Qlik Sense
Resolution
- login using the user that is currently receiving the notifications
- go to Settings --> Notifications --> and disable them
- the notifications can be enabled for another user by following the same process, and checking the box instead than unchecking it
An advanced configuration setting allows you to use Google Identity or OneLogin as the identity provider with Qlik Sense Mobile for SaaS and OAuth 2.0 applications.
See Creating a new identity provider configuration.
An advanced configuration setting allows you to use Google Identity or OneLogin as the identity provider with Qlik Sense Mobile for SaaS and OAuth 2.0 applications.
See Creating a new identity provider configuration.
- Labels:
-
Integration and Embedding
Do Windows Operating System Proxy Settings affect Qlik Sense Services Communication?
Environment:
This depends on the service.
The following Qlik Sense Enterprise on Windows services follow the Windows proxy
Do Windows Operating System Proxy Settings affect Qlik Sense Services Communication?
Environment:
This depends on the service.
The following Qlik Sense Enterprise on Windows services follow the Windows proxy settings:
- Qlik Sense Repository Service (QRS)
- Qlik Sense Repository Database (QRD)
- Qlik Sense Proxy Service (QPS)
- Qlik Sense Scheduler Service (QSS)
- Qlik Sense Engine Service (QES)
- Qlik Logging Service
The following are not:
- Qlik License Service (Refer "%Program Files%\Qlik\Sense\ServiceDispatcher\service.conf")
- Qlik Printing Service (Refer "%Program Files%\Qlik\Sense\Printing\printing.exe.config" )
- Broker Service
- Hub Service
- Migration Service
- Web Extension Service
- Capability Service
- Converter Service
- On-demand App Service
- Hybrid Deployment Service (HDS)
- Hybrid Setup Console (HSC)
- App Distribution Service (ADS)
- Precedents Service
- Labels:
-
Configuration
-
General Question
What is CheckSum?
An MD5 checksum is a mathematical algorithm is usually a set of 32-character hexadecimal letters and numbers that are computed on a file with a tool. These numbers are generated using special tools that employ “cryptographic hash fu
...What is CheckSum?
An MD5 checksum is a mathematical algorithm is usually a set of 32-character hexadecimal letters and numbers that are computed on a file with a tool. These numbers are generated using special tools that employ “cryptographic hash function producing a 128-bit (16-byte) hash value”. It is used not only to encrypt a ZIP archive or an EXE installer but all kinds of files. You can assign an MD5 sum even to a text or document file. The perfect match of MD5 checksum value ensures that the digital integrity and security of a file has not been broken by someone else and also that it is the accurate copy of the original file.
Thus, there are the two main reasons if the MD5 hash value of a file you downloaded does not match against the original sum:
The file might be modified by someone else in an unauthorized way.
The file was not downloaded properly and some of its elements might have been corrupted.
How does CheckSum work?
A file is pushed through an algorithm, which outputs a unique alphanumeric string called a checksum, also known as a "hash". Different files, even those with minute differences, produce different checksum values.
There are multiple algorithms that can be used to produce a checksum value. The algorithm can be MD5, SHA-1, SHA-256, and SHA-512, etc.
How to calculate the CheckSum of a file (Windows)
Option1:
- Open Windows Powershell from the Windows menu.
- Get-FileHash <filepath> -Algorithm MD5. Example can be:
Get-FileHash "C:\Users\bww\Downloads\Qlik Alerting Installer (2).exe" -Algorithm MD5
3. Press Enter
Option2:
- Download the latest version of WinMD5Free.
- Extract the downloaded zip and launch the WinMD5.exe file.
- Click on the Browse button, navigate to the file that you want to check and select it.
- Just as you select the file, the tool will show you its MD5 checksum.
- Copy and paste the original MD5 value provided by the developer or the download page.
- Click on Verify button.
- Labels:
-
Installation
QlikView 12.10:
Running a reload including a WHERE clause in which the field is a date (format mm/dd/yyyy) changes the numeric representation to #####.
Running a reload including a WHERE clause in which the field is a float value changes the value to
...QlikView 12.10:
Running a reload including a WHERE clause in which the field is a date (format mm/dd/yyyy) changes the numeric representation to #####.
Running a reload including a WHERE clause in which the field is a float value changes the value to a numeric value and drops the decimals when the number is an integer. e.g. 10.00 turns into 10
QlikView 12.50:
The reload maintains the original data type/formatting from the source.
Environment
- QlikView 12.50.2030
Resolution
This was an intended change in behavior.
Workaround:
It will be necessary to adjust the script and force the data conversion if necessary.
Cause
This is an intentional change in behavior (introduced in QV 12.20) where the QlikEngine is more effective with identifying, establishing and maintaining date formats. However, this increased awareness assumes that all dates are properly established and that they are a valid interpretation of either a date or the corresponding raw numeric format.
An optimized QVD is simply a mem copy operation and will not affect the original format whereas a non-optimized QVD load requires that the full ETL (Extract Transform Load) steps are performed; which affects performance in a negative way and formatted fields are being recalculated in order to fit with the data model. This recalculation sometimes result in that formatted values revert to the raw format in order to preserve the exactness of the numerical value rather than the format (which can always be modified at a later stage.
The format of an optimized QVD is propagated to a non-optimized QVD load when no explicit numerical format is established using the date() function. The original format of the optimized QVD is now preserved throughout an non-optimized reload of the QVD file if no other formats have been specified. Another implication is that this new behavior is much more deterministic but at the same time less forgiving with implicit formats. As a consequence it is more important to manage (raw) non-formatted values explicit. It is possible to keep the old (raw) non-formatted behavior of the QVD load by using the date() function in all relevant places, but it should be possible to maintain the implicit formats as long as the original data source is managed in a more explicit way.
Internal Investigation ID:
- QV-21548
- Labels:
-
App Development
Qlik Data Transfer can't start if it needs to go through an internet proxy.
You can find Error: Spaces service not responding in the DataUploadService log.
Environment
- Qlik DataTransfer, all versions
Resolution
You need to verify whether a pro
...Qlik Data Transfer can't start if it needs to go through an internet proxy.
You can find Error: Spaces service not responding in the DataUploadService log.
Environment
- Qlik DataTransfer, all versions
Resolution
You need to verify whether a proxy has a setting to block a connection based on its application.
The proxy often filters a connection based on the application's port and URL, but sometimes, it may detect an application automatically. In order to utilize Qlik DataTransfer, you may need to disable this auto-detected filtering rule.
Related Content
Qlik Data Transfer unable to connect to the tenant
Uploading on-premises data with Qlik DataTransfer
- Labels:
-
Data Connection
Monitoring applications reload (Operation Monitor or Session Monitor) fails all of a sudden with error:
Error: HTTP protocol error 500 (Internal Server Error):
Exception of type 'System.OutOfMemoryException' was thrown.
Looking several lines above yo
...Monitoring applications reload (Operation Monitor or Session Monitor) fails all of a sudden with error:
Error: HTTP protocol error 500 (Internal Server Error):
Exception of type 'System.OutOfMemoryException' was thrown.
Looking several lines above you can identify what was the last Data Connection in use:
If the last connection opened was 'monitor_apps_REST_appobject' then it means that there are too many AppObject to load and the system is going out of memory.
Resolution
To work around this issue, it is possible to implement a filter in the data connection 'monitor_apps_REST_appobject' to reduce the amount of application object loaded.
To do so:
- Open the Qlik Sense Management Console
- Open Data Connections
- Edit the Data Connection exhibiting the issue and view the Connection String. The default string will include https://localhost/qrs/app/obje
ct/full , which retrieves a full list of app objects. - Modify the filter to only obtain a specific AppObject type, such as 'sheet':
https://localhost/qrs/app/object/full?filter=objectType+eq+' 'sheet
Internal Investigation ID(s):
QB-2436
- Labels:
-
App Development
Doing right qlik in objects inside the container works well when opened in Qlik Hub, but when opened through the url used in the iframe (single?appid=), the context menu only appears when clicking in a narrow band to the left of the chart itself.
E
...Doing right qlik in objects inside the container works well when opened in Qlik Hub, but when opened through the url used in the iframe (single?appid=), the context menu only appears when clicking in a narrow band to the left of the chart itself.
Environment
- Qlik Sense Enterprise on Windows June 2020
Resolution
The issue has been fixed in Qlik Sense November 2020 and September 2020 Patch 3.
Information provided on this defect is given as is at the time of documenting. For up to date information, please review the most recent Release Notes, or contact support at support.qlik.com with the ID QB-2013 for reference.
Fix Version:
- Qlik Sense November 2020
- Qlik Sense September 2020 Patch 3
Cause
Product Defect ID: QB-2013
This is a recording of a Support Techspert Thursdays session.
This session addresses:
- What the App Analyzer can do
- How to set it up
- How to improve app performance
- Troubleshooting issues
Chapters:
00:00 – Intro
01:26 - App Analyzer Overview
...This is a recording of a Support Techspert Thursdays session.
This session addresses:
- What the App Analyzer can do
- How to set it up
- How to improve app performance
- Troubleshooting issues
Chapters:
00:00 – Intro
01:26 - App Analyzer Overview
02:39 - When the App Analyzer is Useful
03:43 - SaaS Standard Tier Capabilities
06:23 - How Qlik Sense Stores Data
07:32 - App Analyzer Dashboard demo
08:58 - Example App Optimization
10:54 - Best Practice thresholds
12:02 - Threshold Analysis Sheet Demo
12:32 - App RAM to Quota Sheet Demo
13:19 - Example App
13:47 - App Analysis Sheet Demo
14:39 - Rolling Analysis Sheet Demo
16:28 - Reload Time
17:06 - Setting it up
18:11 - TIP: Relative Path
18:47 - Creating a REST Connection
20:34 - The right space to use
21:16 - Troubleshooting: SET ErrorMode
22:13 - TroubleShooting: API Key
23:29 - App Analyzer on Qlik Community
24:41 - Qlik Diagnostic Toolkit
25:41 - Qlik Sense Admin Playbook
26:13 - Q&A
Environment
- Qlik Sense Enterprise SaaS - Standard Tier
Related Content
App Analyzer on Qlik Community
STT - Optimizing Qlik Sense SaaS Apps with App Analyzer
Q&A:
Q: I noticed sheets supposedly in my app according to the App MetaData Analyser that are not part of my app. Is the presented data reliable?
A: Neither the App Analyzer for Qlik Sense Enterprise SaaS or the App Metadata Analyzer for Qlik Sense Enterprise on Windows track sheets – they only gather data model and reload metadata. That said, there was a bug in the App Metadata Analyzer for Qlik Sense Enterprise on Windows that did associate some fields/tables to the wrong apps that has since been addressed. You can always grab the latest version of the App Metadata Analyzer for Windows here.
Q: Hi, super interesting stuff! is the very same App Analyzer available to non-SaaS customers?
A: The application that the App Analyzer was modeled off of is the App Metadata Analyzer for Qlik Sense Enterprise on Windows that ships with the product. You can find the most recent version of that application here.
Q: The configuration of REST Connector is throwing error "cannot connect"...are there any setup needed on the tenant level?
A: Please refer to the installation guide for the App Analyzer and if you are still having issues, please post on the Qlik Community entry here.
Q: Can we setup Qlik Alerting to inform us as we get closer to threshholds?
A: Absolutely, yes. This is a great way to stay on top of monitoring your applications. In addition, you can also monitor one of the charts from the app in the Hub to have a quick look at where everything stands each time you login to the tenant.
Transcript
Hello everyone and welcome to the first edition of Support Techspert Thursdays for 2021.
My name's Troy Raney and I’ll be your host for today's session. Today's presentation is: Optimizing Qlik Sense SaaS Apps with the App Analyzer.
Our presenter today is one of the architects behind the App Analyzer: Daniel Pilla. Dan please tell us a little bit about yourself and what we're going to be talking about today.
Yeah, absolutely. Thanks Troy. So again, my name is Dan Pilla. I’m a principal analytics platform architect; previously enterprise architect at Qlik. I’ve been here for roughly six years at this point and my expertise lies within the architecture frameworks, integration topics as well as our cloud strategy at Qlik.
The presentation today, what we want to go over is just a high level: What is the App Analyzer; kind of where it came from and why was it created. We'll walk through a high-level demo; kind of paging through each sheet to show some of its capabilities and highlight a couple of examples. Along the way we'll talk about how it's configured. I’ll actually show a short little demo of that. We'll highlight a couple of troubleshooting issues, though hopefully you shouldn't have to deal with many. And then lastly, we'll talk about a couple of things to remember; some resources and of course how and where to get the application itself.
Can you start by explaining for us, yeah, what the App Analyzer is?
Yeah, no, absolutely. So we'll go over a very quick high-level overview, but ultimately the application it's a direct port from the App Metadata Analyzer, per Qlik Sense Enterprise on Windows. This application is actually, or its predecessor is actually shipped with the Windows product. You can find it with the additional applications like the Reloads Monitor, the Sessions Monitor for the Windows platform. And given that the API endpoint was the same in our SaaS platform, it seems like an obvious first choice for a monitoring application to port over. Now the data present in the application is pretty much identical across both platforms, and you're able to get the app base RAM footprint. That's the RAM footprint of the app opening from disk, so without any users or session cache. That's actually a direct quota that we’ll talk about in just another slide. In the SaaS platform, we'll talk about the peak reload RAM. So the maximum amount of RAM the application takes to reload, and then there's a number of other metrics. Like the table and field RAM, the overall row counts of the tables, cardinality, and then the presence of data islands, and synthetic keys, along with circular references that can kind of give you some hints on the integrity of the application itself.
What are some example use cases for it?
When to use it, there’s obviously a myriad of different times that you might want to come in. But at least at a high level: number one, just tracking of app RAM size against tenant quota. We'll talk about the quotas on additional slide but this is going to be a key metric that you will need to monitor in SaaS. We’ll talk about anomaly detection and again it can be used for identifying potentially problematic applications. As well as, of course, optimizing. These tend to go hand-in-hand. Lastly then data modeling standardization and best practices. So kind of: holding all of your developers to a certain bar and making sure that you're preventing any potential problems in the future for your end users.
Dan, does this come pre-installed as a part of the SaaS tenant?
At this point in time, it does not come pre-installed. So we'll talk about the configuration but you will need to grab this application from Qlik community and import it into your tenant. The good news is: it's just an app; and it should only take about 10 minutes to configure.
Nice. So you're going to show us a demo now; and what tier of SaaS are you about to demo from?
Good point. So I want to bring up, just to add a little color in context because not everyone on the call might be aware of the you know what the tiers are and what the standard quotas are and so forth. So we’re going to be demoing from a tenant that just has the standard tier enabled. What that means is: out of the box everyone gets this. There's no additional charge for this whatsoever. It's kind of baked-into the standard license, is that the base RAM quota per application is five GB by default. And again that's excluding all users excluding all caching and so on. It's just, if you were to open the application in RAM; how much does it take? And that is one of the default quotas in the SaaS tenant. There's no horizontal limit so you can open as many applications as you want that are under five GB. You can have as many users on them as you want. No limit from a horizontal scaling perspective.
There is also a quota of peak RAM reload it's 3x what the base RAM uh quota is. So ultimately when you reload the application, 99% of the time you should be under this quota of 15 GB for a maximum reload RAM. However, you know if you’re doing a mountain of joins, or auto generates, or auto numbers; you know there is the potential to hit this, however it is quite unlikely. But the application will highlight this; will track it; so, there's no guesswork. The application will illustrate all of these quotas for you.
And what happens if someone tries to use an app that goes above these quotas? Like a base RAM quota of an app that's above that; will it even upload?
It will. It, well, it depends. I don't want to get too deep into that. But you could have an application that; let's say, two gig on disk, that you could upload. And it might break, you know in a week or two. As you start to reload it, right? You can upload one that's right before.
Yeah.
But there are recent improvements in the upload service. So it now should check the RAM on import; and actually, from a distribution perspective, be smart enough to say that ‘Hey, this application won't open in RAM.’ So I know that actively product management and R&D are working to make that a better and better user experience; to potentially, you know, suggest that you might need an additional tier. And there's more “smarts” going into that in the future.
Okay, cool.
This is just the standard tier. There are additional tiers. So if you did want to upload an application that's 10 gigabyte on disk, 20 gigabyte on disk. I can say that almost every single corporation I’ve worked with has at least one that's larger than, you know five gig in base RAM. We do have additional tiers that can serve up to 50 gig applications in RAM. So please do contact sales, if you are interested in that. There are additional paid offerings.
Can you quickly explain how Qlik stores data?
Yeah absolutely. I did want to pull this up, because I will be directly mentioning symbol tables and data tables. And if you haven't seen this slide, or if you're not really into Qlik data modeling; you might not know what that is. So keep in mind that if I were to pull in a simple table; let's say, just region and sales. That the way that Qlik actually stores this data under the hood is in bit stuffed pointers. So you will actually see the symbol tables and the data tables illuminated inside of the app metadata analyzer. So you can get a concept of how much memory does an individual field take as part of the data model. And then how much memory does an individual table take as part of the data model. So just kind of keep this in the back your mind as I go through the demo; as that this inherently is how we store data. And that that becomes pretty apparent when we actually look at the application itself.
It's great to see it visualized like this.
No more PowerPoint. Let's actually hop into the presentation here. Now I’ve already imported the App Analyzer. Note that there is a version here, because we are continuously releasing new versions. For now let’s just open it up, and we'll do a demo of the front ends before we walk through the back end.
So right now we're looking at the dashboard sheet. On the left hand side, you can see a number of the thresholds. The top two are the most important that you'll want to pay attention to throughout the application. That's the quotas for the standard tier. And what I’m doing is: I’m giving you an alert at the 80 % threshold of that quota. Note that is configurable. You could swap that to 60%, if you wanted to be more conservative in the load script. And it's saying that you've got four applications that have basically exceeded the threshold. That are at least nearing the quota. As well as peak reload RAM that we've actually got one that's exceeded that 80% mark of the quota.
You can use this along with other sheets to track, to see apps that are encroaching up to that quota. So you can make sure that, you know, they're rectified before they will no longer open within the tenant.
I love how it identifies potential issues. What else are we looking at here?
Across the top you can see the number of KPIs. This is just helpful from a pure inventory perspective, quite frankly, to see how many apps you have in your environment; how many tables across each individual app. I can select, you know, any arbitrary application. I can then see all of the tables; the total table RAM footprint; the number of fields; and there are many other additional thresholds that you can set in the load script.
For example, you know, I don't want applications to contain more than 150 fields or I don't want an app to contain more than 100 million records. Just from a sheer best-practices standpoint, all of those are adjustable.
Now I actually want to take this moment to call out an example here. So, I’ve clicked on a single application. Note that it’s pretty much completely capped. It's at our base RAM quota; from a peak reload RAM perspective, it's okay. But you know, at some point in time in the very near future, it's no longer going to open on this tenant. I can then see that I’ve got a line item table that's taking about a little over a gig in memory, and then I’ve got some comment fields it appears as if that take a very large amount of space. So one individual field is over one gigabyte in RAM. I could pretty much drop down to 80% if I just dropped that individual field.
Now in the Windows world this would just be considered, you know, optimization. In the SaaS world, this is going to keep your apps running at no additional charge; so it becomes even more important.
I can then take a look at another application here, that's my optimized version. If I select that app, you can now see that I’ve dropped all of the comment fields. I actually dropped eight comment fields. I dropped down from 5 GB to 1.7 GB, and that was just eight fields. And let's say that you know, you probe your users; you interview them to see ‘are these fields that you're actually using?’ ‘Are these critical to your analysis?’ You know, obviously before you drop them. But you might not have ever known that they had consumed that much memory. This makes it very very easy to do some pretty simple optimization.
That's a dramatic improvement. That's really impressive.
Yeah, and I can say that we have one customer example: they had an 18 GB app on disk. This is obviously in the Windows world. They used this application to drop, I think it was a total of 5 fields, and they optimized a few time stamps. They dropped it down to 10 GB in RAM. So they shaved 8 out of 18 GB off from just changing a few different fields. Especially once you start to hit high data volumes; little things like that can make a really big difference.
Now I want to clarify something. Those red lines that kind of make a dramatic impact; are those system thresholds? Or are those just sort of ‘best practices,’ ‘this is what we recommend’ thresholds?
Yeah. No, that's a great question. So these are arbitrary, you know, system administrator thresholds. They’re rough, kind of default lines in the sands, but you don't have to use them truly as guide points. In SaaS, roughly the 100 million record is actually probably a rough ballpark, quite frankly for the SaaS tenant. These are intended to say you know; as developer, I know what data sources my users are going against. I don’t want someone pulling in half a billion records. I don’t want them loading in 400 fields into an application with a select star. Or I don’t want them to have 100 tables in their application. They're more meant to be guide posts that an administrator can set up and then monitor you know, what developers aren't following their definition of best practices. So those are intended to be customized.
And does the number of users affect the RAM performance?
From this app's perspective, no. That's actually a really good distinguishing point. This is only looking at the data model, without any users. So, it's just pure application. This threshold of 5 GB excludes all user activity. It's simply for the data model.
Okay, can you walk us through the rest of the sheets?
Yeah, absolutely. So, if we go over to the threshold analysis sheet. So, let's assume that you've you know, selected an application. You can then see all of the details for the individual tables, the individual fields. You've got some additional thresholds that are set in here. Again, the number of field records, field cardinality, table number of records, as well as you know number of fields. I believe the setting here is 150. So, just more detail. Same general metrics that you would see on the dashboard sheet, just a different way of looking at it.
From the app RAM to quote up perspective, this is my favorite sheet from like a tenant inventory; to see where my apps stand today, and realistically you know, should I be considering additional capacity in my tenant, right? If I see that I’ve got a pretty heavy %age of apps that are at 60% + of my tenant, it might be time right to look into having additional capacity. Or maybe, should I be looking into something like On-Demand App Generation, or Dynamic Views to start thinning out my data models. Either or could be good routes. But really it's looking to see what %age of all of my applications sit within what %age of base RAM footprint of my quota, as well as peak reload RAM of my quota.
Now note, you might have you know some applications; for example, this one that has a pretty high peak RAM, but relatively low base RAM. This could be from using you know, monolithic QVDs that take a lot of RAM to buffer. It could be that you're using two dozen auto-numbers right in your in your script that takes just a lot of overhead. More than likely I’d say, 90% + of the time, this quote is going to trip before this one will.
If we go over to this sheet. This should look familiar to some users, especially from the Windows world. I’m focusing kind of heavily on ownership here, as well as a little bit on garbage collection. So, I do want to call out this visualization in the top right, where you can see: A) some apps that have never been reloaded on the tenant, and then other ones that haven't just been run in a really long time. So it might even be worthwhile; make a selection here, see if there's trends in ownership. See what spaces they belong to, and see you know, are all of these applications actually necessary? So it does have the capability to do a little bit of garbage collection within the tenant.
I’ll leave this to you on what you want to do with this. You could of course, go in and select ‘I want to see trends by users of you know synthetic keys,’ by data islands, by number of fields; and you could actually start to develop potentially users that might need training.
Now this is probably the most complex sheet, at least from an analysis standpoint; and what it's capable of doing. This has been running for quite a while, so I’m going to filter this to pretty recently. And I have some applications here that I wanted everyone to specifically take a look at. So, I’ve set up a few applications here that are reloading every night. And they're growing on at least what I intended to be a 1%, 2%, 5%, 50% growth rate; so you could see a few trends here. On the left-hand side, all of these buttons will change the actual metric that it's running. So, if I select this app that's growing at a rate of 50%, I can expand this and I can see that you know; daily I’m increasing at a rate of 50%. You could then anticipate potentially when this number is going to hit 5 GB, which would be within this week, more than likely. If I flip that metric to go ahead and look at peak RAM, you can note I’m actually really close. And because of this, I’m using auto-number; I’m using auto-generate within that script. You will actually hit the peak RAM threshold before you would the base RAM. But this becomes very simple to you know, come in and you could tie alerts to this. Because I don’t want to have downtime of this application.
Yeah, this is great! You can really see trends and anticipate problems before they happen.
Exactly! And if you go ahead and click on total rows too; now I can see where hey, if I stayed under that 100 million benchmark that my you know, sysadmin had set, likely wouldn't have to worry about either of those base RAM thresholds. But it can still be that nice guidepost that you can pretty confidently say that you'll be able to stay under a certain threshold. So you'll have to kind of play with that a little bit, and use this application to see how applications profile with your own data sets.
Lastly you can take a look at reload time as well; which is handy. This can be nice to see hey, is it potentially on the sheer data volumes from Qlik's perspective? Or is it potentially my database is taking longer? Or I’m using a rest API and that's taking longer? It'd be interesting to actually be able to track those trends from a reload time perspective as well. I hope that at least sheds a little bit of light on what this application does.
Yeah, it's an amazing amount of information on how the tenant is performing overall; analyzing specific apps and helping admins find ways to optimize and improve. Now, since it's not pre-installed, what's necessary to set it up?
Yeah. Let's go ahead and take a look at the data load editor. I promise it's not too daunting in this application. So this is you know, exactly what you'll see when you pull in the application from Qlik community, and we'll show that in just a moment. You're just going to see 4 variables. And I’ve tried to outline you know, there's a full walk-through guide, so you don't have to use the comments in the load script. But I did comment out everything, so you should actually be able to just follow it from here if you had to. Note at the top, it does require Tenant Admin. And you will have to have the Developer role, because you will need to use the REST Connector, which requires an API key. To get an API key, you have to be a developer. You have to be a Tenant Admin, because obviously you have to be able to see all of the applications, and we of course want you to be able to get everything in the tenant.
That makes sense.
The first is just as simple as possible. I actually forget what my URL is. I’m going to: ‘ea-hybrid-qcs-internal.’ Our region is ‘US.’ That can be one of a few different regions. Now this set REST Connection; I want you to notice one thing. First notice that there's just a ‘:’ so I’m actually sitting in the Monitoring Apps Dev space. So, if I wanted to fully qualify that, it would look something like this. The ‘:’ is for a relative path; so if I was moving this across spaces, and I had a data connection named ‘REST for App Analyzer’ across multiple spaces, I could move the app freely without having to worry about the actual qualified space name. So, that's more of a tip and a trick, quite frankly.
That's a great tip.
I’m going to name this ‘Delete Me,’ because I don’t want to muddy-up my tenant. But we're going to create one really quickly. So, we're going to create a new REST Connection. I can search for REST. Now the tenant URL; again, this is all in the guide, ‘qcs-internal.us.qlikcloud.com’ So, that's my tenant. And we can put in any arbitrary API endpoint. I’m going to use ‘/API/v1/items.’
Now below, you only have to fill in one query header; and that's ultimately for your API key. So, the query header is ‘authorization.’ And then you'll put in the word ‘bearer’ space and your token. I’m going to simply paste that from my clipboard. But if I go back over, I can see ‘bearer’ space and the token. Name this ‘Delete Me,’ because that's what I said it was going to be called. I’ll test my connection. Connection has succeeded. So, now you can see that connection, because I’m in the Monitoring Apps Dev space. This relative path will pick it right up. Below that, this application incrementally loads. So, you don't have to pull all of your applications every single time. It'll do it since the they've been last reloaded; which is the only time the metadata actually changes for the applications. I’m just going to put them right in the Data Files for this space. So, you can just do ‘:data files.’ Alternatively, you can store them in S3, Azure, Blob, Google Drive; wherever you store your data. The last one here, we'll talk about in in just a moment. But it's used for troubleshooting, so you can ignore that for now.
But let's go ahead and hit ‘Load.’
Does this take a long time to reload?
It does not. So, even on some fairly large tenants; we're talking about minutes. This already has the incremental QVDs that you can see sitting in Data Files, so it's only going to pick up you know, a few applications since it's been last reloaded. But I believe on this tenant, which has roughly 100 apps; it's roughly 30 seconds or so. But we're talking minutes.
In which space would you recommend this app be in? Should this be in a shared space?
Yeah. I always recommend that if an application is going to be published out that it begin in a shared space. It's always easier to start in a in a shared space. And then I typically, as my convention states, I’ll name something you know, ‘REST for App Analyzer,’ and I’ll have my Dev version, and then I’ll have a Prod version of that same connector that lives in my managed space. It's different from a Windows perspective. From you know, having a Dev tier and a Prod tier and a QA tier and a Test tier. In the world of SaaS, you can do that with spaces. So, I usually just qualify them in whatever “tier” they are, and I always use Shared spaces for that.
So, what would happen if an app that the App Analyzer is reading from suddenly gets deleted? Would that cause any problems?
Yeah, no. It's a great tee-up for this Error Mode. So, from a troubleshooting perspective, 100%. If you're in a very large active tenant, where even if you're doing you know, programmatic testing; that's where it's going to come up, especially within our own R&D tenant it comes up quite commonly there. You might see a ‘404’ or two. And the reason being is: once the application reloads, it does a GET of all applications across the tenant. And then it iterates over every metadata endpoint for every app. Now if one of those apps vanishes in the middle of the reload process, it's going to say ‘Hey! I can't find this application.” Which is a 404. So, once you've configured the app, it's generally considered just a good practice to set the Error Mode to 0 for the application, if you know it's functional of course, to kind of steamroll over those errors as they come up.
Just note that if this is set to Error Mode; and you're steam rolling over those errors. And at some point in time you know, your API key expires. It's going to steamroll over those errors too, and you're no longer going to be able to update your application appropriately. So, in conjunction with that, because this is the other place that the app could fail; when you create an API key, and you set your expiration date for that API key, put a reminder in Outlook or put an alert somewhere that will remind you let's say a week prior to update that API key. So, you don't have to worry about you know, that also causing an error you know 365 days from now right? Or 90 days from now, however long that you set that expiration for.
That's a great tip: to put it in the calendar; because otherwise, it just expires and causes problems.
Yep. Otherwise, it's going to throw you for a loop one year from today or however long you set it. Guaranteed. Because you won't remember.
Are there any resources that admins should be aware of?
I have a resources-slide here. I’ll pull up a couple of those pages that I talked about. I just want to hammer this point again. That it is available on community. I’ll go and visit that site in just a in just a moment. But again, it doesn't ship with the tenants; so I suggest that you subscribe to you know, to this post and follow it.
So, here's the page for the App Analyzer. You can see that it's actually been up since August of 2020. I believe there have been one or two version changes since. But you can find a demo very similar to the one that just gave on YouTube. You can also find a pretty exhaustive install guide for the app here as well. So, it's going to show you exactly how to set up and generate an API key; how to build out that REST Connection. A step-by-step guide to make sure that you'll be good-to-go for the application. So, you don't just have to go off the script notes. And then you'll see the actual you know. dot release version of the app. I just want to call one other thing out briefly. That the App Analyzer isn't officially Supported by Qlik, but we do have both Product Management, R&D, along with Pre-Sales (including myself) that are following that community entry. If you have issues there, please post them up; even just general feedback. We do look at it. We do address it. You know, we've got many customers that are already using this, and we know that it's going to be critical, so we will Support it you know, to the best of our abilities. But it isn't officially supported, and I am mandated to say that.
Can we take a look at those best practices sites you mentioned?
Yeah! So, we've got the Diagnostic Toolkit, which has been up for a couple of years now. And quite frankly, some of this is borrowed from the QlikView days, because we're working off the same engine here. What this does is: it gives you - don't have to fill out the top bit - it just exports a PDF if you wanted to. Again, like I said, some of our customers actually do require the output of this in their publish process.
It's these bullets below that can be really helpful as you're validating or you're building out a data model, and each one of these typically has links to relevant community articles. For example, this one actually links out to Rob Wunderlich’s utility. There's a whole bunch of articles that link out, you know, Henric Cronström’s old post. HICs if you're familiar, old posts. There's a lot of really good collated content here in one centralized place. And a bit of interface performance too. But the relevant bullets for the data model perspective are all in this top section here.
So, from the Admin Playbook perspective this is a recommended playbook and best practices guide for the Windows platform. There is a lot of overlap from an application perspective. But the reason I’m pulling this up is: we're currently investigating and exploring in 2021 the possibility of building something quite similar for the SaaS platform. You know, this took roughly a year of work to build out for the Windows platform. So, this is more of a ‘I’d keep your eyes peeled for something similar to this in the future from a SaaS perspective.’
Okay now it's time for some Q&A. Please place your questions in the Q&A panel on the left side of your on24 console. Dan, which question would you like to address first?
Yeah, let's go ahead and start with the first one that I see here. So, does the App Analyzer need to be purchased separately?
While it is separate, there is no fee. This is a free application that Qlik has provided to you. Again, while we don't have a strict Support policy for it per se, we will do our best to Support it over time, at least unofficially from a Pre-Sales perspective and a PM perspective. But it is something that we plan to make readily available for the foreseeable feature at no cost that you can import into your tenant and give it a run.
The next one here: Is there a version of this app for QlikView?
That's a really good question. So, one thing that I didn't call out during the presentation, and if you weren't already aware is: Qlik Sense Enterprise SaaS can host QlikView applications. And the App Analyzer will actually pick up those applications. So, if you're using let's say QlikView Publisher to distribute out QVWs, the App Analyzer will check whether those are you know, under 5 GB in RAM or not, and actually give you metrics about the model itself, which is unique to the SaaS platform, considering that it's you're able to analyze both types of applications. So, good question.
I’ve got one here that says you know: I’ve got some large applications in my Enterprise on Windows environments. What do I do with apps that are let's say 10 GB on disk?
So, yes. I did bring up that this presentation predominantly was focusing on the standard tier. We do have two additional tiers at this point in time: Expanded Capacity and Dedicated Capacity. Both of those allow for applications that are up to 50 GB in RAM. There is of course you know, an up charge for this, but do contact sales if you are interested.
We've got one that is: are there tips for optimizing peak reload RAM?
Yeah. I did mention at least one of them which was: you know, try not to use monolithic QVDs. Just the way that Qlik loads QVDs, they can they can take a lot of peak RAM to buffer in. So, it's why generally, we say you know, partition your QVDs. Be that by month; for example, potentially by dimension, because they will actually be easier to consume or less RAM intensive to consume. Also, just trying to avoid you know, massive nested Ifs, egregious usage of you know, auto-number or autogenerate, and things that are kind of notorious for taking a lot of peak RAM that you might be fine with eating in the Windows world. But from a SaaS perspective you know, it might behoove you to seek out alternative strategies there.
We've got one that's: will running the App Analyzer itself impact the performance of other apps on my tenant?
Good question. For this one, I mean generally speaking, no. Because it's reloading so rapidly. And we don't suggest that it reload you know, more than once a day, quite frankly. You know, it's, this isn't an app that you're gonna have reloading every 5 minutes. You're probably going to be checking it on at most a daily basis. So, I usually suggest running it you know, in your batch window overnight. Additionally, you know, because of the SaaS platform by nature; it's a microservice you know cloud-native offering. So, you're not going to hit the same bottlenecks that you might hit in the Windows world; so, even if you were running it you know every 5-10 minutes, I still don't think it would impact the performance of your tenant.
We've got one that is: what are the minimum privileges needed to do this?
So yeah. We did cover that that's going to be Tenant Admin and Developer (role). Wou will need Tenant Admin to of course access all of the assets across your tenant, as well as the Developer role so you can get an API key to actually interact with the Qlik APIs.
We've got another one that: is this the same as the app for Windows, the Sense System Performance Analyzer?
No. However, it does have a direct correlation in parallel with the App Metadata Analyzer for Windows, which is pretty much the same exact data model. That is another application that does again ship with the Windows product. You've got to manually import it into your Qlik Sense Enterprise and Windows site, but it is pretty much identical to this application. Just note that this one is obviously, you know, all of the piping has been redone to work with the Enterprise SaaS APIs. Instead ‘how to get the CPU hit’ and ‘RAM expansion on open,’ in SaaS you won't get the CUP, but you will get the RAM. For the App Analyzer, that's the key metric that that application exposes. And again, that's the key quota that is for the standard tier. That 5 GB is that app open event that's actually a good way of, it's actually the exact event that we throttle with REST Connections where data limits are in place.
… pagination…gotcha. So, basically, the question is: in the SaaS APIs, there are, there's limits on in the amount of data that's returned so you do have to paginate.
And yes, if you actually take a look at the App Analyzers load script; on all of my REST calls to get the apps, to get the spaces, to get the users, all of those are set up to paginate by default. So, if there are, let's say, more than 100 apps in your tenant, that will be a minimum of two API calls to fetch all of those; and yes, you can you can use those example scripts to use in your own applications, if you see fit.
Is there an application like a License Monitor for Qlik Sense client managed?
Great question. And we get asked this a lot. This App Analyzer is the first monitoring application for SaaS, because it is quite frankly, the simplest to port, because of the fact that it's built off of the same JSON structure, the same application metadata that's available on both platforms. It was pretty close to plug and play in our SaaS tenant. That said, we completely understand that you know, user monitoring, adoption, I want to see what applications users are using, what sheets are they navigating to, I want to be able to do things like track expensive objects, absolutely. That is coming. In fact, the latter is coming in the February release, to be able to actually look at performance of individual objects in the application itself from a user perspective.
We are absolutely, product management and R&D are researching the best way to expose those metrics, but we do recognize that you know, that is of course not available in this application. But just to be frank, that's not the intent of this application.
Okay Dan, we have time for one last question.
Okay gotcha. Let's take, this is a good one: so moving from the Windows platform to SaaS, how do we know if it will fit in standard tier?
Really good question. So, we have developed a tool internally. We call them the SaaS Readiness Applications that pre-sales services, a number of different organizations across Qlik can help run on your site. They are just simply; it's a QVF that we can hook up to your site that will do a profile of all of the applications for you, and it will actually, you know, what respective tiers each application would fit in. So please do reach out to your account rep, and we can work with you to run that to make sure that you'll be you'll be as prepared as possible to migrate over to SaaS.
Note on the Readiness app mentioned:
The SaaS Readiness apps are available on the Partner Portal for download. That said, this was built as an internal PreSales tool that was then exposed to Partners. It requires interpretation. There have not been any major enhancements made to this app in a while.
A more complete toolset is now available publicly that incorporates much of the SaaS Readiness app (it was built on top of it) and that can be found in the Migration Center.
Great! Thank you very much, Dan. I think this can be really useful for people.
Absolutely! Thank you, Troy for having me.
Thank you everyone. We hope you enjoyed this session. Thank you especially to Dan for presenting. We appreciate getting experts like Dan to share with us. Here's our legal disclaimer, and thank you once again. Have a great rest of your day.
- Labels:
-
Administration
-
API
-
App Development
-
How To
By accessing the tenant of the Qlik Sense SaaS editions, you may get the following error after trying to open an app.
"Unable to connect to the Qlik Sense engine. Possible causes: too many connections, the service is offline, or networking issues."
By accessing the tenant of the Qlik Sense SaaS editions, you may get the following error after trying to open an app.
"Unable to connect to the Qlik Sense engine. Possible causes: too many connections, the service is offline, or networking issues."
Environment
- Qlik Sense Enterprise SaaS
- Qlik Sense Business
Resolution
In the most common scenario, the error is related to an idle session timeout. If the error occurs after 20 min idle time, the only required action is to click "Refresh" in order to reconnect the client to Qlik Sense.
For this scenario, a more user-friendly message is planned for future Qlik Cloud releases.
It is recommended to try and establish if a network device between the browser and the Internet is causing the connection error if it occurs immediately or sooner than idle session timeout.
- Contact your local IT helpdesk for troubleshooting and advice.
- Confirm that network components support Websocket connections to your tenant <tenantname>.<region>.qlikcloud.com
- Check if the device utilizes an Internet proxy for Internet access
- Disable VPN if feasible
-
Connect to Qlik Cloud tenant from a different device or network
- Connect with a non-corporate device, to quickly identify if corporate policy is causing the issue
- Access Qlik Download page as a test, if the tenant is not allowed from another device
-
Check browser dev tools for more specific error messages
- Search Qlik Support Knowledge for related articles and known issues
- Open Qlik Support ticket if the error can not be resolved and local IT can not find a root cause
Cause
Qlik Sense uses WebSockets that enable communication between the web browser and Qlik Sense server. A Qlik Sense application gets generated with visualization objects and data via this communication.
The same technology is applied for web integration where Qlik Sense objects are embedded in other pages.
The root cause of this error is that the browser's WebSocket connection has been terminated for various reasons;
- The most common scenario is that the session has been idle for 20 minutes, and session timeout has been reached in Qlik Sense engine. In such a case, the session will be restored by pressing "Refresh" in the error dialog.
- The WebSocket connection may be terminated prematurely or blocked by a network device.
- If the error occurs immediately when an app is accessed, it may indicate that WebSocket traffic is not allowed to pass through from the browser to the Internet.
It may also indicate that multiple concurrent WebSocket connections are not allowed in all network devices between the browser and the Internet. - If the error occurs a few seconds after the app has been successfully opened, it may indicate that the WebSocket connection is not allowed to be persistent in the network devices between the browser and the Internet.
Qlik Sense requires persistent WebSocket connections, and also sends TCP keep-alive packages every ~30 secs to keep the connection open even when a user is not actively interacting with a Qlik Sense app. This keep-alive mechanism will not work if a network device has a lower connection timeout than 30 seconds. - WebSocket connections use a different (WSS) protocol and port than normal (HTTPS) web traffic. Network devices between the browser and the Internet must support the use of the WebSocket protocol.
- If the error occurs immediately when an app is accessed, it may indicate that WebSocket traffic is not allowed to pass through from the browser to the Internet.
Related Content
- Labels:
-
Configuration
This is a quick guide on how to set up SAML authentication in Qlik Sense for Windows using Keycloak as the Identity Provider.
Environment:
Qlik Sense Enterprise on Windows February 2020 and later
- In Keycloak, navigate to General and Realm Sett
This is a quick guide on how to set up SAML authentication in Qlik Sense for Windows using Keycloak as the Identity Provider.
Environment:
Qlik Sense Enterprise on Windows February 2020 and later
- In Keycloak, navigate to General and Realm Settings and download the IdP metadata
- In Qlik Sense Enterprise on Windows, set up a new virtual proxy:
SAML Host URI: The Qlik Sense server DNS name accessed by end users
SAML Entity ID: Any string, but should match the Client ID in the Keycloak configuration.
SAML attribute for user ID: this should be the attribute containing the value that will be used as the user ID in Qlik Sense. Those attributes are set in “Mappers” in the Keycloak configuration. - In Keycloak, set up a test user:
- Click Save and go to Credentials to set the password
- In Keycloak, add a new Client.
Note: Client ID needs to be the Entity ID set in Qlik Sense in step 2. - In the Client settings locate Signature and encryption and make sure that Sign Assertions is enabled. Sign Documents should be disabled (if it remains enabled, the implementation will still function, but Qlik Sense does not use Sign Documents and will ignore it).
- Switch to the Keys tab and disable Client Signature Required. In order to enable this feature, some extra steps are needed, see at the end of this article (Optional Steps - Client Signature) if you wish to enable the feature.
- Switch to the Advanced tab and set the Assertion Consumer Service POST Binding URL.
It should be https://{SAML Host URI}/{virtual proxy prefix}/samlauthn/
Make sure not to forget the ending slash after samlauthn, otherwise the authentication will fail.
The last step is to add the X500 email User Property as we are using the attribute "email" as the User ID in the Qlik Sense virtual proxy settings.
Under "Client Scopes", click on the name of client scope that has the description "Dedicated scope and mappers for this client", in the below screenshot the name is QSKeycloak-dedicted. - Choose Add predefined mapper and choose X500 email then click Add
- Everything is now set up and operational.
Optional steps
Client Signature
In order to enable Client Signature Required, which means that Keycloak will check the signature on the SAMLAuthnRequest sent from Qlik Sense, the Qlik Sense certificate needs to be added in the Keycloak client configuration.
The certificate can be copied directly from the SP Metadata downloaded from the Qlik Sense Management Console.
- Open the Management Console and navigate to Virtual Proxies
- Open your Virtual proxy set up for Keycloak
- Click Download SP metadata
- It will look like this:
- Copy it to a new file, and add:
-----BEGIN CERTIFICATE-----
[content]
-----END CERTIFICATE-----
then save it as a .pem file. - Import the certificate as PEM in Keycloak by clicking Client signature required under Keys
SAML Assertion Encryption
The SAML assertion can be encrypted by checking the option in Keycloak in Keys in the same way as for Client Signature required.The certificate can be extracted in the same way that it is done when enabling Client signature required.
- Labels:
-
Integration and Embedding