Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Search our knowledge base, curated by global Support, for answers ranging from account questions to troubleshooting error messages.
The current coverage of the built in location database in Qlik GeoAnalytics and Qlik Sense native mapchart. See attachments for an overview description and table with content per country.
Qlik Sense engine "Document Load: Long pre-generation time" warning may occur in Engine logs while an app is opening slower than expected.
10934 20210527T075324.538+0200 WARN VMQLIK System.Engine.Engine 185 b61ba19a-61c3-4248-8a4d-74asssc08afa ABC\QLIKSENSEPR Document Load: Long pre-generation time (>100% of open). Review expression dimension usage, and consider moving definitions to the load script. Pre-gen can be disabled at the cost of sheet calculation performance. 35d66cc9-d537-464c-bddc-42f3a9320dfe INTRA-TPG vazeille 20210527T075324.528+0200 6068 2784 e467645c-4f82-4d6e-a7e9-449609139743 6ccaa3ec-b5c2-4e7e-917f-a66f6c44da19 20210526T152424.000+0200 b61ba19a-61c3-4248-8a4d-74aacdc08afa
The root cause for this error is that the app has a noticeable amount of dimensions defined as expressions, instead of field references to the data model. By default, these expression-based dimensions will be evaluated during the initial app opening and added as Field-on-the-fly to the data model.
See Qlik Design Blog post below for more details about the Field-on-the-fly concept;
https://community.qlik.com/t5/
The pre-generation of Field-on-the-fly is most often not a noticeable part of the initial app opening, but some characteristics of the app may contribute to that the pre-generation takes a longer time;
The recommended approach to resolve the "Document Load: Long pre-generation time" warning in the engine log, is to review the related app and transform expression-based dimensions from the visualizations and master items into actual fields in the data model.
Calculated dimensions with logical comparisons can often be resolved into fields by moving the logic.
It is possible to disable the Pre-generation of Fields-on-the-Fly, by adding DisableFotfPreGen=1 in Engine settings.ini:
https://community.qlik.com/t5/
Notice, the setting applies to all apps opened on the Engine and may give negative run-time performance when users access sheets.
It is not possible to set up a Microsoft Office 365 email provider with OAuth 2.0 authentication.
The HAR file shows this message in Network:
{connectionFailed: true, message: "Error during email request", success: false}
connectionFailed: true
message: "Error during email request"
success: false
Configure the Mail.Send permission as it is described in this article.
This problem occurs when the Mail.Send permission has not been configured in the app registration.
More information about the Mail.Send permission can be found here.
At Qlik Connect in Orlando 2024 I hosted a session called "708769: What's New in Visualizations". Here's the slides and the app I used during the presentation.
Thanks,
Patric
At Qlik Connect 2024 I hosted a session called "Top 10 Visualization tips". Here's the app I used with all tips including test data.
Tip titles, more details in app:
I want to emphasize that many of the tips were discovered by others than me, I tried to credit the original author at all places when possible.
If you liked it, here's more in the same style:
Thanks,
Patric
When you download an object with table formatting, the downloaded file cannot be opened in Excel, and you will see this kind of error:
Excel cannot open the file XXX.xlsx because the file format or file extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file.
Upgrade the Qlik Sense version to May 2023 or higher.
For more info, see Qlik Sense on Windows May 2023 Release Note
Qlik Sense Enterprise on Windows May 2023 and higher
Product Defect ID: QB-17850
Qlik Sense Enterprise on Windows Feb 2023 and earlier
When embedding a sheet in Single Configurator, the user notices a blank area on the top
This is working as designed and can't be changed. It is a limitation that the sheet tile cannot be exported. See Downloading a visualization.
Change the value in css file to reduce the padding size:
At QlikWorld 2023 I hosted a session called "Top 10 Visualization tips". Here's the app I used with all tips including test data.
Tip titles, more details in app:
I want to emphasize that many of the tips were discovered by others than me, I tried to credit the original author at all places when possible.
If you liked it, here's more in the same style:
Thanks,
Patric
Note: These instructions apply to Qlik Cloud. Qlik Sense Enterprise on Windows functions similarly. See How To Edit Published Qlik Sense Apps on Qlik Sense Enterprise on Windows.
Qlik Cloud offers two different spaces to work in. Shared Spaces and Managed Spaces. Apps previously published to a Managed Space e cannot be edited in place, and they will need to be replaced by an app modified on a personal or shared space.
This article covers publishing to both. For additional information on the available space types, see Working in spaces.
Apps are not published to Shared Spaces. They are moved to or uploaded to them. Apps in shared spaces can therefore be edited freely by anyone that has the correct permissions, like any other unpublished app. Please, check Developing and sharing apps with shared spaces on the help site.
Apps cannot be edited directly in managed spaces. The developer will have to modify the original app which is present in their own personal space, or in a shared space. The app is always left in its original place when the app gets published: the publishing process will make a copy of the app, and keep the original where it was.
If the original app was deleted at some stage, a published app can be unpublished using the REST API. The developer will then be able to edit the unpublished app.
If the system cannot identify a connection (for instance, if the modified app was actually redeveloped from scratch) you will need to manually the space and the exact name of the published app and prompt to replace the app.
Tabular Reporting events in the management console not showing for all the users in the tabular reporting recipient list
When section access is used in a Qlik App, ensure to add all required recipients/users to the section access load script
For example, users in the Recipient import file should ideally match the users entered to the Section Access load script of the app.
This generally permits users to view management console details such as 'Events' assuming those user also have the necessary 'view' permissions in the tenant in which the app exists
If some of the recipients in the tabular reporting recipient list do not have access to the Space/App - they won't be considered in the task execution because they fail the governance.
ie: Recipients/users that are not added to the load script will not have access to the app nor associated management console events.
This is expected behavior.
NPrinting report is hanging on preview or in a publish task preventing the report from generating as expected. In many cases with 'Carded' Qlik Sense themes, we are seeing this problem.
This is also seen when the extended sheet feature is used
"error=task SENSE_JS_PAINT_COVER_POINTS_TIMEOUT"
There is currently a fix coming to resolve 'carded' custom themes however this fix is still under investigation.
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 with the QB-24997 for reference.
Possible workarounds for this are:
NOTE: Extended or Custom sheet sizes are not fully supported. See Qlik Help page below for details
Qlik Sense custom and extended sheets
Many of the GeoAnalytics can be executed with a split input of the indata table. This article explains which and how to modify the code that the connector produces. Operations that cannot be Splittable are mostly the aggregating and hence not Splittable. When loadable tables are used for input, inline tables are created in loops and can be used for a quick way to split. Of course it's possible to write custom code to do the splitting instead.
Making calls with large indata tables often causes time outs on the server side, splitting is a way around that.
Splittable ops | Non-Splittable ops | Special ops, splittable |
---|---|---|
|
|
|
Bining and SpatialIndex differs from other operations, they are not placing any call to the server if the indata are internal geometries, ie lat ,ong points. The operations als produce the same type of results so the resulting tables can be concatenated.
The code as the connector produces it:
/* Generated by Idevio GeoAnalytics for operation Within ---------------------- */
Let [EnclosedInlineTable] = 'POSTCODE' & Chr(9) & 'Postal.Latitude' & Chr(9) & 'Postal.Longitude';
Let numRows = NoOfRows('PostalData');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
Let chunkText = '';
Let chunk = n*chunkSize;
For i = 0 To chunkSize-1
Let row = '';
Let rowNr = chunk+i;
Exit for when rowNr >= numRows;
For Each f In 'POSTCODE', 'Postal.Latitude', 'Postal.Longitude'
row = row & Chr(9) & Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'PostalData'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
Next
chunkText = chunkText & Chr(10) & Mid('$(row)', 2);
Next
[EnclosedInlineTable] = [EnclosedInlineTable] & chunkText;
Next
chunkText=''
Let [EnclosingInlineTable] = 'ClubCode' & Chr(9) & 'Car5mins_TravelArea';
Let numRows = NoOfRows('TravelAreas5');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
Let chunkText = '';
Let chunk = n*chunkSize;
For i = 0 To chunkSize-1
Let row = '';
Let rowNr = chunk+i;
Exit for when rowNr >= numRows;
For Each f In 'ClubCode', 'Car5mins_TravelArea'
row = row & Chr(9) & Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'TravelAreas5'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
Next
chunkText = chunkText & Chr(10) & Mid('$(row)', 2);
Next
[EnclosingInlineTable] = [EnclosingInlineTable] & chunkText;
Next
chunkText=''
[WithinAssociations]:
SQL SELECT [POSTCODE], [ClubCode] FROM Within(enclosed='Enclosed', enclosing='Enclosing')
DATASOURCE Enclosed INLINE tableName='PostalData', tableFields='POSTCODE,Postal.Latitude,Postal.Longitude', geometryType='POINTLATLON', loadDistinct='NO', suffix='', crs='Auto' {$(EnclosedInlineTable)}
DATASOURCE Enclosing INLINE tableName='TravelAreas5', tableFields='ClubCode,Car5mins_TravelArea', geometryType='POLYGON', loadDistinct='NO', suffix='', crs='Auto' {$(EnclosingInlineTable)}
SELECT [POSTCODE], [Enclosed_Geometry] FROM Enclosed
SELECT [ClubCode], [Car5mins_TravelArea] FROM Enclosing;
[EnclosedInlineTable] = '';
[EnclosingInlineTable] = '';
/* End Idevio GeoAnalytics operation Within ----------------------------------- */
The header and the call is moved inside of the loop. chunkSize decides how big each split is.
Note that the first inline table now comes after the first one, this to get the call inside of the iteration.
/* Generated by Idevio GeoAnalytics for operation Within ---------------------- */
Let [EnclosingInlineTable] = 'ClubCode' & Chr(9) & 'Car5mins_TravelArea';
Let numRows = NoOfRows('TravelAreas5');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
Let chunkText = '';
Let chunk = n*chunkSize;
For i = 0 To chunkSize-1
Let row = '';
Let rowNr = chunk+i;
Exit for when rowNr >= numRows;
For Each f In 'ClubCode', 'Car5mins_TravelArea'
row = row & Chr(9) & Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'TravelAreas5'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
Next
chunkText = chunkText & Chr(10) & Mid('$(row)', 2);
Next
[EnclosingInlineTable] = [EnclosingInlineTable] & chunkText;
Next
chunkText=''
Let numRows = NoOfRows('PostalData');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
Let [EnclosedInlineTable] = 'POSTCODE' & Chr(9) & 'Postal.Latitude' & Chr(9) & 'Postal.Longitude';
Let chunkText = '';
Let chunk = n*chunkSize;
For i = 0 To chunkSize-1
Let row = '';
Let rowNr = chunk+i;
Exit for when rowNr >= numRows;
For Each f In 'POSTCODE', 'Postal.Latitude', 'Postal.Longitude'
row = row & Chr(9) & Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'PostalData'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
Next
chunkText = chunkText & Chr(10) & Mid('$(row)', 2);
Next
[EnclosedInlineTable] = [EnclosedInlineTable] & chunkText;
[WithinAssociations]:
SQL SELECT [POSTCODE], [ClubCode] FROM Within(enclosed='Enclosed', enclosing='Enclosing')
DATASOURCE Enclosed INLINE tableName='PostalData', tableFields='POSTCODE,Postal.Latitude,Postal.Longitude', geometryType='POINTLATLON', loadDistinct='NO', suffix='', crs='Auto' {$(EnclosedInlineTable)}
DATASOURCE Enclosing INLINE tableName='TravelAreas5', tableFields='ClubCode,Car5mins_TravelArea', geometryType='POLYGON', loadDistinct='NO', suffix='', crs='Auto' {$(EnclosingInlineTable)}
SELECT [POSTCODE], [Enclosed_Geometry] FROM Enclosed
SELECT [ClubCode], [Car5mins_TravelArea] FROM Enclosing;
[EnclosedInlineTable] = '';
[EnclosingInlineTable] = '';
Next
chunkText=''
/* End Idevio GeoAnalytics operation Within ----------------------------------- */
The code as the connector produces it:
/* Generated by GeoAnalytics for operation AddressPointLookup ---------------------- */
Let [DatasetInlineTable] = 'id' & Chr(9) & 'STREET_NAME' & Chr(9) & 'STREET_NUMBER';
Let numRows = NoOfRows('data');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
Let chunkText = '';
Let chunk = n*chunkSize;
For i = 0 To chunkSize-1
Let row = '';
Let rowNr = chunk+i;
Exit for when rowNr >= numRows;
For Each f In 'id', 'STREET_NAME', 'STREET_NUMBER'
row = row & Chr(9) & Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'data'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
Next
chunkText = chunkText & Chr(10) & Mid('$(row)', 2);
Next
[DatasetInlineTable] = [DatasetInlineTable] & chunkText;
Next
chunkText=''
[AddressPointLookupResult]:
SQL SELECT [id], [Dataset_Address], [Dataset_Geometry], [CountryIso2], [Dataset_Adm1Code], [Dataset_City], [Dataset_PostalCode], [Dataset_Street], [Dataset_HouseNumber], [Dataset_Match]
FROM AddressPointLookup(searchTextField='', country='"Canada"', stateField='', cityField='"Toronto"', postalCodeField='', streetField='STREET_NAME', houseNumberField='STREET_NUMBER', matchThreshold='0.5', service='default', dataset='Dataset')
DATASOURCE Dataset INLINE tableName='data', tableFields='id,STREET_NAME,STREET_NUMBER', geometryType='NONE', loadDistinct='NO', suffix='', crs='Auto' {$(DatasetInlineTable)}
;
[DatasetInlineTable] = '';
/* End GeoAnalytics operation AddressPointLookup ----------------------------------- */
The header and the call is moved inside of the loop. chunkSize decides how big each split is.
/* Generated by GeoAnalytics for operation AddressPointLookup ---------------------- */
Let numRows = NoOfRows('data');
Let chunkSize = 1000;
Let chunks = numRows/chunkSize;
For n = 0 to chunks
Let [DatasetInlineTable] = 'id' & Chr(9) & 'STREET_NAME' & Chr(9) & 'STREET_NUMBER';
Let chunkText = '';
Let chunk = n*chunkSize;
For i = 0 To chunkSize-1
Let row = '';
Let rowNr = chunk+i;
Exit for when rowNr >= numRows;
For Each f In 'id', 'STREET_NAME', 'STREET_NUMBER'
row = row & Chr(9) & Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'data'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');
Next
chunkText = chunkText & Chr(10) & Mid('$(row)', 2);
Next
[DatasetInlineTable] = [DatasetInlineTable] & chunkText;
[AddressPointLookupResult]:
SQL SELECT [id], [Dataset_Address], [Dataset_Geometry], [CountryIso2], [Dataset_Adm1Code], [Dataset_City], [Dataset_PostalCode], [Dataset_Street], [Dataset_HouseNumber], [Dataset_Match]
FROM AddressPointLookup(searchTextField='', country='"Canada"', stateField='', cityField='"Toronto"', postalCodeField='', streetField='STREET_NAME', houseNumberField='STREET_NUMBER', matchThreshold='0.5', service='default', dataset='Dataset')
DATASOURCE Dataset INLINE tableName='data', tableFields='id,STREET_NAME,STREET_NUMBER', geometryType='NONE', loadDistinct='NO', suffix='', crs='Auto' {$(DatasetInlineTable)}
;
[DatasetInlineTable] = '';
Next
chunkText=''
/* End GeoAnalytics operation AddressPointLookup ----------------------------------- */
Opening an application to visualize charts through the hub, the visualization may fail and the error "Out of calculation memory" will be printed.
The issue is often related to having an app that is too large or requires a re-design or general optimization. A poorly designed application can lead to memory leaks.
Review the application and optimize as needed to prevent performance problems for the engine service.
Verify that the servers hosting the Qlik Sense engine service have sufficient resources (CPU / Memory) to proceed with the calculation. It is highly recommended to have at least 16 cores and 64 GB of memory.
You can otherwise change the timeout.
The "Hypercube memory limits" limits how much memory a hypercube evaluation can allocate during a request. If multiple hypercubes are calculated during the request, the limit is applied to each hypercube calculation separately.
If it sets to 0, the engine applies a global heuristic which basically ensures that it doesn't run more than 1 "big" calculation in parallel.
If you set this value to -1 then you will disable the limit and allow the Engine to keep trying to load the application.
The negative value disables the limit, but it wouldn't exceed the limit set under the Max memory usage (%) or Memory usage mode.
Qlik Sense: "Calculation timed out" while loading a chart into an application
As discussed in this community thread, an object field may disappear after applying a previousily created bookmark (bookmark created with option "Save layout" checked).
Defect "QB-19322" was reported to R&D but was closed as WAD (working as designed) with the following explaination.
------------
This is WAD (working as designed).
When you store layout state you create a patch on the table that restores the appearance of the table to the way it was when the bookmark was saved, this means that changes coming in later will not be visible when the bookmark is used.
The patch is cleared when the session ends, or if you apply a bookmark with another layout state (but not if you apply a bookmark without layout state or change the selections).
If the user needs the new columns, the best (or only) way is to recreate the bookmark with the new content visible.
--------------
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 with the ID "QB-19322" for reference.
Product Defect ID: QB-19322
Bookmarks with "Include layout state" do not maintain the column order in Straight table
Tabular reporting can't create table individual columns with some specific objects. This will lead to an error during the report production, so the option will be removed soon from the Add-Inn.
The fields in these columns can't neither be used in levels: this possibility will be soon removed as well.
It is possible that individual column or levels are currently present in Excel templates, especially if the report is imported from Qlik NPrinting.
In this case, the preview or the report generation by task fails with this message: " Error code: REP-500200"
The affected objects are:
It is necessary to manually remove these objects from any reports by editing them with the Tabular reporting Add-Inn.
It is possible to duplicate the same objects in table format on the Qlik Cloud Sense app and import the table in the Tabular Reporting template.
Tabular Reporting does not support these objects to create table individual column . Since they can be used in Qlik NPrinting, it is possible that they are present in imported reports.
Partial reloads can be performed in Qlik Sense via the in-app Button object. More information is available under Partial Reload - Qlik Sense on Windows.
For older versions of Qlik Sense, a third party extension is available which can be used to achieve Partial Reload. Note that this third party extension is not covered by Qlik Support. Please contact the extension vendor for assistance.
Download: Qlik Branch Project: Qlik Sense Reload Button
Or: GitHub repository for the Qlik Sense Reload Button.
Documentation on how to load new and updated records with incremental load can be found here: Loading new and updated records with incremental load
Table of content:
When attempting to add data files, the preview does not utilize the entire modal to display data in Microsoft Edge or Chrome browsers (latest releases) on both Qlik Sense Enterprise on Windows and Qlik Cloud.
When selecting a source data file, the preview of the data is limited to showing only one row, and the whole modal space is not being utilized.
Affected versions are Qlik Sense Enterprise on Windows:
This behavior is caused by defect QB-25217.
Fixed in Qlik Cloud Services as of the 28th of February 2024.
Fixed for Qlik Sense Enterprise on Windows on the following versions:
Use non-Chromium-based browsers such as Firefox or Safari.
QB-25217
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 with the QB-25217 for reference.
No scroll bar in the data files preview in Microsoft Edge or Chrome Browsers
Table is not rendered properly in Chrome/Edge while selecting data from the Data Source
Qlik ODBC connector package (database connector built-in Qlik Sense) fails to reload with error Connector reply error:
Executing non-SELECT queries is disabled. Please contact your system administrator to enable it.
The issue is observed when the query following SQL keyword is not SELECT, but another statement like INSERT, UPDATE, WITH .. AS or stored procedure call.
See the Qlik Sense February 2019 Release Notes for details on item QVXODBC-1406.
By default, non-SELECT queries are disabled in the Qlik ODBC Connector Package and users will get an error message indicating this if the query is present in the load script. In order to enable non-SELECT queries, allow-nonselect-queries setting should be set to True by the Qlik administrator.
To enable non-SELECT queries:
As we are modifying the configuration files, these files will be overwritten during an upgrade and will need to be made again.
Only apply !EXECUTE_NON_SELECT_QUERY if you use the default connector settings (such as bulk reader enabled and reading strategy "connector"). Applying !EXECUTE_NON_SELECT_QUERY to non-default settings may lead to unexpected reload results and/or error messages.
More details are documented in the Qlik ODBC Connector package help site.
Feature Request Delivered: Executing non-SELECT queries with Qlik Sense Business
Execute SQL Set statements or Non Select Queries
Free text visible on a chart is partially concealed, even if the text was set to show On Top in the Chart properties.
The rectangle holding the text can be moved or resized.
Press Ctrl + Shift to adjust the size of the rectangle with the mouse pointer.
This is a consequence of a fix of the issue that Chart texts are rendered outside their assigned area. From 12.30 onward, chart texts are only rendered inside the associated rectangle.
QV-25182
Qlikview 12.30 (Nov 2018) and higher