blog_Hero.jpg
Veröffentlicht von       Daniel Brühlmeier

Apache Airflow & Qlik Sense SaaS: Ladeketten & On-Premise Datenupload

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.

 

microsoft_azure_postgresql_2
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).

apache_airflow_dags-1

 

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.

 

apache_airflow_graphview

 

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.

 

apache_airflow_dag_log1_2

 

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.

 

apache_airflow_dag_qlik_script
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:

 

qliksense_reload_app4

 

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:

 

qlik_saas-tenant

 

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]

 

apache_airflow_dag_trigger


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

 

apache_airflow_dag_code_2
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.

 

apache_airflow_variables_2

 

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.

 

apache_airflow_roles
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.

 

qliksense_space_datafiles-1

 

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.

qliksense_data_connection_file_location
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.

Kontaktieren Sie uns jetzt >>

 

Daniel Brühlmeier

Daniel Brühlmeier

Daniel Brühlmeier ist ein Informatik Ingenieur mit einer Weiterbildung in Data Science. Dank seinem technischen Detailwissen und seiner geschätzten Gabe, genügend Flughöhe zu halten, ist er ein Garant für erfolgreiche Data Projekte.

VERWANDTE BEITRAGE