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.
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
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 ----------------------------------- */
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
The problem occurs when a field filter is not specified in a LOAD statement that gets data from a .parquet file.
This simple script provides an example where the issue can occur:
TEST:
LOAD *
inline ['docCode','docName','docStatus'
'A1', 'Description A1','S',
'A2', 'Description A2','S',
'A3', 'Description A3','N',
'A4', 'Description A4','N',
'A5', 'Description A5','S',
];
Store TEST into [lib://test (domain_administrator)/test.qvd] (qvd);
TEST:
LOAD
docCode,docName,docStatus
FROM [lib://test (domain_administrator)/test.qvd] (qvd)
WHERE docStatus = 'N';
You get the error message if you remove ,docStatus from the latest LOAD.
The problem does not occur if you store the content in a QVD file.
The problem is fixed in Qlik Sense May 2024.
A possible workaround is to specify the docStatus field in the LOAD statement and then drop the field after the filtering, like in this example:
LOAD *
inline ['docCode','docName','docStatus'
'A1', 'Description A1','S',
'A2', 'Description A2','S',
'A3', 'Description A3','N',
'A4', 'Description A4','N',
'A5', 'Description A5','S',
];
Store TEST into [lib://DataFiles/Ptest.parquet] (parquet);
Drop Table TEST;
TEST:
LOAD
docCode,docName, docStatus
FROM [lib://DataFiles/Ptest.parquet] (parquet)
WHERE docStatus = 'N';
Drop Field docStatus;
The problem is due to a defect in Qlik Sense February 2024.
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-25080 for reference.
QB-25080
QlikView and Qlik Sense load either missing or additional zeros, compared to the values in the data source.
For example data like in the below script is loaded with incorrect leading zeros.
LOAD * Inline [
F1, F2
1, a
01, b
02, c
2, d
];
On the second row the leading zero is missing, and on the fourth row, there is an unexpected additional leading zero.
QlikView
Qlik Sense Enterprise on Windows
Qlik Cloud
The observed behaviour is a part of fundamental Qlik engine functionality and data compression technique.
In short, this means that Qlik interprets and associates loaded data by best effort. As part of Qlik optimization and compression technique the same reoccurring value in a field is stored on the first occurrence only, and the following occurrence reference to the first (stored) value. This means that two values with identical numerical representation can not be stored with two different textual presentations in the same field in Qlik.
Please keep in mind that all numerical values in Qlik act as dual values. This means that they have an underlying numerical value that is used for calculations, and a textual formatted value which is the value seen in charts or as calculations results.
In the example below four rows of data are loaded. In the field F1 there are four different value.
LOAD * Inline [
F1, F2
1, a
01, b
02, c
2, d
];
Identical numerical values are associated with the same textual presentation value in Qlik . For this reason, it is not possible to store the same numerical value with different textual presentation values.
One way to resolve this is to format the values as text by using Text() during reload.
LOAD
text(F1) as F1,
F2
Inline [
F1, F2
1, a
01, b
02, c
2, d
];
This will result in the visual values looking identical to the data source.
NOTE: Value formatted with Text() will not have underlying numerical values, hence calculations on these values is not possible.
It may be desirable to reload an app depending on whether all QVD files have been updated since the previous app reloaded. Below is an example of how this can be accomplished in the load script by comparing the last updated timestamp of QVD files with the app's previous reload time.
The simplest way to track the previous reload of an app is to store the current time in a variable at the end of the script execution. This variable value will only be set if the script execution successfully reaches the end and will be available for the following execution as a reference of the previous successful reload.
LET vPrevReload = UTC();
At the first reload of the app, the variable will not exist, meaning it is of zero length. In this case, it makes sense to initiate a really old timestamp.
IF Len($(#vPrevReload)) = 0 THEN
LET vPrevReload = Date(0);
ENDIF
QVD files always have an XML header representing metadata of its data content. QVD files are never updated when data changes. They are always overwritten when a STORE command is executed. For this reason, the XML header contains a field called CreateUtcTime, which is the time when the file was written or created.
It is possible to determine if the QVD file has been updated since the previous app reload by comparing the QVD created time with the previous reload variable. For simplicity, we flag the comparison result with a 1 when the file has been updated.
QvdFiles:
LOAD
If(CreateUtcTime > $(#vPrevReload), 1, 0) AS IsUpdatedFromPrevReload
FROM [lib://MyFolder/MyDataFile.qvd]
(XmlSimple, table is QvdTableHeader);
Most apps are dependent on data from more than one QVD file. To check if multiple files have been updated, the files need to be named, for example, by simply listing the file path in an inline table. Notice, the path is a complete data folder connection reference.
QvdSource:
LOAD @1 AS Qvd Inline [
lib://MyFolder/MyDataFile1.qvd
lib://MyFolder/MyDataFile2.qvd
lib://MyFolder/MyDataFile3.qvd
] (txt, no labels);
By iterating the timestamp comparison over all the QVD files, it is possible to decide if all files have been updated since the previous reload. This is done in two steps, first generate a comparison for each file, then aggregate the total result. The aggregated sum of all comparison results will represent how many files have been updated since the individual results are 1 when a file has been updated.
An aggregation of a data set in the load script requires grouping data by a field. For this reason, a dummy value that is the same for all records is introduced to create a single group of all records.
For Each vQvdFile in FieldValueList('Qvd')
QvdFiles:
LOAD
'All Files' AS GroupByAll,
'$(vQvdFile)' AS QvdFile,
If(CreateUtcTime > $(#vPrevReload), 1, 0) AS IsUpdatedFromPrevReload
FROM [$(vQvdFile)]
(XmlSimple, table is QvdTableHeader);
Next
NoOfUpdatedQvds:
LOAD
Sum(IsUpdatedFromPrevReload) AS NoOfUpdatedQvd
Resident QvdFiles
Group By GroupByAll;
The total number of QVD files is expected to be the same as the number of updated files if the app should be reloaded. If the two values are different, then the reload should be avoided.
Important to notice that the reload must fail for the app to remain in its current state with data from the previous successful reload. This will allow a business user to keep consuming the app, even though the data might become a bit aged.
A simple way to fail a reload is to load from a non-existing data source, for example, by targeting a data connection that is unlikely to exist. Even if the data connection would exist, the load statement will fail by not specifying a target data file.
LET vUpdatedCount = Peek('NoOfUpdatedQvd', 0, 'NoOfUpdatedQvds');
IF $(#vUpdatedCount) <> NoOfRows('QvdSource') THEN
LOAD *
FROM lib://QvdFilesAreNotUpdated/ (QVD);
ENDIF
The information in this article is provided as-is and to be used at own discretion. Depending on tool(s) used, customization(s), and/or other factors ongoing support on the solution below may not be provided by Qlik Support.
Some of the master dimension in the Qlik Sense app cannot be seen in the selection tool.
Calculated dimension are not be displayed by design, and this is a current product limitation, but you can expect that a Master Dimension with a single field as expression would be displayed.
Environment
Cause:
The problem occurs when a Master Dimension is created using the left bar of Qlik Sense app. In this case, Sense will automatically add the '=' sign to the field you import.
So the master dimension is considered as a calculated dimension and not shown by the selection tool
Resolution:
It is necessary to avoid the "=" in the master dimension.
Here are the steps to follow.
The QlikView Governance Dashboard fails to reload with errors Table Not Found or Field Not Found.
To resolve the issue:
You may need to locate a specific Qlik Sense App object which has been identified to be causing errors in the Qlik Sense log files or to be using large amounts of RAM as identified by the Telemetry dashboard.
How do you isolate this object and locate it in the Qlik Sense App?
Note that in October 2022, a set of Microsoft patches interfered with SSL handshakes. See Qlik Sense Enterprise on Windows: Internal Error while accessing Data Load Editor, Data Manager, and creating a new App for details.
The Qlik Sense Data Manager and Data Connection does not load when opening the Data Load Editor or Add Data Wizard. The Qlik Sense hub does not load a data connection or takes too long to load it.
This issue happens predominantly in Deployments within Environments with restricted Internet access. The workaround is to remove the Custom Data Connectors from the installation folder.
Other symptoms might include:
After fresh installation or upgrade the User navigates to the Data Load Editor or Add and sees the following:
And the Data Connection List is empty and the loading wheel is spinning indefinitely:
In Add Data Wizard following can be observed:
In most cases depending on the environment the Data Connections will eventually load after 10 to 30 minutes of waiting. However this not an ideal solution as the connections have to be loaded every time when the Data Load Editor or Add Data Wizard are accessed.
Qlik connectors are cryptographically signed for authenticity verification. The .NET framework verification procedure used for this signing includes checking OCSP and Certificate Revocation List information, which are fetched from a online resource if the system doesn't have a cached local copy. These requests will timeout due to lack of access to online resource in environments with restricted, slow or no internet connection. Due to authenticity check failure the connector will not run, and the app reload fails.
Verify if your system is affected by Microsoft patches interfering with SSL handshakes. See Qlik Sense Enterprise on Windows: Internal Error while accessing Data Load Editor, Data Manager, and creating a new App.
If you are not affected by the SSL handshake issue, proceed with one of the below workarounds.
Follow the instructions ad documented in An error occurred / Failed to load connection error message in Qlik Sense - Server Has No Internet
Enable internet access.
Alternatively, using a third-party tool such as Fiddler or inbuilt browser debug tools, identify the addresses used and add them to allow lists on firewalls/proxies otherwise blocking internet traffic.
Temporarily move the following files outside of Program Files:
Files can be found in: C:\Program Files\Common Files\Qlik\Custom Data
In a multi node environment please do it for all the nodes. You can as well try removing only the OvOdbcConnectorPacakage as the OvDataMarketConnector does not always fail.
Note that when moving the files, you will not be able to use the Data Market Connector or the ODBC Pacakage.
For any case related to SAP Extractor Connector, follow the following troubleshooting steps:
With previous Qlik SAP Connector versions, unknown value in SAP client was extracted as ' ' (empty, not null) value with length = 0.
From Qlik SAP Connector version 8.0.1 and above, unknown value is being extracted as '#'.
It's working as per the design (a design change).
Earlier in previous Qlik SAP Connector versions, the data type mapping was different compared to latest Qlik SAP Connector versions.
With new Qlik SAP Connector versions, when loading SAP data to Qlik, we are now receiving the exact format as the format used in SAP source data type.
From that screenshot, it shows that, format in “Qlik data preview” matches the format in “source data”.
Thus, in order to replace '#' by ' ', a solution is to modify the scripts using REPLACE() function. Some contexts may require the use of Qlik functions like num(), text() etc...
In Qlik Cloud, the following error may occur when extracting data from SAP HANA cloud using JDBC connector
ex1: Error connecting to source: SAP DBTech JDBC: Cannot connect to jdbc:sap://xxxxxxxxxxxxxx.xxx.xx-xxx.hanacloud.ondemand.com:443/ [Cannot connect to host xxxxxxxxxxxxxx.xxx.xx-xxx.hanacloud.ondemand.com:443 [Received fatal alert: insufficient_security], -813.].
ex2: Error connecting to source: SAP DBTech JDBC: Cannot connect to jdbc:sap://xxxxxxxxxxxxxx.xxx.xx-xxx.hanacloud.ondemand.com:443/user=xxxUSER#xxx&password=???? [Receive of connect failed.].
However, connecting to the SAP Hana Cloud Database succeeds when using DBeaver tool with JDBC drivers.
Problem Investigation "QB-22934" was reported to R&D
To connect to SAP HANA cloud using JDBC connector, you need to add "encrypt=true" in the connection string. An example can be found here https://help.sap.com/docs/cloud-integration/sap-cloud-integration/jdbc-for-sap-hana-cloud
If the connection string contains username and password, please use the Wallet Encrypted properties to add these kinds of values such that stored encrypted and never visible anywhere.
Ex: jdbc:sap://xxxx.hanacloud.ondemand.com:443/databaseName=xxx?user=xx_xx#xxxUSER&password=xxxxx&encrypt=true
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-22934 for reference.
This article states why the default auto number format in sheet objects such as charts is set to K,M,G instead of K,M.B.
Qlik Sense Enterprise on Windows
The default number-abbreviation format for billions is set to the international SI unit of "G".
1. You are able to change this beginning in charts using a load script modification.
Use the load script statement and modify to your preference:
SET NumericalAbbreviation='3:k;6:M;9:B;12:T;15:P;18:E;21:Z;24:Y;-3:m;-6:μ;-9:n;-12:p;-15:f;-18:a;-21:z;-24:y';
2. You can also change the default that the script generates.
Do this by adding NumericalAbbreviation=3:k;6:M;9:B;12:T;15:P;18:E;21:Z;24:Y;-3:m;-6:μ;-9:n;-12:p;-15:f;-18:a;-21:z;-24:y to the Settings.ini file located here C:\ProgramData\Qlik\Sense\Engine.
Please review How to modify Qlik Sense Engine's Settings.ini for guidance on editing the Qlik Sense Engine's Settings.ini
This session addresses:
-Understanding new SaaS capability
-How to get started
-Troubleshooting common issues
00:00 - Intro
01:08 - What is Qlik Reporting Service
01:45 - Difference from NPrinting
04:28 - 1st: Sheet Size should match Paper Size
05:32 - 2nd: Reports based on Public Sheets
06:18 - Creating an Automation from Templates
07:30 - Creating Report Automation from scratch
10:18 - Previewing the Report File Size
11:02 - Troubleshooting automation workflow
11:50 - How to skip a block
12:25 - Reviewing Automation logs in QMC Catalog
13:02 - Identifying and correcting errors
13:43 - Information to create a Support Case
14:34 - Limitations
15:18 - QnA: Can you see the file size of a report?
15:56 - QnA: Can you see how many times a report is downloaded?
16:18 - QnA: How does this compare to NPrinting?
16:59 - QnA: Does this work with QlikView?
17:08 - QnA: Can any app be used to generate a report?
17:32 - QnA: Can Reporting be added to a button?
18:12 - QnA: How can you preview the report?
18:55 - QnA: Email attachment or file storage for download?
19:31 - QnA: Is it available for QSEoW?
19:57 - QnA: Rights to generate reports?
20:10 - QnA: Possible to use different report colors than in App?
20:34 - QnA: Possible to adjust font size or resolution?
Resources:
Triggering an automation from a button on a sheet
Help page documentation - Limitations
Qlik Application Automation Info Checklist
Q&A:
Q: How does this compare to NPrinting?
A: NPrinting is a fully developed, on-premises product for QlikView and Qlik Sense, which offers a wider range of report formats besides pdf.
Q: How much of NPrinting functionality does Reporting Services cover and how is the roadmap?
A: Qlik Reporting Service is not a replacement of NPrinting; it is a new reporting service in Qlik Cloud. More features will be added. We have a dedicated forum: Reporting Service
If you have any ideas to improve the service, please submit it as feature request: Ideas
Q: How to send out emails with Excel reports? pdf is fine.
A: The current format option is pdf only.
Q: Is this available on Qlik Forts?
A: No, Qlik Reporting Service cannot access data stored in Qlik Forts.
Q: Can we deliver a report as a spreadsheet? If not, is that a feature for the future?
A: You can accomplish it by using Qlik Application Automation: Using Qlik Application Automation to create and distribute Excel reports in Office 365
Q: Does this apply to QlikView, as well?
A: QlikView is not supported.
Q: Does it matter how many people are distributed to in an automation "run"?
A: No limit on the number of report recipients, but automation jobs have limitations such as the duration of execution. Qlik Application Automation limitations
Q: If we purchase the additional license there will be another additional limitation?
A: It would be up to its license. For further information, please contact your account manager.
Q: Does QRS use our organizations SMTP Server? If so, is the send rate customizable, one of the issues with NPrinting is that the send rate exceeds the allowable by Office365?
A: Any SMTP server should work.
Q: Isn't it possible to combine content from different applications/tabs?
A: A report is generated from a single app.
Q: Is report automation intended for normal users of the application? If so, what security rules are needed to enable this capability?
A: You can only make a report automation with Qlik Sense apps you have permission to access.
Q: Can't the report filter data for each different user that is going to receive it?
A: Yes, you can. Please watch this demo: Did you say Report Bursting? Show me more!
Q: Could you please let me know how can we migrate our Qlik Sense apps from Qlik Sense Enterprise on Windows as well as QlikView apps to Qlik Sense SAAS?
A: Please refer to our help site: Moving from client-managed Qlik Sense to Qlik Sense SaaS
Q: Will the generated reports look exactly like the sheet export to pdf? What happens to elements like tables that don't fit the screen? As far as I remember, they are simply cut in the pdf extract but can flow over to a next page in NPrinting.
A: Please leverage Manual download in PDF. The preview shows you a final outcome in advance.
Q: What about the 100 reports mentioned on the price list?
A: The limitation are listed here: Qlik Reporting Service specifications and limitations
Limitations have updated with the 4th of April, 2024. See Reporting Service Packaging Changes.
Q: Is it possible to add filters based on the different user when distributing the report, like NPrinting, Example John Doe only wants to see Country US, but Jane Doe want to see US & Canada?
A: Yes, you can. Please watch this demo: Did you say Report Bursting? Show me more!
Q: What NPrinting functions cannot be done in Qlik Reporting? My question is: why the client usually makes those evaluations about what functionality he will not have anymore if he has to choose to change from NPrintng to Qlik Repoprting?
A: Qlik Reporting Service is a part of the Qlik Application Automation Connector, which facilitates the report distribution tasks. While NPriting is a separate on-premises product with more mature features. Having said that, more features on the road map.
Q: Where can you send the files to?
A: You can send a report as attachment or a public storage using the following connectors: Amazon S3, Dropbox, FTP, Google Cloud Storage, SFTP.
Q: Hi, about launch an automation from a Qlik Sense app, which rights are needed so users can launch this automation or report?
A: You don’t need a specific right unless your tenant admin disable the Application Automation.
Q: Is there a limit of the size of the PDF that can be generated?
A: No file size limit, there are other factors you may want to consider. Please see the limitations: Qlik Reporting Service specifications and limitations
Q: When will other file formats (for example, PowerPoint) be supported?
A: They are on road map, so please stay tuned.
Q: Can you use only complete sheets or also specific diagrams?
A: Yes, as long as they are public sheet. You may want to consider the size of the sheet; otherwise, the sheet may not fill a report well.
Q: Can you repet please how much reports can we send for free?
A: Number of reports per tenant per day: 10,000.
Q: Can you "print" a whole Table? Or only the first 20 Rows, which are seen?
A: You can make a selection in a block and filter it. Add a selection to the report
Q: Hi, you talk about 5000 free runs : it is about automation or report number ?
A: The limitation are listed here: Qlik Reporting Service specifications and limitations
Limitations have updated with the 4th of April, 2024. See Reporting Service Packaging Changes.
Q: Can you use filter?
A: Yes. Creating a Qlik Reporting Service report
Q: Are there plans to be able to send Excel format as the report?
A: Application Automation can distribute data in a Excel format: Using Qlik Application Automation to create and distribute Excel reports in Office 365
Q: Can you add the company graphical profile?
A: If you can add it as image on a sheet, then yes.
Q: In the future will be possible to generate other report formats such as PowerPoint?
A: If you have an idea, please submit it in our Ideation: Ideas
Q: Can you include 3rd party chart types (e.g., Vizlib charts) in Qlik Reporting Service?
A: Yes, what you can see in the sheet will be in a report.
Q: If you need native reports as PPT you should use NP?
A: Yes, Qlik Reporting Service only generates a report in PDF.
Q: Do you have central place to monitor all automation/reporting tasks? To see errors, last execution time or status?
A: Tenant admin is able see all the automation on the list in Management Console.
Q: Any plans on bringing this to Qlik Sense Enterprise on Windows?
A: No, this is a feature in Qlik Cloud.
Q: Please forgive if this has already been covered as I joined late, can we select landscape or portrait paper format?
A: You can adjust a sheet size, which will be your report size.
Q: When do combination of apps in one report come?
A: Please submit your idea in our ideation page: Ideas
Q: Is multi-format reporting on the roadmap for QRS? or will multi-format reporting stay with NPrinting only? Do you believe that eventually QRS can complete all NPrinting tasks?
A: Qlik Reporting Service is a different feature in Qlik Cloud. If you are looking for a solutin in Excel format, you can use Application Automation to generate and distribute a Excel spreadsheet: Using Qlik Application Automation to create and distribute Excel reports in Office 365
Q: Can you use it for on-demand reporting?
A: You can trigger a report from the sheet by implementing an action button: Triggering an automation from a button on a sheet
Q: The actual limit of 100 report, is 100 runs or 100 reports? I mean, can I send one report to 200 users with 200 different filters?
A: The limitation are listed here: Qlik Reporting Service specifications and limitations
Limitations have updated with the 4th of April, 2024. See Reporting Service Packaging Changes.
Q: I heard about a limit of 100 free reports by tenant by months?
A: The limitation are listed here: Qlik Reporting Service specifications and limitations
Limitations have updated with the 4th of April, 2024. See Reporting Service Packaging Changes.
Q: Can you show us how you set the screen size of the report so that it matches the page layout?
A: You set the sheet size in the app, which will be your report. The reporting service will try to optimize for portrait/landscapes.
Click here for video transcript
Monitoring App reload fails with:
Error message: Error: QVX_UNEXPECTED_END_OF_DATA: HTTP protocol error 401 (Unauthorized): Requested resource requires authentication.
The error happens when the Qlik Sense services account does not match the account used in the reload task or the service account has been disabled or otherwise lost access.
Verify that the account running the service and the account defined in the data connections is still valid.
Once the correct user data has been identified, update the data connections accordingly with the Qlik Service User ID and Password.
If Qlik Sense service is running as a local administrator, you need to put the account of Local administrator within the field. (e.g. Domain\administrator)
If the issue persists, test the connection with a different root admin account and ensure the password on that account is 'simple' free of special characters.
It is possible that the account used (should be the service account) may be corrupted or have too complex a password.
For additional troubleshooting and root causes, see:
Reload of the Operations Monitor app or other monitoring apps fail with 401 (Unauthorized
Operations Monitor or License Monitor Tasks Do Not Reload - Updated and Verbose - Monitoring Apps