Search our knowledge base, curated by global Support, for answers ranging from account questions to troubleshooting error messages.
This article explains how to change the default locale in QlikSense Server when you create a new app on the hub.
Qlik Sense Enterprise on Windows
When you create a new application on the hub, the default locale is based on the settings on the QlikSense Server.
In order to change this setting, it is required to change the locale settings on the server for the account that is running the services.
If you run services as local system, you will need to use a tool such as Psexec in order to be able to execute the control panel as local system and change this settings.
This article will guide you on how to check audit logs to see users' activity on object/sheet/app.
First of all, we would need to enable Audit Logs on Qlik Sense side, to do so, you can follow this guide.
Once done all the steps from the above's guide, then we can check all user activity on object/sheet/level through the Operations Monitor app (from Qlik Sense 2019 release).
In the example below we will see a graphic example of how to check this information from Audit Logs.
User with ID "f9b8183a-bc07-4571-8ccb-94f7a1c5d9db" navigates into app with ID "1e4a22db-7395-46b3-bd43-78bc4cef811f" and then clicks on sheet with ID "1e4a22db-7395-46b3-bd43-78bc4cef811f" and finally selects a dimension:
User performing selections on an app
As we enabled Audit Logs, all traces coming from users selections will be logged on this path location: C:\ProgramData\Qlik\Sense\Log\Engine\Trace\ServerName_Audit_Engine.txt
Now we can check the audit logs directly from Operations Monitor app:
Checking logs through the Operations Monitor app
Furthermore, you could also check from logs the object ID and action performed on it on the following columns from C:\ProgramData\Qlik\Sense\Log\Engine\Trace\ServerName_Audit_Engine.txt:
Checking object ID and action performed
Qlik Sense Enterprise on Windows
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.
How to enable Audit Logging in Qlik Sense Enterprise on Windows
What is legacy mode?
Legacy mode in Qlik Sense allows users who have access to the data load editor to write load statements which reference file paths rather than through LIB statements.
Simple example:
Standard Mode:
LOAD *
FROM [lib://data/data.csv]
(txt, codepage is 28591, embedded labels, delimiter is ',', msq);
Legacy Mode:
LOAD *
FROM C:\data\data.csv
(txt, codepage is 28591, embedded labels, delimiter is ',', msq);
What are the security considerations when using legacy mode?
Out of the box, for a user to do development in Qlik Sense, they need some combination of two types of access:
This security model is the intermediary between the user inside of Qlik Sense and the data sources.
When using legacy mode, any user who has access to the Data Load Editor can now access the file system of the local Qlik Sense server as well as any network file shares that the Qlik Sense service account independent of the security rules configured on the Qlik Sense deployment. In this example, the user has access to AttachedFiles, which all users would out of the box, as well as a Salesforce data connection, yet they are still able to load from the data.csv:
This means that the traditional mechanism for ensuring governance and security over data access inside of the Data Load Editor will no longer apply and the user(s) will be accessing the files as the Qlik Sense Service account
What are the benefits of using Legacy Mode?
This is difficult to answer in an exhaustive manner, but generally the benefits are narrowly scoped to deployments where app development, self-service capabilities are disabled or where this level of access is restricted to a vetted set of administrators. Some benefits include:
Is legacy mode recommended by Qlik?
For most deployments, no, legacy mode is not recommended. It can be useful in some deployment scenarios where the security concerns are mitigated.
How do I switch to Legacy mode / disable standard mode?
Disabling standard mode - Enabling Legacy Mode - Qlik Sense on Windows
Qlik Sense Legacy mode
Qlik Sense data files (.QVF) may contain sensitive organizational data. As such, even though Qlik Technical Support has a very strict Non-Disclosure Agreement, it may be desired to scrambled specific data before submitting apps Qlik Sense support for investigation.
For the currently available method in Qlik Sense Enterprise for Windows, see Scramble Sensitive Data In Qlik Sense Enterprise for Windows.
Data can be scrambled in two ways:
Before providing the scrambled application to Qlik Support, please check that you can still reproduce the issue within the scrambled application.
The attached automation_scramble_Support.json automation creates a copy of your app before scrambling the data.
To scramble your data using the automation:
If Automations are not enabled, or you do not have the correct subscription model, use the attached Qlik Script and Excel file to scramble the data.
To scramble data using an excel file and a Qlik script:
Binary;
$(Include=lib://NAMEOFSPACE:DataFiles/scramble.qvs);
CALL Scramble('lib://NAMEOFSPACE:DataFiles/scramble.xlsx');
Exit Script;
Idea / Feature Request - Data Masking
Alternative method using APIs and the DevHub: Data Scrambling in Qlik Sense
Scramble Sensitive Data In Qlik Sense Enterprise for Windows
To access the examples, visit the community post or download it from here.
The following error may occur when reloading data from Ms Excel: “Error: Too many columns in data source (16326) but the limit is 10000."
Defect QB-22272 reported to R&D
This was an intentional change introduced in Qlik Cloud but was obviously set as a default limit for Qlik Sense Enterprise for windows as well.
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-22272 for reference.
As workaround, please add this parameter "MaxColumnsInDataSource=0" in "settings.ini" file
1. Stop Qlik Sense Engine service
2. Edit "settings.ini" file from C:\ProgramData\Qlik\Sense\Engine
3. MaxColumnsInDataSource=0 and save "settings.ini" file
4. Restart Qlik Sense Engine service and test
R&D is planning to turn back as it was before the latest release but I can't predict the version in which a fix will be available.
Product Defect ID: QB-22272
This is a basic example in order to get started with Advanced Analytics Integration in Qlik Sense using PYTHON.
This customization is provided as is. Qlik Support cannot provide continued support of the solution. For assistance, reach out to our Professional Services or engage in our active Integrations forum.
The architecture at a high-level looks like this:
With this new capability, it is possible to add syntax to a chart expression that tells Qlik Sense that a particular expression should not be evaluated on the Qlik Sense server, but instead, all the information and data needed to calculate that expression should be sent via the server side extension on to the back end Python system for calculation.
After the advanced analytic calculations are completed, the data is sent back to the Qlik Sense Server and to the client for visualization.
For an example with video that uses R-Server instead, see R Integration with Qlik Sense
In order to display a "Hello World" message in the Qlik Sense App, Perform the steps below:
Note: To obtain the latest HelloWorld example and other Python examples, see Python Examples in Qlik's Github repository. Make sure to check out the GetStarted.md documentation as well.
SSEPython.ScriptAggrStr('", ".join(args[0])' , HelloWorldData)
Eight script functions are automatically added to the functionality of the plugin. What is needed to be covered on the plugin side to fulfill
the functionality is to implement the Script aggregate rpc function.
The syntax of these functions is <EngineSSEName>.<FunctionName>(Script [,Parameter...])
where the Script is a Python script to be evaluated & Parameter is the data sent from Qlik's end.
Here, the ScriptAggrStr function is used which accepts argument of type String & returns a String after an aggregation. The 'join' function in Python method returns a string, which is the concatenation of the strings in the sequence seq. The separator between elements is the string providing this method. From Qlik side, we pass a field called HelloWorldData which contains the 2 strings as we have loaded.
To use SSE function(s) to load data via application load script, the Extension clause needs to be used. See additional information as well as an example under Load > Argument > Extension and Examples > Loading from Analytic connections via the following link: Script Regular Statements: Load.
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.
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:
QB-2436
Operation Monitor and License Monitor apps in Qlik Sense failed to reload with error message;
"Error: QVX_UNEXPECTED_END_OF_DATA: Unexpected character encountered while parsing value: <. Path '', line 0, position 0."
Check the connection string of the data connections for your monitor_apps_*.
The connection string should be: queryHeaders=X-Qlik-XrfKey%20000000000000000%1User-Agent%2Windows;PaginationType=None;
If the string is instead: queryHeaders=X-Qlik-XrfKey%20000000000000000%1User-Agent%2Forms;PaginationType=None; then modify it to User-Agent%2Windows.
Create a secondary virtual proxy using standard windows authentication. In our example we use "win" as the prefix. For detailed instructions on how to add a new Virtual Proxy, see Qlik Sense: How to create a new Virtual Proxy.
Edit all Data Connections prefixed with monitor_apps_ to use the new virtual proxy. Change the connector URL path to contain the Windows authenticated virtual proxy.
Operations Monitor and License Monitor apps use the Qlik REST Connector to fetch data. The connector requires Windows Authentication to be successful in fetching data. This issue occurs when no virtual proxy in the Qlik Sense deployment utilizes Windows authentication.
These above steps will allow the object to appears correctly in the NP designer as a straight table
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.
On Qlik Cloud, a button triggers an automation that should update a variable value.
However, when the automation completes, the value only gets updated in the variable editor, not in the objects that are supposed to show the value.
Define the value in the script first with:
SET vNameOfTheVariable='Initial Value';
If the variable is not the declared in the script, the value will only get updated in the editor, as part of the current interactive session.
If the script sets the definition of the variable at reload, then the value will also be accepted for Qlik Sense objects.
This is a consequence of the design of the product, as there is a difference according to whether the definition of the variable is set on the script or not.
Our Engine team will have this properly documented with all the details in a future documentation update (ref. EN-5271).
This Techspert Talks session covers:
Chapters:
Resources:
Q&A:
Q: Your multi language apps is really critical to my business as we globalise - where is there more content about how we can handle dimension name translation in line with the native Qlik langauge translations?
A: Dimension names can be renamed in the load script, but it may not be necessary, just translate the dimension labels in the app instead.
Making a Multilingual Qlik Sense App
Q: Do the objects within the new Container have to be master visualizations?
A: No, you don't need to use Master visualizations. You can add new charts to the object or drag and drop existing charts from the sheet.
Q: When will the Layout Container be available?
A: Most likely later this year
Q: After update, there is a problem with filtering a "toString" field. I can't open the application for 10 minutes. What wrong with that field? (e.g. load * inline [toString test1];)
A: Hard to tell without seeing the app and knowing what the field is. As a general rule, keep the cardinality of fields down. If I would guess toString in this case may stop the engine from optimizing the field. To learn more, read HiCs post.
Symbol Tables and Bit-Stuffed Pointers
Q: Will we be able to pin objects to certain locations on the grid? As shown, a sheet menu build using the layout container would be nice to pin to the top left corner for example?
A: In the first release positioning and size will be using percentages. So, if you would have the position 0% for both axis then it would be pinned in the corner.
Click here to see video transcript
After upgrading to QlikView May 2023 on a Windows 2012/Windows 2012 R2 server, WebView no longer works in QlikView Desktop.
In both cases, WebView cannot be used.
WebView2 is not supported on Windows 2012 R2, as it uses libraries that are not present in the final version of Microsoft Edge that can be installed on that operating system.
This is a limitation from Microsoft.
Also please note that in our system requirements, we state that we support the operating system "* Provided there is Standard manufacturer Support for the platform. "
As Windows 2012 R2 has now reached the end of standard support, we consider that operating system as no longer supported for any purposes.
QlikView Desktop has changed its rendering engine to WebView2. WebView2 is a modern Microsoft Edge-based web technology replacing the previous WebView that was based on MS Internet Explorer technology.
The Qlik Sense Reload Monitor app does not reload and if manually reloaded from the hub, remains stuck at the calendarization section.
A log file includes a line that is being misinterpreted as a date.
Qlik Sense Operations Monitor reload takes too long, the calendar generation does not complete (includes a script specific to the Operations Monitor)
When changing the name of a dataset, the source name still stays the same. This can be seen by uploading a “firstname.qvd" and renaming it to “secondname.qvd”.
The dataset's detail will show "firstname.qvd" as the source.
As a consequence:
Trying to load “FROM [lib://DataFiles/secondname.qvd]” will produce a "(Connector error: File not found)" error.
This is not a defect, it's how the product is designed.
A dataset represents a data resource with its properties such as name. The value of that is that you are able to use more user-friendly names of datasets without having to change the source names, which can be useful when the dataset is pointing to a database table for instance.
In the future, there is a plan to add the possibility of calling the name of the datasets in the script.
When executing the task in DWH, there is no mention of Dropping the Staging tables in the ETL statements. Qlik Compose shows the creation and truncation of these tables only:
Explanation of the behavior:
For TMP tables and TSTG tables, whenever the Qlik Compose engine sees a create statement for these tables, and that is the statement shown in the ETL statements list, it does a DROP for that table in the background (Silently) :
pool-2-thread-5 2023-10-03 13:29:37.554 [engine ] [VERBOSE] [] PI# 5 BEGIN dropSilentBeforeCreate()
pool-2-thread-5 2023-10-03 13:29:37.636 [engine ] [TRACE ] [] PI# 5 Performed implicit DROP TABLE [ADAM_DWH].[dboAdam].[TSTG_Categories]
pool-2-thread-5 2023-10-03 13:29:37.636 [engine ] [VERBOSE] [] PI# 5 END dropSilentBeforeCreate()
The same behavior can be seen for all the TMP tables Qlik Compose creates.
To verify this, run the task at TRACE level logs, and look for dropSilentBeforeCreate in the logs.
The staging tables are not dropped for customer convenience. This facilitates the development of user-defined statements like Pre/Post Loading ETL and Single/Multi Table ETL, which often involve these tables. Additionally, customers find it useful to have them available for adding test data during their development process, especially when Qlik Compose is not active.
The following error can occur when using SAP BW Connector to extract data from InfoProvider/CompositeProvider.
--------
[ERR] [QVX] RfcAbapException:JOB_CANCELLED
Job aborted, check log for Job /QTQVC/READ_MPDATA in Job Overview (transaction SM37)
---------
Reported bug QB-18952 was closed by R&D as WAD(working as designed) .
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-18952 for reference.
From the SAP System,
The allowed maximum width is 8192 characters.
From the INFOPROVIDER, if the field is of, for example 15282 characters wide, a simple workaround would be to split the extraction into two or more extractions. Then in Qlik Sense or QlikView, depending on your data model, use JOIN / CONCATENATE.
Product Defect ID: QB-18952
A Qlik Sense App may load slowly in the Qlik Sense Enterprise on Windows hub.
Qlik advises following our best practice guides when designing and publishing an app.
See:
In addition, the following five points may impact load times:
Qlik does not recommend against using the options below, but to keep them in mind when designing an app or measuring its performance. For a more hands-on and individual appraisal of your app and how to streamline it, please contact our professional services.
This Techspert Talks session addresses the following:
Resources:
24 Days of Visualizations, season 2
Let’s Make New Charts with Qlik Sense
Click here to see video transcript
Several patches to May 2023 worked to resolve issues with quoted entries when using Modern Style Quoting (MSQ) for multi-line entries in CSV files. These resolved the issues raised at the time but resulted in a change in behavior when parsing quoted entries with a space after the delimiting character.
As an example, the following entry from a CSV:
A,"B
on 2 lines",C
This is parsed correctly as:
A | B one 2 lines | C |
This is due to there being no space between the comma and the quoted B field
However the following entry:
A, "B
on 2 lines", C
The entry is parsed as:
A | "B | |
on 2 lines" | C |
The multi-line quoted field is not parsed due to the space after the comma (or whatever delimiter is specified)
Qlik Sense May 2023
A fix for this behavior will be delivered in a patch at a future date, though where feasible removing the spaces after the delimiting character will allow Qlik Sense to properly parse the file.
August 2023 Patch 2
May 2023 Patch 6
Product Defect ID: QB-21429
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.