Qlik Sense Variance Waterfall für Bestände

Ab Qlik Sense Sept 2019 kommt im "Visualization Bundle" das Variance Waterfall Chart mitinstalliert. Die Darstellung ist viel dynamischer als das normale Wasserfalldiagramm, weil man nicht für jeden Balken eine eigene Expression schreiben muss.

Für normale YTD-Darstellungen in einer Vertriebsapplikation ist das Chart recht Straight Forward. Das Variance Waterfall Chart nutzt die gleichen Formeln wie das normale Wasserfalldiagramm, und läuft zusätzlich über das "Monat"-Feld. Im Beispiel unterhalb sieht man so auf einem Blick, dass die Monate Jänner, Februar und März noch besser als das Vorjahr waren, bevor sich dann in den Folgemonaten der Umsatz YTD schlechter entwickelt hat.

Qlik Sense Wasserfall Variance
Mit den YTD und YTD Vorjahr Formel zeigt das Variance Waterfall die Umsatzenwicklung nach Monaten aufgerissen!

Zuletzt hatten wir jedoch eine Anforderung mit diesem Charttyp die Veränderung von Beständen darzustellen. Beispiele dafür wären: Lagerbestände, Entwicklung Anzahl Kunden pro Monat, usw.

Für diese Anforderung scheint das Chart nicht unbedingt geschaffen, weil es das Konzept von Start-Bestand und End-Bestand nicht wirklich kennt, und es keine Differenz zum Vormonat bildet. Man sieht das ganz gut, wenn man sich den Javascript Code der Extension von Qlik  ansieht.

Wieder hilft uns aber ein Workaround den wir schon für die Sparklines im Climber KPI Objekt  (mittlerweile in das kommerzielle Vizlib aufgegangen) vorgestellt hatte. Mittels dimensionality(), below() und firstsortedvalue() kann man auch diese Anforderung darstellen. Die Formeln sind nur ein wenig komplizierter. Zum Test gibt es die Werte rechts als Tabelle.

Über zwei Jahre entwickelt sich der Lagerstand von 700.000 auf 670.000



STARTFORMEL:

rangesum(FirstSortedValue(distinct   aggr(nodistinct sum(Bestand),Monat), Monat,1),-0)



ENDFORMEL:
if (dimensionality() = 0,
 //Höhe Balken Zielmonat
 rangesum(FirstSortedValue( distinct   aggr(nodistinct sum(Bestand),Monat), -Monat,1))
,
 //Wert des Vormonats
    alt(
       below(
        rangesum(FirstSortedValue( distinct   aggr(nodistinct sum(Bestand),Monat), -Monat,1),-0)
        ,1)

     ,
 
        //im letzten Monate keinen Unterschied zeichnen
        rangesum(FirstSortedValue( distinct   aggr(nodistinct sum(Bestand ),Monat), -Monat,1))
    )

 )



Als Dimension nutzen wir ein eigenes Feld "MonatWasserfall" welches um ein Monat zum tatsächlichen Datum verschoben ist. Damit ist die Beschriftung dann schlüssiger.


Weil Bestände oft sehr hoch, und die Veränderungen verhältnismäßig klein sind können, haben wir auch noch die Funktion eingebaut, dass sich ein Anwender selbst den Skala-Start definieren kann. Gibt er in das Inputfeld 400.000 ein, sieht das Chart folgendermaßen aus, weil die Y-Achse nicht mehr bei 0 beginnt.


Variance Waterfall mit Y-Achse Start auf 400.000


Gibt der User gar keinen Wert ein, dann wählen wir mit der Formel =if(len(vSkala)=0, min (aggr(sum(Bestand),Datum)) * 0.95 ,vSkala) den Skalenwert dynamisch und geben ihn als Fußnote aus.



Dynamischer Y-Achse Startpunkt


Alternativ zur vorgestellten Lösung könnte ein As-Of-Ansatz im Datenmodell funktionieren wo immer das Vormonat "mitselektiert" wird. Das bleibt zu testen. Wer für unsere Lösung herausfindet wie man den letzten roten Balken im Jänner 2021 mit dem Wert 0 loswerden kann, darf sich gerne melden :-)

Der Download zum Qlik Sense Beispiel findet sich hier.
heldendaten GmbH,2017