Where is my License Lease Information?

Wie hier berichtet, gibt es seit QlikView 11.20SR6 eine neue Startseite. Seither werden wir häufig gefragt, wo denn die License Lease Information im QlikView Developer hinverschwunden ist!

Zur Erinnerung, in QlikView 11.00 bis QlikView 11.20 SR5 stand diese Information stets mittig auf der Startseite.

License Lease einer Named CAL von meinem Qlikview Server hd_rva_01
Durch die Neustrukturierung seit QlikView 11.20SR6 ist diese Information jetzt ein wenig versteckt: man muss im grauen Balken "Resources" auf den Link "License information" klicken und bekommt dann ein Popup mit den gleichen Informationen wie früher.



Wer QlikView in deutscher Sprache startet, heißen die Menüeinträge ein wenig anders: der graue Balken ist mit "Links" beschriftet, der Link heißt "Lizenzinformationen". Siehe Screenshot unterhalb.


Happy Holiday mit QlikView - Feiertage aus dem Internet holen

Bevor alle in den wohlverdienten Weihnachtsurlaub entschwinden, hier noch ein kleines Skript um die Feiertage für die kommenden Jahre automatisiert in QlikView zu laden - sei es für die Planung Ihrer Produktionskennzahlen, für Ihre Vertriebsanalyse - oder schlicht und ergreifend um Ihrer ganz persönlichen langen Wochenenden mit QlikView zu planen!

QlikView bietet mit Lunar-Funktionen (LunarweekEnd, LunarWeekName, LunarWeekStart - siehe QlikView Hilfe) einige Möglichkeiten um Mondwochen-basierte Feiertage wie den Ostermontag berechnen zu können. Auch die Funktion networkdays hat einen dritten Parameter um "holiday"-Tage herausrechnen zu können. Spätestens bei nationalen Feiertagen, ist es aber am Besten einen fertigen Feiertagskalender zu befragen. Die Seite http://www.feiertage-oesterreich.at bietet eine schöne Übersicht über die gesetzlichen Feiertage in Österreich.


In QlikView lässt sich diese Seite gut abgreifen, und liefert momentan die Feiertage bis ins Jahr 2016. Speichert man das Skript-Ergebnis als .csv-Datei und fügt es in seinen Masterkalender hinzu, kann man in den QlikView-Applikationen die Feiertage als zusätzlichen Filter anbieten.


for i = 2013 to 2016
Feiertage:
LOAD  
     Datum, 
     Feiertag
FROM
[http://www.feiertage-oesterreich.at/$(i)/]
(html, codepage is 1252, embedded labels, table is @1) where len(F5)  > 0;

next

store Feiertage into Feiertage.csv(txt);


Für 2015 sieht das dann, aufgetragen auf ein kontinuierliches Kombidiagramm mit Färbung für die Wochentage folgendermaßen aus:


Wer sich also schon vor den Weihnachtsfeiertagen 2014 mit den nächsten beiden Jahren auseinandersetzen möchte, findet die .qvw  inklusive Skript und Layout hier zum Download! Wir wünschen schöne Feiertage, einen guten Rutsch & bis nächstes Jahr!

QlikSense Map Objekt

Eine schöne Neuerung von QlikSense ist die Integration eines eigenen Map/Landkarten-Objekts. Das neue Objekt kann sowohl Flächen als auch Punkte auf Karten anzeigen und einfärben. Als Grundlage für Flächen dient die aus Google Earth bekannte .kml-Datei. Die Hintergrund-Landkarten kommen von Tileservern wie zB Open Street Map.

Karten gab es in QlikView schon immer. Wie in diesem Blogbeitrag beschrieben war es jedoch ein wenig Hokuspokus (oder eine Extension) um das Ergebnis zu erzielen. In QlikSense gibt es nun ein Kartenobjekt, das sich mittels weniger Klicks zu einer aussagekräftigen Karte aufbauen lässt.

Flächenfärbung

Für die Flächenfärbung benötigen Sie ein .kml (bzw. ein entpacktes .kmz) File der gewünschten Region. Die Seite data.gv.at  soll uns hier hilfreich sein um zB die Bezirke von Wien darzustellen.

Das Map Objekt - Schritt für Schritt

Zieht man die .kml-Datei mit Drag&Drop in QlikSense, wird diese als Geo-Daten erkannt. Der Preview zeigt die Polygon-Definition der Bezirksgrenzen im Feld WienBezirke.Area.

Wird das .kml erkannt (was bei komplexen .kmls momentan leider nicht immer der Fall ist), geht die restliche Objekt-Erstellung Schlag auf Schlag:

1) QlikSense Skript laufen lassen und in den Design-Modus wechseln

2) Das Map-Objekt auf die Layoutfläche ziehen

3) QlikSense fragt nun nach der Dimension des Kartenobjekts. Das ist in unserem Fall das Feld WienBezirke.Name. Zieht man das Feld mittels Drag&Drop auf die Karte, erscheinen die Bezirksgrenzen von Wien in blau.



4) Wer das nicht glaubt, kann optional als Hintergrund noch eine Landkarte einblenden. QlikSense liefert hier keinen fixen Kartenanbieter mit, sondern bietet eine Auswahl verschiedenster Tileserver. Einfach die URL für zB Open Streetmap "http://tile.openstreetmap.org/${z}/${x}/${y}.png"  aus der Online-Hilfe kopieren, Zuordnung eintragen, und das Ergebnis sieht folgendermaßen aus:

Datenmodellierung

 Was nun noch fehlt ist eine Kennzahl auf der Karte: Von der Webseite der Stadt Wien kann man sich ganz gut Kennzahlen über die einzelnen Bezirke schnappen:

https://www.wien.gv.at/statistik/lebensraum/tabellen/nutzungsklassen-bez.html

Der QlikSense Script Editor hat hier noch nicht  alle graphischen Optionen von QlikView um Daten zu transformieren, versteht aber alle QlikView Skriptparameter. Unser Tipp ist hier also folgender: Daten mit QlikView laden, Filter anwenden und dann das Skript in QlikSense einfügen - dann klappt es auch die ersten Zeilen korrekt rauszufiltern.

LOAD
 num(num#(subfield(Bezirk,'.',1)),'###0') as %BezirkNr,
    Bezirk,
     "Bauflächen in ha" as Gesamtfläche,
    "Bauflächen in ha1" as Wohnbaugebiete,
    "Bauflächen in ha2" as Einrichtungen,
    "Grünflächen in ha",
    "Gewässer in ha",
    "Verkehrs-flächenin ha" as [Verkehrsflächen in ha]
FROM [lib://Wien Daten]
(html, codepage is 1252, embedded labels, table is @1,filters(
Remove(Row, Pos(Top, 2)),
Remove(Row, Pos(Top, 2))
));

Die Schlüssellogik bleibt wie immer bei den Qlik-Produkten: sowohl Karte als auch Kennzahlen müssen sich über einen gleichnamigen Schlüssel - hier %BezirkNr - verbinden.  Das Datenmodell sieht dann wiefolgt aus.


Das fertige Layout

Sie wollen nach Wien ziehen und wissen welcher  Bezirk wieviel "Grünfläche" hat? Innerhalb des Gürtels, oder doch nach Ottakring oder Liesing? Als Ergebnis kann man in QlikSense nun folgende Darstellung bauen.



Die komplette QlikSense Applikation finden Sie hier.

Punkte auf der Landkarte

Um Städte auf der QlikSense Map darzustellen geht man ganz ähnlich vor. Voraussetzung hier ist, dass Sie zu dem Ort eine Latitude und Longitude Angabe vorliegt. Ich habe hier eine bestehende .qvd aus QlikView genutzt, ansonsten wäre zB Google Maps eine brauchbare Hilfe!

Cities:
LOAD * INLINE [
    Ortschaft
    Grödig
    Stockerau
    Hollabrunn
    Retz
    Baden
];

inner join (Cities)
Load
 *,
    GeoMakePoint(latitude,longitude) as GeoPoint2;
LOAD
    PLZOrtschaft,
    num(num#(latitude,'# #00.0000000','.',' ')) as latitude,
    num(num#(longitude,'# #00.0000000','.',' ')) as longitude,
    Ortschaft,
    GEMNAM
FROM [lib://post.at PLZ Feb 2009/geoATFinal.qvd]
(qvd);

QlikSense kommt mit einer neuen Geo-Funktion GeoMakePoints um die Koordinaten-Angaben in das richtige Format umzuwandeln! Stellen Sie auch sicher, das die Funktion mit korrekt formatierten Nummern aufgerufen wird (nicht mit dem amerikanischen Punkt als Dezimalseperator)!

Ist das Skript geladen, geht man ganz ähnlich vor:

1) Map Objekt auf das Layout ziehen
2) Feld "Ortschaft" auf die Karte ziehen
3) Open Street Map für als Hintergrund einfügen




Fügt man nun noch eine Kennzahl ein, kann man die Punkte in den Optionen unter "Farben und Legenden" entsprechend "nach Kennzahl" färben.



Qlik Cloud

Ein kleiner Tipp am Rande: Wer seine Ergebnisse mit bis zu 3 Kollegen teilen möchte, kann das Beta-Programm von QlikCloud testen. Einloggen, .qvf hochladen und an bis zu drei Emailadressen Einladungen schicken.


 


Lessons Learned 2014 - Alterspyramide Darstellung

Vor längerer Zeit wurde ich gebeten eine Altersstruktur über die Konzernmitarbeiter in QlikView darzustellen. Eine gut zu lesendes Chart dafür ist eine Alterspyramide, bei der die Altersstruktur getrennt nach Frauen und Männern auf zwei Seiten dargestellt wird. Ein schönes Beispiel dazu findet man online bei Statistik Austria.

Bevölkerungspyramide von Österreich und Wien
Im QlikView Script habe ich mir dafür ein eigenes Feld "Altersklasse" vorbereitet.

Load
*,
dual(replace(class(Alter,5),'<= x <','-'),class(Alter,5)) as Altersklassen;
LOAD 
 age(today(),Geburtsdatum) as Alter,
   Geburtsdatum, 
     Nachname, 
     Vorname, 
     Geschlecht
FROM
Personal.csv
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

Die selten genutzte Funktion age() rechnet das Alter einer Person zum heutigen Tag today() aus. Class() wird benutzt um das Alter der Personen in 5-Jahres-Scheiben zu gruppieren. Da die Class()-Funktion wenig elegant die Textsyntax 30 <= x < 35 liefert, geht man am besten noch mit einem String-Replace() auf die schönere Darstellung 30-35.

Um das Chart zu bauen, benutzt man am besten ein gestapeltes Kombichart in horizontaler Ausrichtung. Das Chart benötigt 2 Dimensionen: Altersklasse und Geschlecht sowie eine Expression.

Kombi Diagramm, Ausrichtung Horizontal und Subtyp Gestapelt

Wer die Formel unterhalb liest, der sieht, dass das weibliche Geschlecht mit einem negativen Vorzeichen versehen wird. Das ist natürlich nicht sehr gentlemanlike, und führte im Projekt - höflich ausgedrückt - eher zu einer Ablehnung dieses Charts.
"Minus"-Frauen kommen nicht gut an!

Nachdem in letzter Zeit in der QlikCommunity viel über Unicode und Numberformat diskutiert wurde, nahm ich mich des Problems wieder an, und suchte die Männlich- und Weiblich-Unicodezeichen heraus.

Hinterlegt man bei der Formel folgenden Zahlencode

♂#.##0;♀#.##0

so löst man das Problem. Der erste Zahlencode wird für positive Werte (in diesem Fall männlich), der zweite Zahlencode für negative Werte (in diesem Fall weiblich) angezeigt. Das Chart zeigt  nun die Werte deutlich höflicher an!


Das komplette Beispiel findet sich hier zum Download.

Qlikview: Understanding Of Charts - Line/Bar/Combi

Ich hoffe Ihr Verständnis für Charts ist besser als dieses Bild, das Ron Gilbert diese Woche auf seinem Blog gepostet hat:
http://grumpygamer.com/understanding_of_charts
Ein Chart, oder doch eher eine Monkey Island Schatzkarte?
Trotzdem gibt es in QlikView eine scheinbare Seltsamkeit: Warum gibt es ein Balkendiagramm und ein Liniendiagramm wenn es doch sowieso das Kombi-Diagramm gibt?  Ein Kombi-Diagramm funktioniert doch als Superset über die beiden anderen Diagramme, kann man doch pro Expression entscheiden ob man eine Linie, einen Balken oder Punkte sehen möchte.

Drei Charttypen für eine Lösung?

Natürlich gibt es einen Grund. Der Grund ist subtil, aber für die Entwicklung von interaktiven QlikView-Anwendungen durchaus wichtig. Die folgenden zwei Beispiele sollen Ihnen helfen das jeweils richtige Chart zu wählen!


Brush & Link zum Ländervergleich  - Linien vs. Kombi

Eine typische Darstellung ist die Umsatzentwicklung für Länder über die Zeit. Für solche Darstellungen wählt man gerne ein Liniendiagramm. Genauso gut hätten wir aber ein Kombi-Diagramm wählen können! Hätten wir? Naja, initial sehen beide Charts jedenfalls exakt gleich aus:


Der Unterschied wird mit der Anforderung, die wir oberhalb der Charts lesen können, wirksam:

"Der Anwender will Ausreißer mit einem Klick im Chart selektieren können, und weiterhin im  Monats-Verlauf Bezug auf die anderen Ländern nehmen!"

Selektieren wir zB im April die Ausreißerländer, bemerkt man den Unterschied. Zieht man im Liniendiagramm einen Selektionsrahmen, verhält sich das Liniendiagramm wie gewünscht. Wir sehen die drei Länder mittels Brush&Link hervorgehoben. Die Auswahlbox zeigt die drei ausgewählten Länder "Deutschland, Österreich, USA" an.

Liniendiagramm- Selektion im Chart wählt nur die zweite Dimension "Land"

Machen wir die gleiche Selektion im Kombi-Diagramm, so werden nicht nur die Länder, sondern auch der Monat "April" selektiert. Damit verliert man den Bezug zu den restlichen Monaten und sieht nur noch ein Chart mit Punkten (weil es nur ein Monat gibt).

Kombidiagramm - Selektion im Chart wählt Dimension "Monat" und "Land"
In dieser Situation ist also das Liniendiagramm die richtige Wahl. Dass das Kombidiagramm nicht immer schlechter sein muss, zeigt aber das nächste Beispiel.


Graphisches Filtern auf Detaildaten - Balken vs. Kombi

Die Ausgangssituation in diesem Beispiel ist gleich wie oberhalb. Wir wollen wieder den Umsatz pro Monat und Land auftragen. Diesmal stellt uns der Benutzer jedoch die Anforderung "die Bestelldetails-Tabelle mit einem Klick in der Graphik auf Monat & Land filtern".

Hier wählen wir als Darstellung ein Balkendiagramm und ein Kombi-Diagramm. Beide sehen initial wieder gleich aus. Der Tooltip zeigt uns netterweise schon  für "Monat = Juli und Land = Österreich" einen Umsatz von 5.791,75€.  Wenn man nun auf diese Segment klickt (oder Rahmen zieht), erwartet der Benutzer in der Tabelle "Bestelldetails" nur noch genau jene Bestellnummern, die genau zu diesem Betrag führen.

Balken- vs. Kombidiagramm um die Tabelle unterhalb zu filtern
Wie verhalten sich nun die zwei Diagrammtypen? Das Balkendiagramm ist hier nicht ideal: obwohl der Tooltip das Segment anzeigt, führt eine Selektion im Chart nur auf die Selektion des Monats "Juli", wodurch die Detaildarstellung noch immer mehr als 42.000 € anzeigt.
Anstatt auf 5.791,75 € zu filtern, sieht man bei Selektion im Balkendiagramm noch immer den Gesamtumsatz für Juli
In diesem Fall ist das Kombi-Diagramm die richtige Wahl. Die Selektion des Segments wählt sowohl den Monat "Juli" als auch das Land "Österreich". Das führt zu einer gefilterten Detailtabelle, die nur noch die gewünschten Bestellungen mit einem Gesamtbetrag von 5.791,75€ anzeigt.

Kombi-Diagramm -  Ein Klick filtert beide Dimensionen, was zu einer gefilterten Detailtabelle führt

Conclusio

Die eigentliche Darstellung von Kombi-Diagramm und  Balken/Liniendiagramm ist gleich. Der Unterschied tritt erst auf, wenn man zwei Dimensionen hat und der Benutzer direkt im Chart selektiert.

Zu finden ist die Beschreibung dieses Unterschied übrigens auch im QlikView Reference Manual Kapitel "49.2 Selections in Charts and Tables". Es gibt also doch gute Gründe für diese drei Diagrammtypen :)

Note!
Selections made directly in line charts and bar charts (not combo chats) showing more than one dimension will primarily apply to just one dimension. Selections In line charts primarily apply to the second dimension so that painting over a line selects the entire line over all x-axis dimension values. In bar charts the opposite applies, i.e. selections primarily apply to the first dimension.


Die .qvw zum Selbstprobieren finden Sie unter content.heldendaten.net.


heldendaten GmbH,2020