Sie wollten schon immer wissen, wie Qlik Sense beim Laden von Daten vorhandene Geo-Strukturen erkennt? In diesem Beitrag werfe ich einen Blick hinter die Kulissen von Qlik Sense und zeige auf, wie der Automatismus funktioniert. Dieser sorgt dafür, dass Ortschaften und Länder in den Daten automatisch als Geo-Informationen markiert werden. Womit Geo-Visualisierungen ermöglicht werden, ohne zusätzliche Datentransformationen.
Qlik Sense und Geo-Informationen
Wer bereits eine ältere Version von Qlik Sense (1.x bzw. 2.x) für Geo-Visualisierungen verwendete, fand bereits darin das native Kartenobjekt. Um darin Geo-Auswertungen darzustellen, mussten im Skript von Qlik Sense die Geo-Daten entsprechend manuell markiert werden. Für ungeübte Benutzer etwas umständlich und stellenweise zu technisch, aber man gelangte so ans Ziel. Während bis und mit der aktuellen Version von Qlik Sense (June 2017) am Kartenobjekt seither wenig vom Hersteller verändert wurde, hat sich im Hintergrund einiges getan: Neu erledigt ein Automatismus die Kennzeichnung von Geo-Strukturen (Ortschaften und Länder-Bezeichnungen) ohne zusätzliche, manuellen Eingriffe oder Transformationen durch den Anwender. Anhand eines Beispiels zeige ich auf, wie dies in Qlik Sense funktioniert. Die Beispieldatei sowie die Quelldaten können Sie sich am Ende des Beitrages herunterladen.
Quelldaten mit Geo-Strukturen
Zunächst benötigen wir eine Datenquelle mit vorhandenen Geo-Daten, dich ich mittels Drag & Drop in eine neue Qlik Sense App hineinziehe. Als Beispiel verwenden wir eine Excel-Datei mit Umsätzen je Ortschaft. Die Verwendung einer MS SQL- oder Oracle-Datenbank wäre ohne Weiteres ebenfalls möglich.
Datenquelle mit Ortschaften und Umsatzwerten |
Ziel ist es, dass Qlik Sense die Inhalte der Spalte "Ort" automatisch als Geo-Punkt erkennt, ohne dass eine manuelle Interaktion stattfindet und ohne Zusatzangaben in der Datenquelle oder im Skript. Um den Automatismus auszulösen, klicke ich auf den grünen Button "Add data" unten rechts.
Laden von Daten mit Geo-Strukturen |
In der anschliessenden "Tables"-Übersicht wird die geladene Tabelle "Sheet1" jetzt als Karteikarte angezeigt. In dieser können Daten weiter manipuliert werden. Was für unseren Zweck jedoch nicht notwendig ist, da im blauen Balken der Karteikarte bereits das Welt-Symbol erkennbar ist - das Zeichen, dass der Automatismus von Qlik Sense erfolgreich war und die Geo-Daten erkannt wurden. Da Qlik Sense zu diesem Zeitpunkt nur auf die Metadaten der Quelle zugreift, verwende ich den grünen Butten "Load data" oben rechts um auch die Dateninhalte der Excel-Datei in die Qlik Sense App zu laden.
Automatisches Erkennen von Geo-Strukturen in Quelldaten |
Automatisch erkannte Geo-Strukturen visualisieren
Nun beginne ich die Daten in der Oberfläche von Qlik Sense zu visualisieren: Der obere Bereich des nachfolgenden Bildes zeigt vier Ortschaften mit den jeweiligen Umsätzen in einem Balken- und Tabellenobjekt. Im unteren Bereich befindet sich das native Kartenobjekt von Qlik Sense mit den Geo-Punkten. Wer genau hinsieht wird den fehlenden Datenpunkt "Neuhausen" entdecken. Zu diesem Zeitpunkt soll uns das aber nicht weiter kümmern.
Geo-Visualisierung der Messgrösse "Umsatz" |
Wir stellen fest: Qlik Sense erkennt die Werte des Feldes "Ort" automatisch als Geo-Struktur, ohne manuelles Zutun: Das Feld "Ort" wurde als "Point layer" qualifiziert, was die Punkt-Darstellung auf der Karte erlaubt.
Automatisch erstellter "Point layer" auf Basis von Geo-Daten |
Was steckt hinter dem Automatismus der Geo-Daten-Erkennung?
Um herauszufinden wo und wie der Automatismus greift, hilft ein Blick in den "Data load editor" von Qlik Sense. Hier werden die manuell sowie automatisch erstellten Script-Befehle gespeichert. Das automatisch erstellte Script wurde im Beispiel nach dem Klicken auf den Button "Load Data" generiert und in einem gesperrten Bereich mit der Bezeichnung "Auto-generated section" gespeichert. Interessant ist der Abschnitt zwischen Zeile 19 und 57: Hier referenziert Qlik Sense u.a. auf qvd-Dateien mit den Bezeichnungen "cityAliases.qvd" und "cityGeo.qvd". Noch interessanter ist das Fehlen einer "Data connection". Rechts im Bild ist nur "Desktop" ersichtlich, also jene Verbindung, die automatisch erstellt wurde als ich zu Beginn mit Drag & Drop die Excel-Datei in die Qlik Sense App geladen hatte. Hier verwendet Qlik offenbar eine versteckte Funktion um die Datenverbindungen auszublenden. Im Hintergrund ist diese aber vorhanden, da ein erneutes Laden problemlos funktioniert.
Automatisch erstelltes Script für die Kennzeichnung von Geo-Daten |
Die Suche nach den relevanten qvd-Dateien führt uns - bei der Verwendung von Qlik Sense Desktop- in den folgenden Ordner: "C:/Users/%username%/AppData/Local/Programs/Qlik Sense/DataPrepService/src/geo". Bei Qlik Sense Enterprise liegen die Dateien hier: C:/Program Files/QlikSense/DataPrepService/src/geo.
Neben den zwei erwähnten qvd-Dateien befinden sich im Ordner weitere Geo-relevanten Dateien, so auch die Geo-Koordinaten für alle Länder..
Basis-Dateien für automatische Erkennung von Geo-Strukturen in Qlik Sense |
Wer genauer wissen möchte wie Qlik Sense Geo-Strukturen in Daten identifiziert, wirft am Besten einen Blick in die ebenfalls im Geo-Ordner vorhandenen JavaScript- und JSON-Dateien. Für jene, die es weniger technisch mögen, reicht auch das Öffnen der beiden qvd-Dateien "cityAliases" und "cityGeo". Hier erkennen wir die im Skript automatisch generierten Mapping-Tabellen mit den benötigten Geo-Codierungen. Die einzelnen Felder der jeweiligen qvd-Dateien finden Sie hier nochmals aufgelistet im Detail:
Datei | Feld | Bedeutung |
cityAliases.qvd | Alias | Bezeichnungen von Ortschaften in unterschiedlichen Sprachen |
geoKey | Eindeutiger Code je Ortschaft | |
CountryCode | Ländercode - hier gefiltert auf "CHE" (Schweiz) | |
cityGeo.qvd | geoKey | Eindeutiger Code je Ortschaft - derselbe wie oben |
geoPoint | Längengrad und Breitengrad als zusammengesetzter Wert | |
CityName | Primär-Bezeichnung der Ortschaft |
Geo-Referenzdaten für Ortschaften in Qlik Sense |
Auflösung
Nun ist klar, wie Qlik Sense Geo-Strukturen wie Ortschaften und Länder automatisch erkennt: Die Quelldaten werden während des Ladeprozesses im Skript den im Standard ausgelieferten Geo-Referenzdaten gegenübergestellt. Findet eine Übereinstimmung statt, markiert Qlik Sense den Datensatz bzw. den Feldwert als Geo-relevant und erlaubt so die Geo-Visualisierung ohne zusätzliche manuelle Interaktion.
Kritik
Die mit Qlik Sense ausgelieferten Referenzdaten enthalten etwas über 23'000 Ortschaften sowie über 250 Länder, mehrsprachig und mit vordefinierten Längen- und Breitengraden. Für die Schweiz stehen jedoch nur etwas mehr als 80 Ortschaften zur Verfügung. Diese geringe Anzahl wird für produktive Verwendungszwecke kaum ausreichen. Es bleibt die Hoffnung, dass in künftigen Versionen von Qlik Sense der Umfang erhöht wird.
Oder man hilft sich selber und macht sich die sehr nützliche Erkennung von Geo-Daten in Qlik Sense zu Nutze...
Ausblick
Sie erinnern sich an die oben erwähnte Ortschaft «Neuhausen», die von Qlik Sense nicht erkannt wurde? Die Referenzdaten lassen sich über einen kleinen Umweg problemlos individuell ergänzen. Einerseits können so zusätzliche Ortschaften mit Geo-Koordinaten ergänzt werden. Andererseits lassen sich in Qlik Sense beliebige Geo-Koordinaten unterschieben, sodass der Anwendungsfall von Ländern und Ortschaften beliebig erweitert werden kann.