Lektion 11 – komplexere Datenpräsentation

Übersicht

In dieser Lektion lernen wir komplexere Datendiagramme kennen, welche sich allerdings sehr gut zur „gruppenübergreifenden“ Analyse eignen.

Trellis

Trellis Diagramme dienen die gleiche Visualisierung mit einer Einheitlichen Skala nach verschiedenen Kategorien zu visualisieren.

Screenshot 2015-03-31 21.12.50

Sie können dabei selbst entscheiden welche Dimension Sie „unterscheiden“ wollen.

Screenshot 2015-03-31 21.54.50

Unter den erweiterten Optionen können Sie hier auch die Anzahl pro Spalte und Zeile fest definieren.

 Tabellen mit bedingter Formatierung

Achtung, diese Darstellungen gehen NUR im Diagrammtyp „Tabelle“!

Screenshot 2015-03-31 21.13.02

Diese Art der Darstellung hat sich in der Praxis „ausschließlich“ für Power-User als praktikabel erwiesen. Ansonsten ist die Informationsdichte so hoch, dass man sich keinen Überblick verschaffen kann.

 Sparklines

Auch NUR im Diagrammtyp „Tabelle“ möglich. Ausnahme: In einer Listbox können Sie auch diese sogenannten „MINIDIAGRAMME“ einbauen.

Screenshot 2015-03-31 21.13.28

Tachometer

Screenshot 2015-03-31 21.13.41

Übungen

  • Bauen Sie ein einfaches Dashboard mit nicht mehr als 5 KPI’s
  • Achten Sie darauf sämtliche „Störenfriede“ aus der Ansicht zu elemenieren

Wir empfehlen Ihnen sich an modernen „CSS-Web-Frameworks“ zu orientieren. Beispiel hierfür sind – Microsoft Metro UI oder Twitter Bootstrap.

Lektion 10 – Standard Datenpräsentation

Übersicht

In dieser Lektion lernen wir ein paar der häufigsten Charts und wie wir diese „verschönern“ können.

Bar / Balken Diagramm

Mit Hilfe von Balkendiagrammen können schnell Vergleiche zwischen einzelnen Wertegruppen (quantitativ) erstellt werden.

Screenshot 2015-03-31 21.10.22

Dabei kann mit der Orientierung der Charts auch bei langen Legenden eine saubere Darstellung geschaffen werden.

Screenshot 2015-03-31 21.17.15

Kombinationsdiagramm Balken / Linie

Diese Darstellungsform eignet sich besonders bei der Darstellung von Bewegungsdaten mit unterschiedlichen Einheiten.

Screenshot 2015-03-31 21.10.34Wichtig ist hier die Nutzung der 2-Achse um eine z.B. Prozentanzeige nicht „verschwinden“ zu lassen.

Screenshot 2015-03-31 21.20.45

Hier wird die „Position“ der Formel nach „rechts“ gelegt. Für komplexe Darstellungen kann es sich auch lohnen die MIN und MAX Werte mittels Formel zu berechnen.

Linien Diagramm

Besonders geeignet für die Visualisierung von Trends oder Schwankungen über Zeit.

Screenshot 2015-03-31 21.10.47

Besonders interessant ist hier die Möglichkeit in „Schwellen“ zu präsentieren.

Screenshot 2015-03-31 21.24.33

Wie die Schwelle beginnt wählen Sie aus dem Pull-Down neben der Option „Linie“.

Verteilungen und Anteile

Hier kommen Kuchendiagramme, Blockdiagramme, Flächendiagramme und Mekko-Diagramme zu Einsatz.

Screenshot 2015-03-31 21.11.08

Die Besonderheit für Flächendiagramme ist, dass diese als „Liniendiagramme“ getarnt sind.

Screenshot 2015-03-31 21.29.53

Absolute Wertigkeit mit Entstehungsinfo

Hier eignen sich je nach Anforderung „Wasserfalldiagramme“ oder „Stapeldiagramme“.

Screenshot 2015-03-31 21.11.25

Für das Wasserfalldiagramm muss in die Detaileinstellungen der Formel eingegriffen werden.

Screenshot 2015-03-31 21.33.31

 Trends – Kerzendiagramm

Besonders beliebte Darstellung von z.B. Aktienkursen.

Screenshot 2015-03-31 21.11.51

Dabei müssen folgende Werte lieferbar sein:

  • Upper
  • Top
  • Middle
  • Bottom
  • Lower

Die Info wo eingetreten und wo ausgetreten wurde muss auch geliefert werden, da hier ein farbliches Signal gesetzt wird.

Screenshot 2015-03-31 21.37.37

Beziehung zwischen Datenpunkten

Besonders beliebt ist hier das „Bubble-Diagramm“.

Screenshot 2015-03-31 21.12.19

Hier kann in Abhängigkeit von 3 Faktoren eine Verteilung dargestellt werden. Z.B.:

  • Menge
  • Umsatz
  • Deckungsbeitrag

Dabei wird der Deckungsbeitrag als „Fläche“ dargestellt.

 Übungen

  • Bauen Sie ein Diagramm Ihrer Wahl
  • Schauen Sie sich die Eigenschaftsoptionen im Detail an
  • Setzen Sie die Farbwerte „hart“

Lektion 9 – Grundlegende Pivotierungsfunktionen

Übersicht

In dieser Lektion lernen wir die wichtigsten Aggregierungsfunktionen im Detail kennen und wie wir diese zu unseren Zwecken „anpassen“ können. Eine kurze Einführung in die Set-Analysen wird uns eine der mächtigsten Funktionalitäten näher bringen.

Pivotieren leicht gemacht

Zum Erstellen einer Kreuztabelle klicken Sie mit der rechten Maustaste auf einen „leeren“ Platz in der Arbeitsfläche und wählen dort:

Screenshot 2015-03-30 14.44.03

Chart! Danach startet der „Wizzard“ der Ihnen ermöglicht die Kreuztabelle zu erzeugen.

Screenshot 2015-03-30 14.45.11Nachdem Sie mit der Auswahl des Typen fertig sind, gehen Sie auf „next/weiter“.

Screenshot 2015-03-30 14.45.36

Selektieren Sie bei diesem Schritt, nach welcher Dimension / Kategorie die spätere Berechnung der Werte erfolgen soll.Screenshot 2015-03-30 14.45.56Geben Sie die gewünschte Funktion/Formel/Berechnung an – hier ein einfacher Count() – Anzahl.

Screenshot 2015-03-30 14.46.22

Sie können noch weitere Formeln anlegen, indem Sie auf „Add/Hinzufügen“ klicken.Screenshot 2015-03-30 14.46.40Unsere erste Kreuztabelle liefert jetzt die Anzahl der Planungen nach Produktgruppe.

 Bitte beachten Sie, dass gerade bei einem Count ein großer Unterschied zwischen „eindeutig“ gezählten und gezählten Werten besteht. Um wirklich nur eindeutige Werte zu zählen nutzen Sie den DISTINCT Befehl.

Die in der Praxis am Häufigsten genutzten Funktionen sind:

Besonders interessant ist der letzte Ausdruck, welcher den ersten Verweis zu den Set-Analysis darstellt.

Set Analysen

Unter einem Set versteht man eine Mathematische-Menge. Diese kann mit einer anderen Menge z.B. geschnitten werden oder aber auch exkludiert werden.

220px-Set_subsetAofB.svg

Komplette Vereinigung „*“.

220px-Venn0001.svg

Nur die Schnittmenge „+“.220px-Venn0100.svg

Nur in A „-„.220px-Venn0110.svg

Nur in A oder B – „-P()“ – „E()“.

220px-Venn0111.svgUnion der beiden Mengen.

Um das Prinzip besser verstehen zu können, schauen wir uns die folgenden Beispiele aus der Praxis an:

 Übungen

  • Erstellen Sie eine Kreuztabelle in der Sie mittels KalenderObjekt die Summe der Umsätze „auswählen“ können. Tip: Arbeiten Sie mit Variablen.

Lektion 8 – Arbeiten in der Benutzeroberfläche

Übersicht

Bisher haben wir uns fast ausschließlich mit dem Laden von Daten beschäftigt. Ab dieser Lektion geht es vorrangig um das Präsentieren und Analysieren der Daten.

Allgemeine Einstellungen

Für den QlikView Designer ist eine der wichtigsten Voreinstellungen das Aktivieren der „Design-Toolbar“. Die Sichtbarkeit verwalten Sie im Menüpunkt „View/Anzeige“.

Screenshot 2015-03-28 15.11.28

Die Steuerungsobjekte im Überblick

ListBox

Mit Hilfe der Listbox kann innerhalb eines Feldes gesucht, selektiert und analysiert werden.

Screenshot 2015-03-28 18.26.45

Folgender Farbcode wurde von QlikTech für die Darstellung etabliert:

Screenshot 2015-03-30 13.15.32

Ohne Selektion ist der Hintergrund weiß.

Screenshot 2015-03-30 13.16.50

Mit einer getroffenen Auswahl wird die Auswahl grün, die weiteren Auswahlmöglichkeiten bleiben weiß und nicht mehr selektierbare Werte färben sich grau ein.

Sie haben die Möglichkeit mittels der „vor“ und „zurück“ Option innerhalb der Selektionshistorie zu navigieren. Durch „Zurücksetzten“ werden alle Filter entfernt.

MultiBox

Die Multibox ist die „platzsparende“ Alternative zur Listbox. Pro Filterfeld wird nur eine Zeile geführt. Sollte nur in „Standardanalysen“ angewendet werden, da eine „Assoziation“ nicht so leicht erkennbar wird.

Screenshot 2015-03-30 13.43.58

Slider/Calendar Object

Der Schieberegler oder der Kalender lassen sich mit „numerischen“ Feldern oder Variablen verknüpfen. Kann besonders nützlich in „von-bis“ Analysen sein.

Screenshot 2015-03-30 13.51.29

Bookmark Object

Mit Hilfe der Lesezeichen können Sie sich und anderen bestimmte „Datenblicke“ speichern. Nutzen Sie diese Funktion für sich, da unterschiedliche Filter zu interessanten Diskussionen führen können.

Screenshot 2015-03-30 14.19.18

Search Object

Das Suchobjekt ermöglicht es Ihnen, den selben Ausdruck in mehr als einem Feld anzuwenden. Die Ergebnisse zeigen dann die Treffer nach „Feld“.

Screenshot 2015-03-30 14.21.57Die Datenpräsentationsobjekte im Überblick

Table Box

Die TableBox – Tabelle – ist dazu geeignet die Datensätze auf „unterster“ Ebene performant zu listen. Aggregationen, Formel etc. sind nicht möglich. Nutzen Sie das Chart-Objekt als „Tabelle“ um einfache oder komplexe Darstellungen und Berechnungen zu visualisieren.

Chart

Das Chart ist der komplexeste Typ den Sie in QlikView verwenden können. Er erlaubt die Pivotierung, Formatierung, numerische als auch graphische Darstellung von Werten.

Screenshot 2015-03-30 14.25.46

Zu den Typen gehören:

  • Bar Chart – klassisches Balkendiagramm
  • Line Chart – Liniendiagramm
  • Bar-Line Chart – Kombination der beiden vorgehenden Diagrammtypen
  • „Spinne“ – Radar Diagramm
  • Tacho – Speedometer
  • Mekko – Relationsbereinigtes Quantitatives Datendiagramm
  • Scatter – Einzelne Datenpunkte auf einer x-y Skala
  • Bubbles – Volumengetriebenes Scatter Diagramm
  • Pie – Kuchendiagramm
  • Funnel – Trichter Diagramm
  • Block Chart

Die klassischen Pivot- und Tabellen sind der Typ:

  • Pivot Table
  • Straight Table

Wir werden später genauer in den jeweiligen Typ einsteigen.

Übungen

  • Erstellen Sie innerhalb eines bereits befüllten QlikView Dokuments ein Objekt jeden Typs und hauchen Sie ihm Leben ein.

Lektion 7 – Übungen

Übersicht

In dieser Lektion dürfen Sie nochmal alles gelernte eigenständig wiederholen und gelernte Techniken anwenden.

Aufgabe 1 – Dataloader Adventure Works

  1. Erstellen Sie einen Dataloader mit Verbindung auf die Access Datei – AdventureWorksSample, diese befindet sich im Verzeichnis „Admin/Common/Libs/QVComponents/Examples/DbExtract“
  2. Qualifizieren Sie die Daten und sichern Sie ins DataStaging ab (mit Variablen arbeiten)

Screenshot 2015-03-28 15.10.09

 

Binden Sie die Datenquelle als ODBC System Quelle ein.

Screenshot 2015-03-28 15.31.09

Screenshot 2015-03-28 15.32.59

Sollten Sie sich auf einem 64Bit – System bewegen, so ist es wichtig, dass Sie später bei der Nutzung von 32Bit Datenquellen die Option „Force32Bit“ in QlikView aktivieren. (MS Access ist 32 Bit)

Ihr Skript für diese erste Aufgabe sollte am Ende ungefähr so aussehen:

Wenn Sie das Skript ausführen und alle Einstellungen in den Config-Dateien richtig gesetzt haben, sollte sich die Tabelle „Product“ in Ihrem DEV/02 DATASTAGING-Verzeichnis befinden.

Aufgabe 2 – Einbinden einer Webdatenquelle

Im Internet gibt es zahlreiche Datenquellen, die meist ohne großen Anpassungsaufwand in QlikView eingebunden werden können. Eine interessante Adresse zum Stöbern bietet: http://www.programmableweb.com – am einfachsten lassen sich REST-API’s einbinden, da diese per einfachem URL-Aufruf die „Daten“ holen. Wir holen uns ein paar Wetter-Informationen;) Diese bekommen wir von www.data.gv.at .

Unser Landepunkt wird hier genau beschrieben: http://at-wetter.tk/index.php?men=api

Am Ende sollte das Skript wie bei Aufgabe 1 beginnen und der Lade-Reiter wie folgt:

Screenshot 2015-03-28 17.13.22

 Aufgabe 3 – Laden Sie die Wetterdaten aller Tage des Monats 03

Selbständiges arbeiten – 15 min Zeit.

Lektion 6 – Skript Tips und Tricks

Übersicht

Diese Kurzlektion beschäftigt sich mit typischen Fragestellungen aus der Praxis und deren Lösungsvorschläge.

Markieren von Dubletten

Oft kommt es in der Praxis vor, dass „Dubletten“ für eine Information existieren und Sie allerdings nur den „neuesten“ Datensatz berücksichtigen wollen. Für diese Problemstellung bietet QlikView im Skript so genannte „Interrecord-Funktionen“ zur Verfügung. Diese erlauben während des Ladens einer Quelle auf vorgehende oder nachfolgende Datensätze zuzugreifen. Die Lösung für unser Problem sähe wie folgt aus:

 Auflösen von „multiplen“ Schlüsseln

In der Praxis kommt es oft vor, dass eine Beziehung zwischen 2 Tabellen auf mehr als nur einem Feld besteht. Um die Performance zu  verbessern und das Datenmodell „sauber“ zu halten, lohnt es sich in diesen Fällen mit einem einfachen Trick die Schlüssel zu kombinieren.

 Klassifizieren von Daten

ApplyMap Funktion

Informationen auf Basis einer „Karte“ zuordnen. Dabei gelten die folgenden Anforderungen an die Karte:

  • Die Zuordnungstabelle besteht aus 2 Spalten, in der Ersten steht der Vergleichswert, in der Zweiten der spätere „Klassenwert“.
  • Die 2 Spalten müssen benannt sein, wobei die Benennung später keine Relevanz hat. Vergessen Sie die Benennung bei z.B. einer Inline-Tabelle, wird der erste Wert nie einen Treffer liefern.
  • Beim Gebrauch der Zuordnungstabelle werden die Werte eines bestimmten Feldes verglichen, bei einem Treffer wird der Zuordnungswert „ersetzt“ ansonsten bleibt der ursprüngliche Wert bestehen.

Wenn Sie sich Fragen, wieso wir diese Daten nicht mittels Join ins Datenmodell ziehen, so liegt der Grund in Punkt 3 der gerade aufgeführten Punkte. Ein JOIN würde uns die Tabelle immer erweitern und ein „behalten“ der Originalwertes ist nicht möglich.

Folgendes Bsp. mit der Verwendung von Inline-Tabellen:

IntervallMatch Funktion

Klassifizieren von Werten auf Basis eines Unter- und Oberwertes. Diese Funktion kann allerdings auch für komplexere Fragestellungen wie z.B. eine Zeitreihenanalyse genutzt werden. Um das Prinzip hinter der Funktion zu verstehen, ist es allerdings viel einfacher wir nehmen das Beispiel einer Immobilienagentur, die auf Basis der Größe von Wohnungsflächen eine Klassifizierung festlegen möchte.

Dies kann auch auf Ereignisse angewendet werden und führt im Hintergrund zu folgenden Datenmodel:

Intervalmatch

 Performance – Verketten von Bewegungstabellen

Das Verketten von Bewegungstabellen – auch unterschiedlicher Spaltenanzahl und Felder – bringt, solange alle Schlüsselfelder „überlappen“ einen großen performance Vorteil. Solange alle Schlüsselfelder enthalten sind, ist dies auch unbedenklich für das spätere Drillen ins Detail. Sollten allerdings nicht alle Schlüsselfelder überlappen, so geht dies zwar auch, aber beim Drillen kann es zu „Detailbrüchen“ kommen, für die man sich dann unter Umständen „erklären“ darf.

Achtung: QlikView fasst Tabellen mit der gleichen Struktur automatisch zusammen. Dies kann zu erheblichen Problemen führen, bietet allerdings auch viele Chancen. Wie Sie das Verhalten bewusst steuern zeige ich Ihnen im folgenden Beispiel!

Im letzten Fall sollten Sie mit der Tabelle weiterarbeiten und verändern, da die hohe Gefahr besteht, dass Ihr Datenmodel „platzt“.

Ausführen einer Funktion für jede Zeile einer Tabelle

QlikView erlaubt Ihnen auch im Skript bestimmte Funktionen selbst zu erstellen und diese auch mit Parametern aufzurufen. Das einfachste Beispiel ist, dabei das Schreiben einer Nachricht in eine Log-Datei. (Geht nur um die Technik, nicht den Sinn!)

 

Lektion 5 – Projektorganisation

Übersicht

Diese Lektion kümmert sich um die allgemeine Organisation und Strukturierung von QlikView Projekten. Basierend auf unserer langjährigen Erfahrung in Softwareentwicklung und QlikView Implementierungen, zeigen wir hier unsere „Best Practice“.

Als Erleichterung für unsere eigenen Projekte, haben wir ein Template online zur Verfügung gestellt, welches nach unseren Standards das Entwickeln von stabilen BI-Lösungen ermöglicht.

https://github.com/FrenzelGmbH/qlik

Screenshot 2015-03-28 15.02.53

Ordnerstruktur

  • ADMIN
    • COMMON
      • 00 CONFIG
      • LIBS
    • DEV
      • 01 Dataloader
      • 02 Datastaging
      • 03 Datalogic
      • 04 Datamart
    • PROD
      • << as DEV >>
  • ANALYSIS
    • COMMON
    • DEV
    • PROD
  • CONSOLE
    • MAINTANANCE
  • DEPLOYMENT
  • DOCS
  • VERSIONING

Ziel ist es bei diesen Strukturen – ohne zusätzlichen TestServer – eine klare Linie zwischen Produktiv und Entwicklungssystem zu schaffen. Erst wenn alle Logiken in der Teststruktur funktionieren, kann eine Migration in die Produktivumgebung erfolgen.

Arbeiten mit Variablen

Um eine „Unternehmenslösung“ zu entwickeln, empfiehlt es sich mit globalen Variablen zu arbeiten, die dann allgemein zur Verfügung gestellt werden. Dies funktioniert wie folgt:

Damit globale Variablen vergeben werden können, bietet QlikView die Möglichkeit externe TXT-Dateien mittels „include“ in das aktuelle Skript einzubinden und diese „an Ort und Stelle“ auszuführen.

Der Unterschied zwischen LET und SET Variable besteht in der Evaluation des Ausdrucks hinter dem „gleich“ Zeichen. Bei LET wird der Ausdruck sofort „berechnet“. Bei Set wird der Ausdruck für später gesichert.

Sollten also Variablen in „load_external_file.txt“ definiert worden sein, dann sind diese jetzt verfügbar.

Vorlagen für Skriptblöcke

Im folgenden ein paar exemplarische Skriptblöcke für welche empfohlen wird, diese auch in jedem QlikView Skript zu integrieren.

Bitte achten Sie darauf in welcher Umgebung Sie sich befinden und auch der „include“ von externen Quellen muss kontrolliert werden. Dabei hilft auch der Debugger, der externe Quellen in separaten Reitern anzeigt.

 QlikView Components

Für die Erledigung wiederkehrender Muster hat der QlikView Veteran – Rob Wunderlich – eine Bibliothek geschrieben, die genau diese vereinfacht. In unserem Projekttemplate wird diese permanent aktualisiert und wir empfehlen diese auch zu nutzen.

Sie binden die Lib wie folgt ein:

Eine umfassende Dokumentation und Hilfe wird in Form eines QVW’s zur Verfügung gestellt. Im folgenden lernen wir ein paar nützliche Routinen kennen:

Nehmen Sie sich 1 Tag um sich einen Überblick über die Funktionen zu verschaffen. In unserer praktischen Erfahrung sparen Sie sich damit viel Zeit.

Im Ordner Libs/QVComponents/examples befinden sich Beispiele für alle Funktionen falls Sie sich mit der Anwendung unsicher sind.

Übungen

  • Laden Sie sich ein „Zip“ vom Projekt herunter und bauen sich einen „ersten“ Dataloader im DEV Verzeichnis
  • Nutzen Sie die Include Funktion um auf „globale“ Elemente zuzugreifen

 

Lektion 4 – Strukturieren des Skriptes und nutzen von Funktionen

Übersicht

Um bei längeren Skripten den Überblick nicht zu verlieren, gibt es die Möglichkeit das Skript zu strukturieren. Dazu bietet QlikView die Möglichkeit mittels Registerkarten zu gliedern. Zusätzlich nutzen wir einfache Funktionen zur Anreicherung unseres Datenmodels.

Registerblatt anlegen

Um das Auffinden von Ladelogiken im Skript zu vereinfachen, strukturieren Sie das Skript, indem Sie neue Registerkarten erstellen oder bestehende verschieben. Versuchen Sie kurze aber prägnante Namen für die Registerreiter zu vergeben, damit Sie sich später besser orientieren können. In der Praxis hat es sich bewährt einen „exit“ Registerreiter anzulegen, welcher den Befehl „EXIT SCRIPT;“ beinhaltet. Das ermöglicht es bei komplexen Datenstrukturen „früher“ mit dem Laden der Daten zu stoppen und Teillogiken isoliert zu analysieren.

Funktionen

Datumsfunktionen

Neben der fast in allen Projekten existierenden Unternehmensstruktur ist die „Zeit“ das wichtigste Hauptgliederungsmerkmal einer jeden Analyse. An dieser Stelle lernen Sie die einfachsten Datumsfunktionen kennen, allerdings werden wir zu fortgeschrittener Lektion lernen wie wir einen „Standardkalender“ bauen und einbinden.

Die gängigsten Datumsfunktionen die auf ein Feld mit Datumsinhalt angewendet werden können sind:

  • YEAR
  • MONTH
  • DAY
  • DAYOFWEEK
  • DAYOFYEAR
  • MONTHNAME

Jede dieser Funktionen ist sehr mächtig, da z.B. abweichende Wirtschaftsjahre abgebildet werden können, oder auch Zeiger auf den letzten vollen Monat möglich sind. Eine gut durchdachte Zeitachse wird Ihnen zu einem späteren Zeitpunkt das Erstellen von Berichten, Charts und Tabellen deutlich erleichtern. Sie verwenden die Funktionen wie folgt:

 Funktionen und Formeln zum „Rechnen“

QlikView bietet neben zahlreichen Funktionen auch die Möglichkeit innerhalb des Laden der Daten Berechnungen durchzuführen. Dies funktioniert wie folgt:

Sie haben natürlich immer die Möglichkeit solche Berechnungen in der Oberfläche zu tätigen, allerdings empfiehlt es sich aus Performance Gründen – sofern möglich – bereits beim Laden der Daten solche Berechnungen zu erledigen.

Kontrollstrukturen beim Laden

Teilweise kann es nötig sein, dass Sie in Abhängigkeit von Feldinhalten bestimmte Regeln anwenden. Dazu bietet sich die Möglichkeit mit „WENN-DANN-SONST“ Funktionen zu arbeiten.

Hier sehen Sie wie wir den Inhalt des Feldes <Produkt> mit dem Muster „*Tennisb*“ vergleichen (* können beliebige Zeichen in beliebiger Häufigkeit sein) und wenn die Anzahl der Treffer größer als 0 ist, die Sparte „Tennis“ geschrieben wird, ansonsten „Sonstige“.

Sollten Sie die Absicht haben, Suchmuster zu verfeinern, so können Sie z.B. die Anzahl der zu vergleichenden Zeichen mittels „?“ setzten, wobei jedes „?“-Zeichen für ein Zeichen steht.

 Übungen

  • Erweitern Sie Ihr Skript aus Lektion 3 um eine Bewegungstabelle
  • Bauen Sie sich einen „kleinen“ Kalender mit Jahr, Monat und Tag
  • Erweitern Sie Ihr Pivot um eine Gliederung nach Zeit

 

Lektion 3 – Daten laden und Dokumentieren

Übersicht

In dieser Lektion wollen wir die wichtigsten Grundregeln für das Einlesen von Daten kennen lernen. Es handelt sich hierbei um eine Empfehlung und kein „MUSS“!

Dokumentation – Kommentare

Die effizienteste Art ihre Logiken und Gedanken für ihre Mitstreiter verfügbar zu machen, ist das direkte Schreiben von Kommentaren im Skript. Diese können an jeder beliebigen Stelle im Skript unter der Verwendung der folgenden Syntax genutzt werden:

  • REM – vor einem Befehl bewirkt, dass der komplette Befehl bei der Ausführung des Skriptes ignoriert wird.
  • // – am Zeilenanfang oder an einer beliebigen Stelle in der Zeile bewirkt, dass alle Zeichen die danach folgen vom Skript ignoriert werden.
  • /* … */ – bewirkt das der Text zwischen /* und */ als Kommentar betrachtet wird.

Da wir zu einem späteren Zeitpunkt unsere Skripte in ein Versionsmanagement einbinden werden und dadurch die Möglichkeit bekommen – Dokumentationsgeneratoren zu nutzen, empfiehlt es sich folgende Konventionen zu Nutzen zu machen.

Sauberes laden von Daten

Im folgenden zeige ich, wie aus einer „rohen“ Datenquelle eine qualifizierte Datenquelle erzeugt wird:

Hier erscheinen die Daten in der Tabellenstrukturanzeige mit dem Tabellennamen „Test.Kunden“. Allerdings wollen wir unsere Tabelle mit „Kunden“ benennen.

Nachdem die Tabelle jetzt den Namen hat, den wir wollen und wir später über mögliche Schlüssel zu weiteren Tabellen definieren wollen – werden wir diese jetzt noch qualifizieren.

Selbstbestimmte Fremdbeziehungen

Sie haben mehrere Datentabellen, die Sie laden möchten. Dabei sind in beiden Tabellen mehrere Feldnamen gleich. Würden Sie die Tabellen nicht qualifizieren, würde das Entity Relationship Mapping von QlikView automatisch die „gleichen“ Felder als Verbindung nutzen. Dies kann durch das eben gelernte qualifizieren vermieden werden. Dennoch möchten Sie die Tabellen über ein von Ihnen zu bestimmendes Feld verknüpfen. Wir arbeiten hierbei mit der Möglichkeit einzelne Feldnamen mittels Muster bei der Qualifizierung „auszuschließen“. In der Praxis hat es sich bewehrt die Schlüsselfelder mit dem Präfix „%“ zu markieren. Folgendes Beispiel zeigt die Logik zum Verknüpfen 2er Tabellen:

Wir haben jetzt die beiden Tabellen über das Feld <%KundenId> verknüpft und nicht noch zusätzlich über die „falsche“ Verknüpfung via <Info>.

 QlikView Debugger

Beim Entwickeln der Skript Logiken hilft es vor allem zu Beginn nicht immer die gesamten Daten zu laden und parallel Informationen zum aktuellen Fortschritt des Skriptes zu erhalten. Dabei können Skriptbefehle und Variablen überwacht werden.

Screenshot 2015-03-25 20.37.54

Limitieren Sie die Daten für den Debugger so, dass mögliche Beziehungen zwischen 2 Tabellen auch einen Treffer im Schlüssel haben. Dies ermöglicht es unter Umständen bereits vorab das Datenmodel mittels einfacher Kreuztabelle in der Oberfläche zu validieren.

Zusätzlich können Sie für Ihr Dokument unter den Eigenschaften das „mitprotokolieren“ aktivieren. Ich empfehle diese Option während des Entwicklungsprozesses zu aktivieren. Sie finden dann nach dem Laden des Skriptes im gleichen Ordner wie Ihr QlikView Dokument liegt ein MeineDatei.log welches weitere Detailinformationen zur Fehleranalyse bereitstellt.

Wichtigste Datenobjekte zur Präsentation

Um die geladenen Daten zu präsentieren werden wir in späteren Lektionen noch viele Möglichkeiten kennen lernen. An dieser Stelle lernen wir 2 Objekte die zu diesem Zeitpunkt relevant sind:

  • Listen Box (List Box)
  • Diagramm (Chart)

Diese können Sie hinzufügen durch klicken auf die entsprechenden Symbole in der Design-Toolbar oder indem Sie mit der rechten Maustaste auf einen freien Platz in der Arbeitsfläche klicken und dort im Kontextmenü auf „Neues Objekt“ gehen und sich eines der Beiden aussuchen.

Die ListBox dient zum Filtern der im Datenmodell existierenden Daten.

Das Diagramm ist eine „Pivot“ – Kreuztabelle, die es erlaubt Werte mittels Aggregationsfunktionen nach Kategorien zu berechnen. Die bekanntesten sind:

  • SUM(Feldname) – Summe über Werte
  • AVG(Feldname) – Durchschnitt aller Werte (Achtung oft falsch, da keine Gewichtung)
  • COUNT(Feldname) – Anzahl aller Werte (Mehrfachzählungen)
  • MAX(Feldname) – Höchster Wert (numerisch)
  • MIN(Feldname) – Niedrigster Wert (numerisch)

 Übungen

  • Erstellen Sie ein neues leeres QlikView Dokument
  • Öffnen Sie den Skript-Editor
  • Dokumentieren Sie Ihr erstes QlikView Skript
  • Verbinden Sie sich auf eine Datenquelle Ihrer Wahl
  • Finden Sie die Anzahl der geladenen Datensätze und geben diese mittels einem Diagram aus

Lektion 2 – Grundlegende Skriptsyntax

Übersicht

In dieser Lektion beschäftigen wir uns mit den häufigsten Skriptbefehlen, sowie deren praktischer Anwendung.

Grundstruktur Syntax

Zu den am häufigsten verwendeten Befehlen gehören:

  • CONNECT
  • SELECT
  • LOAD

Mit denen Daten in QlikView identifiziert und geladen werden.

Sind Sie sich nicht mehr sicher, wie genau ein Befehl verwendet wird, nutzen Sie die in QlikView integrierte Hilfe. Diese liefert eine kurze Zusammenfassung zum jeweiligen Befehl, sowie Syntax Beispiele.

CONNECT-Befehl

Mit Hilfe des CONNECT-Befehls wird eine Verbindung zu:

  • ODBC
  • oder OLE-DB

Datenquellen hergestellt. Die Verbindung zu dieser Datenquelle gilt solange, bis Sie einen neuen Connect ausführen und dieser dann die „alte“ Verbindung ablöst. Sie können beliebig viele dieser Verbindungen in einem QlikView Skript nutzen. In der Praxis hat es sich allerdings bewährt jeweils nur 1-2 Verbindungen pro Dokument zu halten, da komplexere Logiken anders abgebildet werden sollten. (Siehe spätere Lektion – Projektorganisation)

 SELECT-Befehl

Der SELECT-Befehl entspricht der offiziellen SQL Spezifikation und wird dazu genutzt aus der verbundenen Datenquelle die entsprechenden Daten zu extrahieren. Der Syntax ist abhängig vom entsprechenden Datenbanktreiber und erfordert bei komplexeren Abfragen gute Kenntnisse über das Datenbankmanagementsystem, auf welches der Zugriff statt findet.

 

 LOAD-Befehl

Der LOAD-Befehl lädt Felder aus:

  • einer angegebenen ASCII-Datei
  • Tabellen im QlikView Speicher
  • Excel-Dokumenten
  • XML Dokumenten
  • Web-Dokumenten

Dabei gilt das folgende Syntax Model:

 Übungen

  • Stellen Sie eine Verbindung zu einer Datenbank ihrer Wahl her
  • Laden Sie eine Tabelle aus dieser Datenbank
  • Suchen Sie eine verbundene Datenbank und laden diese dazu
  • Zeigen Sie das Ergebnis in der Tabellenstruktur Ansicht an