QlikView 11.20 SR10 - Pie Chart Feature "Sector Outline"

Welcher Charttyp wann sinnvoll ist, ist am neuen QlikView Blog in diesem PDF beschrieben. Das ein Kreisdiagramm sich vor allem für ein "simple share of total" eignet, ist dem kritischen Daten-Visualisierer schon länger bewusst, ansonsten ist ein Besuch auf "Evil Pies" empfohlen:

The only real pie!

Die Release Notes von QlikView 11.20 SR10 beschreiben ein neues Feature bei Kreisdiagrammen, welches uns die Pie-Charts ein wenig "smoother" wirken lässt:

Während in SR9 und davor die Kreissegmente immer eine harte,schwarze Linie waren, kann man jetzt unter "Farben">"Sector outline" eine andere Farbe definieren. Siehe zweites und drittes Diagramm im Screenshot unterhalb.




Die .qvw gibt es hier, und setzt einen QlikView 11.20SR10 Developer voraus. Ein Klick auf ein Land in der Chart-Legende hebt es gelb hervor. Das funktioniert ähnlich wie das Brush&Link-Beispiel in diesem alten Blogeintrag.

Zum Jahreswechsel: Achtung bei Kalenderwochen-Analysen!

Wer sich über die schlechten Umsätze in der ersten Kalenderwoche 2015 wundert, kann das den günstig gefallenen Fenstertagen (oder wie man in Deutschland sagt: "Brückentage") zuschreiben. Man sollte aber auch einen Blick auf sein QlikView-Skript werfen!

Hat man in seinem Masterkalender die unscheinbare Skriptzeile

    Week(Datumsfeld)&'-'&Year(Datumsfeld) AS [Eindeutige Woche]

definiert, dann hat die erste Kalenderwoche 2015 nur 4 Tage. Der Grund: Die KW 1 2015 geht von 29.12.2014 bis 04.01.2015. Drei Tage des Jahres 2014 gehören also in die erste Kalenderwoche von 2015. Definiert ist diese ganze Kalenderwochenlogik in der ISO8601, und - wie man hier nachlesen kann - prinzipiell verhält sich QlikView auch nach diesem Standard.


Das Problem

Anbei ein anschauliches Beispiel: wir arbeiten für ein Unternehmen, dass an jedem Kalendertag genau 100 EUR Umsatz macht.  Entsprechend würden wir auch erwarten, dass in jeder Kalenderwoche genau 700 EUR Umsatz aufsummiert werden können.

Unser Datentopf: jeden Tag 100 EUR Umsatz macht eine hübsche Gerade

Benutzen wir die oben erwähnte Formel für die Kalenderwoche, sehen wir aber, dass in den letzten Jahren einige Wochen mit 800  EUR (also 8 Tagen), und dieses Jahr die KW 1 mit nur 400 EUR (also nur 4 Tagen) existiert.


Der Grund wird klar, wenn man sich die Datumswerte zum Jahreswechsel ansieht. Die Tage 29. bis 31.12.2014 werden von der week()-Funktion nach ISO8601 in die KW1 gesetzt, aber da die Year()-Funktion das Kalenderjahr nimmt, landen diese 3 Datensätze fälschlicherweise in der Kalenderwoche "1-2014".

1-2014 ist die falsche KW für diese 3 Tage

 

Die Weekyear() - Funktion

Um das Problem zu lösen, bietet sich die Funktion weekyear() an, die genau diese Ungereimtheiten löst und für die drei Tage das Jahr der Kalenderwoche liefert.

Week(Datumsfeld)&'-'&WeekYear(Datumsfeld) AS [Eindeutige Woche]

Weekyear() schiebt die 3 Tage ins Jahr 2015

Entsprechend sieht das Chart dann auch wie ursprünglich erwartet aus: jede Woche hat 700 EUR Umsatz, weil jede Woche aus 7 Tagen besteht.


Wer bisher schon die Weekname ()- Funktion benutzt hat, war auf der sicheren Seite. Nur das Format "YYYY/WW" ist nicht jedermanns Sache. Um also ein frei formatierbares Wochenfeld zu haben, dass sich auch gut numerisch sortieren lässt, schlagen wir folgende Felddefinition vor:

dual(
     Week(Datumsfeld)&'-'&WeekYear(Datumsfeld),
     num(weekname(Datumsfeld))
)
AS [Eindeutige Woche]

Das komplette Beispiel findet sich hier!








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.


 


heldendaten GmbH,2020