Mit Qlik die Jahres- und Monatssummen in einem Balkendiagramm nebeneinander darstellen
Blog

Mit Qlik die Jahres- und Monatssummen in einem Balkendiagramm nebeneinander darstellen

3 min read Jun 12, 2023

Mit Qlik ist es möglich, in einem Diagramm Jahres- und Monatssummen nebeneinander darzustellen. Weil es sich dabei aber um zwei unterschiedliche Dimensionen handelt, ist dies gar nicht selbstverständlich. Deshalb erfahren Sie in diesem Blogpost, wie man beispielsweise die zwei Vorjahre und die aktuellen Monatsperioden in einem Chart gemeinsam anzeigen kann!

undefined

In QlikView hätte man natürlich die Möglichkeit zwei Charts nebeneinander zu schummeln, aber spätestens beim Export wäre das negativ aufgefallen. Die zweite Möglichkeit die mir Adhoc eingefallen wäre, wäre eine Formel für jede einzelnen Balken zu schreiben. Das ist aber aufwändig und in Kombination mit den gewünschten Stacked Bars auch nicht ohne weiteres möglich. Eine Lösung im Datenmodell wäre wohl machbar, ist aber immer extra Arbeit.

Ein Kunde ist dann selbst mit einer sehr interessanten Lösung auf uns zugekommen, die ich hier vorstellen möchte. Das Ergebnis sehen Sie hier als animiertes .gif: in der Qlik Sense Applikation sind zwei Balkendiagramme. Im oberen Balkendiagramm werden die Monatswerte einzeln dargestellt, im unteren Balkendiagramm sind die Monatswerte akkumuliert (Dezember 2017 zeigt das Gesamtjahresergebnis). Die Tabelle rechts wiederum dient zur Validierung der Zahlen.
undefined

Die Lösung besteht aus zwei Teilen: Einer dynamischen Dimension und einer etwas komplexeren Formel.

Die dynamische Dimension:

=if(GetFieldSelections(Jahr,',')=Jahr,
monthname(Bestelldatum),dual(Jahr,makedate(Jahr,12,31)))

Die Formel prüft welches Jahr der User gewählt hat und zeigt für eben dieses die Monatsnamen an. Das „dual“ im ELSE-Zweig stellt sicher, dass die Sortierung der Balken sinnvoll ist.
Die Chart-Formel selbst überschreibt dann mit Set Analysis die Jahresselektion, damit alle 3 Jahre angezeigt werden:

sum({<Jahr=>} Anzahl*Einzelpreis)

Ein wenig komplexer wird die Formel für das untere Barchart, weil wir die einzelnen Monate akkumulieren wollen.

if(GetFieldSelections(Jahr,',')=only(Jahr),

    rangesum(
    if(month(Bestelldatum) = 1,
            0, //Im Jänner nicht above nehmen
            above([Jahr Monat Umsatz Aggregiert])
        ),    
        sum(Anzahl*Einzelpreis)
    ),
    sum({<Jahr=>} Anzahl*Einzelpreis) //nicht selektierte Jahre
)

Hier sticht ins Auge, dass man in der Formeldefinition mit "Jahr Monat Umsatz Aggregiert" wieder rekursiv auf die Master Item Bezeichnungsformel zugreifen kann.
undefined

Achtung: Auf einer Qonnections hat das Qlik Scalability Team davor gewarnt, dass dynamische Expressions mit mehr als einem Feld den Qlik Server Cache brechen. Bei sehr großen Applikationen kann es also CPU-hungrig werden! Bitte vorab testen!

Für QlikView funktioniert der Trick genauso!

Sie mögen, was Sie lesen?

Melden Sie sich zu unserem Newsletter an und bleiben Sie up-to-date.

Über den Autor

Roland Vecera

Data Solution Architect

LinkedIn