Implementing version control for Qlik Sense - Layouts
Auf QlikFix ist ein netter Artikel erschienen wie man die Qlik Sense Skripte versionieren kann. Außen vor gelassen wurde aber das Thema, wie man seine Qlik Sense Layouts in sein Versioningtool einchecken kann, ohne das es explodiert.
Das Problem ist, dass Qlik die Dashboarddefinition & das Datensegment in einem großen, binärem File speichert. Auch wenn Ihre Balkendiagramme, Pivottabellen und Geodarstellungen nur ein paar Megabyte benötigen - bei Dashboards mit einigen Millionen Datensätze ist das interne File gerne einige hundert Megabyte oder auch einige Gigabyte groß. Das tut natürlich weh, wenn man diese Dateien in das Versioning System bringen will.
Seit einigen Versionen erlaubt Qlik Sense zumindest die Applikation ohne Datensegment zu exportieren, womit die Qlik Dashboards nur noch einige Megabyte groß sind.
Zwar ist das exportierte .qvf weiter ein binäres File (für Vergleiche also nur bedingt nutzbar), aber mit dieser Größe lässt es sich besser in Git und Konsorten zwecks Historisierung hinzufügen. Auch für Backups sind diese Dateien komfortabler, weil die Daten normalerweise aus der Quelle oder aus .qvds sowieso wiederhergestellt werden können.
Leider erlaubt die QMC immer nur einzelne Qlik Sense Dashboards zu exportieren. Um den Vorgang also zu Automatisieren, bietet sich ein Blick in die Repository APIs an.
Wer sich nicht selbst ein Tool bauen kann oder will, dem ist mit dem Qlik-Cli Powershell Tool sehr geholfen. Unterhalb eine Beschreibung wie man damit automatisiert alle Dashboards ohne Daten aus der QMC exportieren kann:
Mit einer aktuellen Powershell 5 bitte die Anleitung hier beachten.
Qlik-Cli bietet viele andere Funktionen die nicht Teil dieses Blogposts sind, ein Blick in die Hilfe könnte aber interessant sein.
Für uns relevant ist die Funktion export-qlikapp mit dem Parameter -SkipData
Setzen wir den Parameter, werden die Qlik Sense Applikationen ohne Datensegment exportiert.
Wer sich für den Powershell Code interessiert, findet diesen unter C:\Program Files\WindowsPowerShell\Modules\Qlik-Cli\1.14.1\resources\app.ps1
Ich habe einige Debug Statements ergänzt, und dann das Modul mit "import-module Qlik-Cli" neu geladen.
Das eigentliche Exportieren lässt sich jetzt mit der Get-QlikApp Funktion kombinieren. Dort kann man alle relevanten Apps auf einmal filtern, und dann mit einer Pipe an die Export-QlikApp -Skipdata übergeben.
Wie man am Screenshot sieht, entstehen mit dem Befehl alle Qlik Sense Apps aus dem "Everyone" Stream. Die meisten sind zwischen 0.5 und 5 Megabyte. Die Applikation mit 15 Megabyte dürfte einiges an .kml-Dateien direkt enthalten, und ist entsprechend größer.
Andere Beispiele um Applikationen zu exportieren sind:
Export App by name
Get-QlikApp -filter "Name eq 'Operations Monitor'" | Export-QlikApp -Skipdata
Export all Apps of a Stream
Get-QlikApp -filter "stream.name eq 'Everyone'" | Export-QlikApp -Skipdata
Export all Apps of a specific user starts with qlikfinance
Get-QlikApp -filter "owner.name sw 'qlikfinance'" | Export-QlikApp -Skipdata
Welche Filter Sie an die "Get-Qlik" Funktion übergeben können finden Sie unter:
https://help.qlik.com/en-US/sense-developer/September2018/Subsystems/RepositoryServiceAPI/Content/Sense_RepositoryServiceAPI/RepositoryServiceAPI-Filtering.htm
https://community.qlik.com/t5/Qlik-Sense-Integration/QRS-API-Filtering/m-p/895398
Das Problem ist, dass Qlik die Dashboarddefinition & das Datensegment in einem großen, binärem File speichert. Auch wenn Ihre Balkendiagramme, Pivottabellen und Geodarstellungen nur ein paar Megabyte benötigen - bei Dashboards mit einigen Millionen Datensätze ist das interne File gerne einige hundert Megabyte oder auch einige Gigabyte groß. Das tut natürlich weh, wenn man diese Dateien in das Versioning System bringen will.
Seit einigen Versionen erlaubt Qlik Sense zumindest die Applikation ohne Datensegment zu exportieren, womit die Qlik Dashboards nur noch einige Megabyte groß sind.
Zwar ist das exportierte .qvf weiter ein binäres File (für Vergleiche also nur bedingt nutzbar), aber mit dieser Größe lässt es sich besser in Git und Konsorten zwecks Historisierung hinzufügen. Auch für Backups sind diese Dateien komfortabler, weil die Daten normalerweise aus der Quelle oder aus .qvds sowieso wiederhergestellt werden können.
![]() |
Diesen Haken herausnehmen, dann hat das Dashboard nur wenige Megabyte |
Leider erlaubt die QMC immer nur einzelne Qlik Sense Dashboards zu exportieren. Um den Vorgang also zu Automatisieren, bietet sich ein Blick in die Repository APIs an.
Wer sich nicht selbst ein Tool bauen kann oder will, dem ist mit dem Qlik-Cli Powershell Tool sehr geholfen. Unterhalb eine Beschreibung wie man damit automatisiert alle Dashboards ohne Daten aus der QMC exportieren kann:
Mit einer aktuellen Powershell 5 bitte die Anleitung hier beachten.
![]() |
Load Qlik-Cli |
Qlik-Cli bietet viele andere Funktionen die nicht Teil dieses Blogposts sind, ein Blick in die Hilfe könnte aber interessant sein.
![]() |
get-help Qlik |
Für uns relevant ist die Funktion export-qlikapp mit dem Parameter -SkipData
Setzen wir den Parameter, werden die Qlik Sense Applikationen ohne Datensegment exportiert.
![]() |
get-help export-qlikapp |
Wer sich für den Powershell Code interessiert, findet diesen unter C:\Program Files\WindowsPowerShell\Modules\Qlik-Cli\1.14.1\resources\app.ps1
Ich habe einige Debug Statements ergänzt, und dann das Modul mit "import-module Qlik-Cli" neu geladen.
Das eigentliche Exportieren lässt sich jetzt mit der Get-QlikApp Funktion kombinieren. Dort kann man alle relevanten Apps auf einmal filtern, und dann mit einer Pipe an die Export-QlikApp -Skipdata übergeben.
Wie man am Screenshot sieht, entstehen mit dem Befehl alle Qlik Sense Apps aus dem "Everyone" Stream. Die meisten sind zwischen 0.5 und 5 Megabyte. Die Applikation mit 15 Megabyte dürfte einiges an .kml-Dateien direkt enthalten, und ist entsprechend größer.
Andere Beispiele um Applikationen zu exportieren sind:
Export App by name
Get-QlikApp -filter "Name eq 'Operations Monitor'" | Export-QlikApp -Skipdata
Export all Apps of a Stream
Get-QlikApp -filter "stream.name eq 'Everyone'" | Export-QlikApp -Skipdata
Export all Apps of a specific user starts with qlikfinance
Get-QlikApp -filter "owner.name sw 'qlikfinance'" | Export-QlikApp -Skipdata
Welche Filter Sie an die "Get-Qlik" Funktion übergeben können finden Sie unter:
https://help.qlik.com/en-US/sense-developer/September2018/Subsystems/RepositoryServiceAPI/Content/Sense_RepositoryServiceAPI/RepositoryServiceAPI-Filtering.htm
https://community.qlik.com/t5/Qlik-Sense-Integration/QRS-API-Filtering/m-p/895398