Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
안녕하세요.
당사에서는 Qlik을 단순 Dashboard 조회 목적이 아닌 사용자 Role 기반 Dashboard 및 Alerting/NPrinting 서비스로 활용하고 있습니다.
이에 따라 Role별로 조회 가능한 Qlik Dashboard와 수신 가능한 Alerting/NPrinting을 구분하여 관리하는 것이 중요합니다.
현재 Qlik Alerting의 User Group 관리 및 AD Security Group 연동과 관련하여 아래와 같은 개선사항을 요청드립니다.
현재 Admin > User management > User groups 경로에서 회사 내 Role별로 User Group을 생성하여 관리하고 있습니다.
당사에서는 약 80개의 Role을 User Group으로 생성하였으나, User groups 페이지에서는 최대 50개의 Group만 조회되고 있습니다.
또한 Alert 리스트와 달리 User groups 페이지에는 Show More 또는 Pagination과 같은 추가 목록 조회 기능이 제공되지 않아, 50개를 초과하는 전체 Group 목록을 확인하기 어렵습니다.
User groups 페이지에서도 생성된 전체 User Group을 조회할 수 있도록 기능 개선을 요청드립니다.
예를 들어 아래와 같은 기능이 제공되면 좋을 것 같습니다.
Alert의 수신자를 설정할 때 User Group의 개수가 많기 때문에 검색 기능을 사용하고 있습니다.
그러나 현재 Alert의 수신자 설정 화면에서는 Group Name의 일부만 입력하여 검색할 경우 검색 결과가 조회되지 않는 문제 및 Assigned된 Group 리스트가 일부만 보이는 문제가 있습니다.
예를 들어 ADMIN이라는 Group을 검색하기 위해 ADM만 입력하면 ADMIN Group이 검색 결과에 표시되지 않습니다.
반면, Admin > User management > User groups 화면에서는 ADM과 같이 Group Name의 일부만 입력해도 해당 문자열이 포함된 Group들이 정상적으로 검색됩니다.
Alert의 수신자 설정 화면에서도 User groups 관리 화면과 동일하게 Partial Match / Contains 방식의 검색이 가능하도록 개선을 요청드립니다.
예를 들어:
ADMADMIN, ADMINISTRATOR, ADM_ENGINEER 등 ADM을 포함하는 모든 Group즉, Group의 정확한 Full Name을 입력하지 않더라도 검색어가 Group Name에 포함되어 있으면 해당 Group이 검색 결과에 표시되도록 개선되면 좋겠습니다.
당사에서는 AD Manager를 통해 특정 OU 하위에 Role별 Security Group을 구성하여 사용하고 있습니다.
각 Security Group에는 해당 Role을 보유한 구성원의 AD ID가 포함되어 있으며, 따라서 AD에서는 각 사용자가 어떤 Role에 속해 있는지에 대한 정보를 이미 관리하고 있습니다.
현재는 이러한 AD Security Group 정보를 Qlik, Qlik Alerting, Qlik NPrinting에서 직접 활용하기 어려운 것으로 보입니다.
그 결과, 현재는 관리자가 Qlik Alerting에 Role별 User Group을 별도로 생성하고, 인사이동이나 조직변경이 발생할 때마다 각 Group의 구성원을 수동으로 수정해야 합니다.
AD의 Security Group 정보를 Qlik 플랫폼에서 직접 활용할 수 있도록 AD Security Group과 Qlik / Qlik Alerting / Qlik NPrinting 간의 연동 기능을 제공해 주실 것을 요청드립니다.
예를 들어 아래와 같은 방식의 연동을 고려해 주시면 좋겠습니다.
AD Security Group
→ Role별 구성원 관리
→ Qlik / Qlik Alerting / Qlik NPrinting에서 해당 Group 정보 활용
이를 통해 관리자가 각 제품에서 User Group 및 사용자 정보를 개별적으로 관리하지 않고, 회사 AD의 Role 정보를 Single Source of Truth로 활용할 수 있을 것으로 생각합니다.
특히 당사와 같이 Qlik을 Role-based Dashboard 및 Notification Platform으로 활용하는 환경에서는 다음과 같은 기능이 중요합니다.
현재와 같이 관리자가 각 시스템에서 Role 및 사용자를 수동으로 관리하는 방식은 Role 및 사용자 수가 증가할수록 관리 부담과 운영 오류 가능성이 커질 수 있습니다.
따라서 AD Security Group을 Qlik 플랫폼의 User Group과 연계하여 자동으로 동기화할 수 있는 기능을 제공한다면, Enterprise 환경에서 Qlik을 Role 기반으로 운영하는 고객에게 상당히 유용한 기능이 될 것으로 생각합니다.
When you create a new App this is what gets created in the script section:
SET ThousandSep=',';
SET DecimalSep='.';
SET MoneyThousandSep=',';
SET MoneyDecimalSep='.';
SET MoneyFormat='$#,##0.00;-$#,##0.00';
SET TimeFormat='h:mm:ss TT';
SET DateFormat='M/D/YYYY';
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
SET FirstMonthOfYear=1;
SET CollationLocale='en-US';
SET CreateSearchIndexOnReload=1;
SET MonthNames='Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec';
SET LongMonthNames='January;February;March;April;May;June;July;August;September;October;November;December';
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET LongDayNames='Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;Sunday';
SET NumericalAbbreviation='3:k;6:M;9:G;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';
I want to add a line that is basically a $(Must_Include) statement that loads a controlled standard QVS file, that will force our script standards during App creation across all Apps.
What file & location do I need to add this logic?
Qlik Replicate: May 2025 (2025.5.0.247)
Source: IBM DB2 LUW 11.5.9
Target: IBM DB2 (ODBC)
Architecture: Log Stream Staging → Downstream CDC
Background
We are implementing replication for approximately 35 DB2 LUW databases between MAIN and DR using Qlik Replicate Log Stream Staging + downstream CDC.
The requirement is to keep replication ready in both directions. Application traffic will be active on only one server at a time (MAIN or DR), but we need the replication infrastructure to remain synchronized so that traffic can be switched between servers without rebuilding the replication setup.
1. Start from Timestamp
We tried to start a Log Stream Staging task from a specific timestamp using both:
Replicate UI → Advanced Run Options → Start processing changes from Date and Time
Qlik Enterprise Manager (QEM) API
Both return the following error:
"start from timestamp was blocked, when using IBM DB2 LUW as source endpoint, ‘start from timestamp’ is only supported if change was captured after the CDC task started."
Could someone clarify the expected behavior for timestamp-based positioning with DB2 LUW, particularly with a Log Stream Staging → downstream CDC architecture?
2. Log Stream Task Cannot Start
To keep the replication infrastructure ready in both directions, we started the DR → MAIN Log Stream tasks.
For 25 out of 35 databases, we have:
MAIN → DR Log Stream: Running
MAIN → DR CDC: Running
DR → MAIN Log Stream: Running
However, for the remaining 10 databases, the DR → MAIN Log Stream task cannot start. The console only shows:
"Task cannot be started"
There are no additional useful errors in the console.
The affected databases are on the same DB2 server and have the same general configuration as the databases where the tasks are working successfully.
Could someone advise what could cause this behavior for only specific DB2 databases and how we can obtain more detailed diagnostics?
Any guidance on these two issues would be greatly appreciated.
Hi ,
I have created 100+ uni-directional tasks for data replication requirement. Now there is little change in requirement, I also need to replicate data back to source in same tables to keep data sync on both sides. I want to change my tasks to bi-directional. Is there any way I could change exported JSON and then import so tasks become bi-directional. Or will need to create tasks again ?
Please if someone could help me in this.
Thank you
Hi,
We have enabled the "WAL heartbeat" option in the source endpoint’s "Advanced Connection Properties". According to the documentation, this should manage the WAL increase when no activity occurs (classic logical replication issue with PostgreSQL WAL).
However, in our tests, when we stop data injection into the source database, the WAL usage continues to grow indefinitely. Eventually, the replication slot is lost once the "max_slot_wal_keep_size" limit is reached.
No other connection occured on the DB during our test, QlikReplicate's slot is the only connection.
When removing the slot, WAL stay flat around 0.
Root cause analysis lives or dies on chart choice.
Check out this visual reference on the 7 charts built for exactly that, on LinkedIn:
👉 https://www.linkedin.com/posts/antonbaranchuk_root-cause-analysis-charts-in-qlik-power-ugcPost-7486028502102892544-nVvc/
Hi All,
Qlik Sense repository service is consuming full memory in the server and causing node down.
Any idea why would repository service would consume full memory?
Current observation is repository service is gradually consuming full memory in the server. From resource monitor I could see that most memory is consumed while connecting to the dedicated postgres repository database.
Kindly provide any suggestion where should I start checking ?
Thanks.
Hello Qlik Support,
We are experiencing an issue with Qlik Sense Desktop 15.13.14 when opening QVF files directly from a network share.
Environment
Users running Qlik Sense Desktop 15.13.14 receive the following error when opening QVF files directly from the network share:
Based on our testing, this appears to be a regression introduced between versions 15.13.11 and 15.13.14, specifically affecting QVF files stored on network shares.
Could you please advise:
Thank you for your assistance.
Best regards,
Panagiotis Alexandrou
Hi All,
I've noticed that after the reload of today that a lot of records are not loaded in the dashboard.
The selection is the same as the previous days and also the file was available.
This is a part of the log of Yesterday.
I load 2 files in the table.
In the first file are 33,598,635 records.
The second file 56,329,459 - 33,598,635 = 22,730,824 records.
33,598,635 lines fetched
20260903T112456.545+0200 1230 next
20260903T112456.546+0200 1180 let vFile = 'TRX_H_' & 2026 & '.QVD'
20260903T112456.550+0200 1181 concatenate
20260903T112456.550+0200 1182 TRX_H:
20260903T112456.550+0200 1183 LOAD
20260903T112456.550+0200 1184 AutoNumber(TRX_H_TYPE & TRX_H_DTME & TRX_H_DTMJ & TRX_H_DTMM & TRX_H_DTMD & TRX_H_UURT & TRX_H_STNR & TRX_H_REF & TRX_H_SEQ,'Key_TRXD') as Key_TRXD,
20260903T112456.550+0200 1185 AutoNumber(TRX_H_TYPE & TRX_H_DTME & TRX_H_DTMJ & TRX_H_DTMM & TRX_H_DTMD & TRX_H_UURT & TRX_H_STNR & TRX_H_REF & TRX_H_SEQ,'Key_TRXF') as Key_TRXF,
20260903T112456.550+0200 1186
20260903T112456.550+0200 1187
20260903T112456.550+0200 1188
20260903T112456.550+0200 1189
20260903T112456.550+0200 1190
20260903T112456.550+0200 1191 num(makedate(TRX_H_DTME & num(TRX_H_DTMJ,'00'),TRX_H_DTMM,TRX_H_DTMD)) as Datumtransactie,
20260903T112456.550+0200 1192
20260903T112456.550+0200 1193 if(0 = 1,
20260903T112456.550+0200 1194 Applymap('PBY_Map',num(TRX_H_STNR,'00000') & Left(num(TRX_H_REF,'0000000000'),4),num(Today())),
20260903T112456.550+0200 1195 num(makedate(TRX_H_DTME & num(TRX_H_DTMJ,'00') ,TRX_H_DTMM , TRX_H_DTMD))) as DatumNum,
20260903T112456.550+0200 1196
20260903T112456.550+0200 1197
20260903T112456.550+0200 1198 Left(num(TRX_H_UURT,'000000'),2) & ':' & Mid(num(TRX_H_UURT,'000000'),3,2) as Uur_Getankt,
20260903T112456.550+0200 1199
20260903T112456.550+0200 1200 Left(num(TRX_H_UURT,'000000'),2) as Uur,
20260903T112456.550+0200 1201 Left(num(TRX_H_UURT,'000000'),2) & ':' & mid(num(TRX_H_UURT,'000000'),3,2) & ':' & left(num(TRX_H_UURT,'000000'),2) as UurSec,
20260903T112456.550+0200 1202 num(TRX_H_STNR,'00000') as Stationnummer,
20260903T112456.550+0200 1203
20260903T112456.550+0200 1204
20260903T112456.550+0200 1205
20260903T112456.550+0200 1206 if(TRX_H_SHF=0, 'Terminal', TRX_H_SHF) as Shift_Id,
20260903T112456.550+0200 1207 TRX_H_STNR & '-' & if(len(trim(TRX_H_OPID)) = 0 or TRX_H_OPID = ' ' ,'Terminal', trim(TRX_H_OPID)) as Operator_Id,
20260903T112456.550+0200 1208 if(len(trim(TRX_H_OPID)) = 0 or TRX_H_OPID = ' ' ,'Terminal', 'Shop') as Terminal_Shop,
20260903T112456.550+0200 1209
20260903T112456.550+0200 1210
20260903T112456.550+0200 1211
20260903T112456.550+0200 1212
20260903T112456.550+0200 1213 TRX_H_CUST as KeyCust,
20260903T112456.550+0200 1214 if(len(trim(TRX_H_ID)) > 0,TRX_H_ID, TRX_H_PAN) as Firmakaart,
20260903T112456.550+0200 1215 'KL' & num(TRX_H_CUST,'00000') as Klant_Lev_Nummer,
20260903T112456.550+0200 1216 applymap('KLANT_MAP', 'KL' & num(TRX_H_CUST,'00000'),'UNKNOWN') as Klant_Naamtest,
20260903T112456.550+0200 1217 TRX_H_PAN,
20260903T112456.550+0200 1218
20260903T112456.550+0200 1219 TRX_H_ODO as Km_Stand,
20260903T112456.550+0200 1220
20260903T112456.550+0200 1221 TRX_H_CARR as Plaatnummer,
20260903T112456.550+0200 1222 TRX_H_TTNA as TRXHTotal
20260903T112456.550+0200 1223 FROM
20260903T112456.550+0200 1224 [..\03_QVD\TRX_H_2026.QVD]
20260903T112456.550+0200 1225 (qvd)
20260903T112456.550+0200 1226 where num(makedate(TRX_H_DTME & num(TRX_H_DTMJ,'00'), TRX_H_DTMM,TRX_H_DTMD)) >= 45658 and len(trim(TRX_H_STNR)) > 0 and TRX_H_STNR <= '1000'
20260903T112456.555+0200 19 fields found: Key_TRXD, Key_TRXF, Datumtransactie, DatumNum, Uur_Getankt, Uur, UurSec, Stationnummer, Shift_Id, Operator_Id, Terminal_Shop, KeyCust, Firmakaart, Klant_Lev_Nummer, Klant_Naamtest, TRX_H_PAN, Km_Stand, Plaatnummer, TRXHTotal,
20260903T114353.975+0200 56,329,459 lines fetched
This is the a part of the log of the reload of today.
Also in the first file I have less records then the day before (it should be more)
And in the second file I have almost no records loaded.
30,883,385 lines fetched
20260904T062431.542+0200 1230 next
20260904T062431.559+0200 1180 let vFile = 'TRX_H_' & 2026 & '.QVD'
20260904T062431.590+0200 1181 concatenate
20260904T062431.590+0200 1182 TRX_H:
20260904T062431.590+0200 1183 LOAD
20260904T062431.590+0200 1184 AutoNumber(TRX_H_TYPE & TRX_H_DTME & TRX_H_DTMJ & TRX_H_DTMM & TRX_H_DTMD & TRX_H_UURT & TRX_H_STNR & TRX_H_REF & TRX_H_SEQ,'Key_TRXD') as Key_TRXD,
20260904T062431.590+0200 1185 AutoNumber(TRX_H_TYPE & TRX_H_DTME & TRX_H_DTMJ & TRX_H_DTMM & TRX_H_DTMD & TRX_H_UURT & TRX_H_STNR & TRX_H_REF & TRX_H_SEQ,'Key_TRXF') as Key_TRXF,
20260904T062431.590+0200 1186
20260904T062431.590+0200 1187
20260904T062431.590+0200 1188
20260904T062431.590+0200 1189
20260904T062431.590+0200 1190
20260904T062431.590+0200 1191 num(makedate(TRX_H_DTME & num(TRX_H_DTMJ,'00'),TRX_H_DTMM,TRX_H_DTMD)) as Datumtransactie,
20260904T062431.590+0200 1192
20260904T062431.590+0200 1193 if(0 = 1,
20260904T062431.590+0200 1194 Applymap('PBY_Map',num(TRX_H_STNR,'00000') & Left(num(TRX_H_REF,'0000000000'),4),num(Today())),
20260904T062431.590+0200 1195 num(makedate(TRX_H_DTME & num(TRX_H_DTMJ,'00') ,TRX_H_DTMM , TRX_H_DTMD))) as DatumNum,
20260904T062431.591+0200 1196
20260904T062431.591+0200 1197
20260904T062431.591+0200 1198 Left(num(TRX_H_UURT,'000000'),2) & ':' & Mid(num(TRX_H_UURT,'000000'),3,2) as Uur_Getankt,
20260904T062431.591+0200 1199
20260904T062431.591+0200 1200 Left(num(TRX_H_UURT,'000000'),2) as Uur,
20260904T062431.591+0200 1201 Left(num(TRX_H_UURT,'000000'),2) & ':' & mid(num(TRX_H_UURT,'000000'),3,2) & ':' & left(num(TRX_H_UURT,'000000'),2) as UurSec,
20260904T062431.591+0200 1202 num(TRX_H_STNR,'00000') as Stationnummer,
20260904T062431.591+0200 1203
20260904T062431.591+0200 1204
20260904T062431.591+0200 1205
20260904T062431.591+0200 1206 if(TRX_H_SHF=0, 'Terminal', TRX_H_SHF) as Shift_Id,
20260904T062431.591+0200 1207 TRX_H_STNR & '-' & if(len(trim(TRX_H_OPID)) = 0 or TRX_H_OPID = ' ' ,'Terminal', trim(TRX_H_OPID)) as Operator_Id,
20260904T062431.591+0200 1208 if(len(trim(TRX_H_OPID)) = 0 or TRX_H_OPID = ' ' ,'Terminal', 'Shop') as Terminal_Shop,
20260904T062431.591+0200 1209
20260904T062431.591+0200 1210
20260904T062431.591+0200 1211
20260904T062431.591+0200 1212
20260904T062431.591+0200 1213 TRX_H_CUST as KeyCust,
20260904T062431.591+0200 1214 if(len(trim(TRX_H_ID)) > 0,TRX_H_ID, TRX_H_PAN) as Firmakaart,
20260904T062431.591+0200 1215 'KL' & num(TRX_H_CUST,'00000') as Klant_Lev_Nummer,
20260904T062431.591+0200 1216 applymap('KLANT_MAP', 'KL' & num(TRX_H_CUST,'00000'),'UNKNOWN') as Klant_Naamtest,
20260904T062431.591+0200 1217 TRX_H_PAN,
20260904T062431.591+0200 1218
20260904T062431.591+0200 1219 TRX_H_ODO as Km_Stand,
20260904T062431.591+0200 1220
20260904T062431.591+0200 1221 TRX_H_CARR as Plaatnummer,
20260904T062431.591+0200 1222 TRX_H_TTNA as TRXHTotal
20260904T062431.591+0200 1223 FROM
20260904T062431.591+0200 1224 [..\03_QVD\TRX_H_2026.QVD]
20260904T062431.591+0200 1225 (qvd)
20260904T062431.591+0200 1226 where num(makedate(TRX_H_DTME & num(TRX_H_DTMJ,'00'), TRX_H_DTMM,TRX_H_DTMD)) >= 45658 and len(trim(TRX_H_STNR)) > 0 and TRX_H_STNR <= '1000'
20260904T062431.629+0200 19 fields found: Key_TRXD, Key_TRXF, Datumtransactie, DatumNum, Uur_Getankt, Uur, UurSec, Stationnummer, Shift_Id, Operator_Id, Terminal_Shop, KeyCust, Firmakaart, Klant_Lev_Nummer, Klant_Naamtest, TRX_H_PAN, Km_Stand, Plaatnummer, TRXHTotal,
20260904T062456.643+0200 31,170,105 lines fetched
Who has an idea why he is not loading all data?
The data is the transaction header out of a shop. So every day there should be more records.
If I doe now a reload of the trx_h_2026 with the same selections in my desktop, this is the result.
Who can help me with this?
Here’s your agentic AI readiness check. (Got Qlik? You're closer than you think.)
Walk through six new AI capabilities now generally available in Qlik and start applying agentic data engineering to your team’s workflows.
Set your course for six weeks of expert-led sessions on data, analytics, and AI — available on demand.
Built for the builders: Modern data engineering is AI powered — and engineer led.
The pilot-to-production gap is real. From fragmented data to governance gaps Qlik and AWS break down what’s holding your enterprise AI back — and how to solve them.
Your journey awaits! Join us by Logging in and let the adventure begin.