Das Ziel eines jeden Entwicklers ist es so wenig wie möglich, soviel wie nötig zu wiederholen.
Dazu zählt auch das kopieren von Formeln. In QlikSense ist es schon einiges einfacher geworden, da die Masterelemente erstellt wurden. Da diese aber nicht immer eingesetzt werden können, ist es noch nicht die Lösung.
Darum habe ich mir gedanken gemacht und bin auf die These gekommen, dass eine Kombination von extern verwalteten Variablen und den Masterelementen aktuell eine der besten Lösungen ist.
Wie kann das nun realisiert werden, wenn ihr das QDF einsetzt, das empfehle ich euch auch, gibt es dort eine CSV File Struktur die ihr nutzen könnt um die Variablen auszulagern. Wie das geht schaut am bestem beim Qlik Deplyoment Framework nach.
Für alle anderen empfehle ich die Variablen in eine QVS Datei auszulagern und dann mit dem Visual Studio Code (VSC) und dem Qlik Plugin zu bearbeiten. Durch das Plugin, wird die Syntax erkennt. Alles ist OpenSource und daher meistens einsetzbar.
Wie löse ich das Problem aber nun genau?
- das ist einfach, ich erstelle mir einen Ordner auf dem QlikSense Server, am Besten dort wo die QVD's abgelegt werden.
- Den Ordner nenne ich Scripts.
- In dem Ordner erstelle ich eine Datei mit dem Namen Header.qvs, Ziel dieser Datei ist, dass ich nur einen Include machen muss in meinen Apps, alle anderen Script-Dateien werden in der Datei eingefügt.
- Im Ordner Scripts werden weitere Unterordner erstellt, je nach belieben und Verwendung, muss aber nicht sein. Wichtig ist, dass jetzt eine neuen Datei erstellt wird, Variablen.QVS
- In der Datei Variablen.QVS füge ich die einzelnen Variablen wie folgt ein:
set vL.testVariable= 'count( {<Payments1.BlgNr={"722111"}>} [Payments1.AccID])';
set vL.testVariable= "count( {<Payments1.BlgNr={'722111'}>} [Payments1.AccID])";
Wichtig ist, dass je nach dem ob in der Formel einfache oder doppelte Anführungszeichen verwendet werden das andere für den Text werden werden muss!
Ob die Variable LET oder SET hat ist nicht so relevant für den Script, aber sehr relevant für die Variable! - Datei speichern
- Folgenden Befehl in die Header.qvs einfügen
$(Must_Include =Variablen.qvs ) //Wenn die Header.qvs und die Variablen.qv im selben Ordner sind
$(Must_Include =./MeinSubOrdner/Variablen.qvs ) //Wenn die Header.qvs und die Variablen.qv nicht im selben Ordner sind, MeinSubOrdner durch den korrekten Ordner erfassen. - Falls ihr keine Header.qvs verwenden wollt, könnt ihr den Include-Befehl auch direkt in der App machen
Falls die Heder Datei zum Einsatz kommt, kommt der Include Befehl $(Must_Include =<LIB und Pfad zum Script-Folder>Header.qvs ) in die App rein.
<LIB und Pfad zum Script-Folder> da ich nicht weis wie eure LIB heisst, diese hier eintragen und den PFad ab dem Lib-Folder bis zum Script-Ordner erfassen. Das könnte so aussehen: LIB://Files\Scripts\Header.qvs
So sollten die Variablen zentral angelegt und verwaltet werden können. Und in jeder App wieder zur Verfügung stehen.
Hinweise
- Zu viele Variablen verlangsamen QlikSense und QlikView
- überlegt gut was im Header alles includiert wird, zum Teil wird auch nicht immer alles benötigt.
Eventuell mit Parametern Steuern was alles rein soll oder mehrere Header Files machen.
Fazit
Dieser Ansatz kann sehr hilfreich sein, da die Variablen nur einmal gepflegt werden müssen. Das kann aber auch genau das Problem werden, da nicht mehr bekannt ist wo die Variable alles verwendet wird, ist eine Anpassung nicht mehr so einfach.
Grudndsätzlich finde ich aber das Auslagern von Variablen in eine externe Datei immer sehr gut, da es mehr Übersicht verschaft und die Wartung der App etwas einfacher wird.
Einer der besten Ansätze finde ich nach wie vor im Qlik Deployment Framework umgesetzt worden, dort kann ich eine einfache CSV- Datei bearbeiten und die Variablen, ein Label und ein Kommentar einfügen. Das laden einer solchen Datei wird dann durch eine Funktion des QDF's sehr vereinfacht.