Qlik Sense ermöglicht uns, das Analysieren & Visualisieren von Daten. Mit der Open Source Software Apache Airflow können wir Qlik Sense Apps in SaaS laden und aktualisieren.
Aktuell haben wir in Qlik Sense SaaS immer noch zwei grosse Herausforderungen – die erste ist das Fehlen einer Möglichkeit, Ladeketten zu erstellen: Wir können einzelne Applikationen manuell laden oder auf einen bestimmten Zeitpunkt terminieren – bspw. täglich, wöchentlich, monatlich oder jährlich. Allerdings ist es bei der aktuellen Version nicht möglich ist, eine Ladekette zu implementieren und mehrere Apps hintereinander, also jeweils nach dem Abschluss der jeweils vorherigen zu laden resp. das Skript auszuführen – so wie wir das von QlikView oder Qlik Sense Enterprise über die QMC (Qlik Management Console) kennen.
Hier bietet das Open-Source-Projekt Apache Airflow in der aktuellsten Version 2.0 eine elegante Lösung: Es ermöglicht die Erstellung von Ladeketten, die mehrere Apps nacheinander oder parallel laden. Um dies zu demonstrieren, haben wir ein Beispiel erstellt: Die Implementierung wurde auf Microsoft Azure gemacht und benötigt:
- ein FileShare, wo die Daten (DAG, Config, Log) abgespeichert werden
- eine Datenbank, wo wir PostgreSQL einsetzen
- ein Docker Compose File mit Docker Images, wo wir die schlussendlich über die einen App-Plan und eine einzelne App-Service implementiert haben
Die Datenbank kann aktuell mit der Ladekette sehr schlank betrieben werden, sprich mit einem Core und 5 GB Speicher. Das ist natürlich kein sehr grosses Projekt, aber auch grössere Projekte sind kein Problem, da die Datenbank webbasiert in der Cloud liegt und damit nach Bedarf skaliert werden kann.
Das Ausführen des Apache Airflow Webserver erfolgt direkt über eine URL: Nach der Anmeldung in der Input-Maske von Apache Airflow (mit Username und Passwort) werden die Graphen angezeigt (directed acyclic graphs, DAGs).
Hier erscheint auch unser Beispiel, das vier Applikationen in einer Ladekette verknüpft.
Wenn man den DAG einschaltet, wird vorkonfiguriert alle 10 Minuten neu gestartet.
Im GraphView ist der genaue Zusammenhang zwischen diesen Applikationen erkennbar. Dazu kann man während des Ladevorgangs ins Log schauen und prüfen, wo sich der Job aktuell befindet.
Hier im Screenshot sichtbar: Der Job wurde erfolgreich in Qlik Sense SaaS erstellt. Er wird jedoch für ca. 10 Sekunden "gequeued", dann folgt das erfolgreiche Reloading. Ebenfalls sichtbar ist, was im Script ausgeführt wurde.
Wechselt man zu diesem Zeitpunkt nach Qlik, ist sichtbar, dass diese Applikationen durchlaufen wird und auch schlussendlich upgedated. Hier wurde soeben die App 4 erfolgreich geladen:
Geht man zurück zu Apache Airflow, in die Pipeline, so wird angezeigt, ob alles erfolgreich war und wie es zeitlich ausgesehen hat – also den zeitlichen Ablauf der Ladeketten, hier im Gantt-Chart dargestellt:
Beim Laden gibt es zwei Möglichkeiten:
- via Scheduler, also mit der Definition, wie oft es geladen werden soll
- manuell, über den Button [Trigger DAG]
Der Vorteil von diesen Pipelines ist, dass dies alles im Code definiert ist:
- die Einstellungen jedes Jobs,
- das Intervall (identisch mit der Syntax von Cron Jobs, die sehr viel Flexibilität bietet; alternativ ist auch ein Intervall z.B. @hourly möglich),
- die Beschreibung aller Ladejobs mit QlikSense Saas Tenant URL, API Key und der Applikations-ID
- die Pipeline, die die parallele oder aufeinanderfolgende Ausführung der Apps definiert
Dabei können alle sicherheitsrelevanten Variablen wie die URL und der API Key über das Admin-Menü abgelegt und verschlüsselt verwendet werden. Damit sind sie für die normalen Benutzer nicht einsehbar.
Apropos, Apache Airflow ermöglicht auch das Hinzufügen verschiedener Benutzer mit bestimmten vordefinierten Rollen. Neben dem Admin gibt es auch Personen mit reinem Leserecht, die bspw. nur den aktuellen Status prüfen können.
So sieht also die Lösung aus, die Apache Airflow zur Erstellung von Ladeketten bietet.
Die zweite grosse Herausforderung, wie eingangs angesprochen, ist der Datenupload, der bei Qlik Sense SaaS sehr limitierend ist. Für On-Premise-Daten ist der Upload zurzeit nur über Qlik Transfer möglich, der die Daten in den jeweiligen Space kopiert. Dort können sie verwendet werden, wobei das Löschen oder Modifizieren der Daten jedoch sehr umständlich ist.
Eine Alternative hierzu ist es, das Compose File mit den Docker Image von Apache Airflow nicht in der Cloud zu verwenden, sondern im lokalen Netzwerk auf einem Server/Workstation zu betreiben. Dadurch ist es möglich, Daten über Apache Airflow auf einen bestimmten Storage Account zum Beispiel von Azure, Google, Amazon hochzuladen und diese dann schlussendlich über diesen Storage in Qlik Sense zu verwenden. Zur Auswahl stehen aktuell Azure Storage, Amazon S3 und auch Google Cloud Storage.
Mit der Verwendung von Apache Airflow lässt sich also der ganze Daten-Pfad abbilden, das heisst, man kann die Daten aus einer Datenbank oder einem FileShare auf die Cloud-Umgebung hochladen, dort zwischenspeichern und von dort eine Verbindung in Qlik Sense SaaS machen und diese in allen Spaces verwenden.
Dies aber nur als Inspiration zu den Möglichkeiten von Apache Airflow.
Sie sind noch unsicher oder haben Fragen? Dann stehen wir Ihnen für ein unverbindliches Gespräch gerne zur Verfügung.