Visualisierung von Trends in Power BI mit Indikatoren: Teil 2 DAX-basierte Lösungen

In Dashboards ist die Visualisierung von Trends mit Indikatoren weit verbreitet und aufgrund des knappen Platzes sehr effizient. Mit DAX-basierten Lösungen können die Möglichkeiten diesbezüglich deutlich erweitert werden, dennoch müssen auch hier Einschränkungen hingenommen werden.

Ausgangssituation

Zur Visualisierung der Veränderung der Umsätze zum Vormonat ("Month over Month" -> zur Ermittlung siehe hier) mit rot-/grün-Indikatoren konnte mit den Bordmitteln von Power BI in Teil 1 dieser Blogserie folgendes erreicht werden:

Indikatoren auf Basis der UNICHAR-Funktion

Mit der UNICHAR-Funktionen können sämtliche Zeichen des sogenannten UNICODE Zeichensatzes dargestellt werden, vor allem auch jene, die nicht auf der Tastatur zu finden sind:

  • Unicode 9650 = gleichseitiges Dreieck mit Spitze nach oben
  • Unicode 61 = Gleichheitszeichen
  • Unicode 9660 = gleichseitiges Dreieck mit Spitze nach unten

Der UNICODE Zeichensatz kann beispielsweise hier durchsucht werden, für Power BI relevant ist die Nummer im HTML-Code:

Mit dieser Information und der UNICHAR-Funktion kann mit dem folgenden recht simplen DAX-Statement eine Trend Visualisierung als Measure realisiert werden (Hinweis: die SWITCH-Funktion erspart lediglich ein verschachteltes IF-THEN):

Trend 1 = 
VAR var_up = UNICHAR(9650)
VAR var_equal = UNICHAR(61)
VAR var_down = UNICHAR(9660)

RETURN
    SWITCH(
        TRUE();
        [Change in %] < 0; var_down; 
        [Change in %] > 0; var_up;
        [Change in %]=BLANK();BLANK();
        var_equal
    )

Wird das Measure in das bestehende Matrix Visual hinzugefügt, wird pro Zeile das entsprechende Zeichen als Indikator ausgegeben. Zur Verstärkung des optischen Effekts kann jetzt eine Bedingte Formatierung auf die Schriftfarbe (da der Indikator ein Schriftzeichen ist) definiert werden:

Wie in Teil 1 dieser Blogserie bereits gezeigt, wird die Bedingung nicht auf das gezeigte Measure Trend 1 sondern auf das Measure Change in % bezogen:

Wie ebenfalls bereits festgestellt, wird die Bedingte Formatierung im Matrix Visual derzeit nur auf die unterste gedrillte Ebene angewendet, die Zwischen- und Gesamtebenen bleiben leider unformatiert:

Da es sich bei dem Indikator um ein Schriftzeichen handelt, kann dieser sehr gut mit Texten verkettet werden, beispielsweise mit der Prozentabweichung, die mit der FORMAT-Funktion in einen formatierten Text konvertiert wird:

Trend 2 = 
VAR var_up = UNICHAR(9650)
VAR var_equal = UNICHAR(61)
VAR var_down = UNICHAR(9660)

RETURN
    FORMAT([Change in %];"#0 %")
    & " " &
    SWITCH(
        TRUE();
        [Change in %] < 0; var_down; 
        [Change in %] > 0; var_up;
        [Change in %]=BLANK();BLANK();
        var_equal
    )

Hier das Ergebnis:

Eine kleine optische Schwachstelle ist im Matrix Visual auf der Total-Ebene zu sehen: da es sich um einen Text handelt wird dieser standardmäßig linksbündig dargestellt. Die Änderung in den Settings auf rechtsbündig wirkt dann leider nicht auf die Total-Ebene.

Perfekt ist diese Lösung hingegen für die Anreicherung des Card Visuals um einen Indikator samt Prozentangabe: durch die optische Verschmelzung von 2 Card Visuals entsteht der Eindruck, daß es sich um ein einziges KPI Visual mit Indikator handelt:

Evaluierung:

  • Große Auswahl an Zeichen (+)
  • Einfach umzusetzen (+)
  • Einfache Verkettung mit Zahlen und Texten (+)
  • Der Indikator kann sowohl im Table/Matrix Visual als auch im Card Visual und im Multi-Row Card Visual angezeigt werden (+)
  • Im Matrix Visual werden derzeit die Zwischen- und Gesamtzeilen von der Bedingten Formatierung nicht erfasst (-) (das Feature befindet sich allerdings bereits im Backlog des DEV-Teams)
  • Im Matrix Visual kann der Indikator (oder der verkettete Text) nicht vollständig rechtsbündig angezeigt werden, da das Setting derzeit nicht auf den Total-Level wirkt (-)

Quellen:

Indikatoren auf Basis der IMAGE-URL Kategorisierung: SVG Files

SVG (Scalable Vector Graphics) Files sind öffentlich verfügbare Bilder, die mittels URL-Parametrisierung online erzeugt werden. Beachten Sie bitte, daß das eigentliche DAX Statement auch hier sehr simpel ist, umfangreich ist lediglich die Konfiguration der URL für die 3 benötigten SVG-Files:

Trend (SVG) = 
VAR MessageText = ""
VAR Radius = 9
VAR Colour = "blue"
VAR Opacity = 0,75

VAR SVG_neutral = "data:image/svg+xml;utf8,"
    & "<svg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' width='50' height='20'>"
    & "<circle cx='25' cy='10' r='"
    & Radius
    & "' fill='"
    & Colour
    & "' fill-opacity='"
    & Opacity
    & "' />"
    & "</svg>"

VAR SVG_up = "data:image/svg+xml;utf8,"
    & "<svg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' width='50' height='20'>"
    & "<polygon points=""05,20 45,20 25,1"" style=""fill:#7ACA00;stroke:green;stroke-width:0;fill-rule:evenodd;"" />"
    & "</svg>"

VAR SVG_down = "data:image/svg+xml;utf8,"
    & "<svg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' width='50' height='20'>"
    & "<polygon points=""05,1 45,1 25,20"" style=""fill:#FF0000;stroke:red;stroke-width:0;fill-rule:evenodd;"" />"
    & "</svg>"

RETURN
    SWITCH (
        TRUE ();
        [Change in %]>0; SVG_up;
        [Change in %]<0; SVG_down;
        SVG_neutral
    )

Das Measure muß jetzt über die Data Category Eigenschaft als Image URL definiert werden, damit nicht der Link sondern das Image angezeigt wird:

Hier die fertige Visualisierung im Matrix Visual, für eine möglichst platzsparende Darstellung muß die Eigenschaft Image Height auf das Minimum eingestellt werden (hier: 24):

Evaluierung:

  • Korrekte Darstellung auf allen Ebenen des Matrix Visuals, da keine bedingte Formatierung angewendet wird sondern bereits ein farbiges Bild abgerufen wird (+)
  • Das Bild wird mittels URL "konstruiert", es braucht daher keinen Upload und keine Wartung (+)
  • Die Mindestzeilenhöhe für Images ist derzeit leider empfindlich zu hoch, sodaß das Matrix Visual für die Darstellung der gleichen Anzahl an Zeilen empfindlich mehr Platz braucht (-)
  • Eine (platzsparende) Verkettung mit Zahlen und Texten ist hier nicht möglich (-)
  • Der IMAGE-URL Indikator kann nur im Table/Matrix Visual angezeigt werden, nicht aber im Card Visual und im Multi-Row Card Visual (-)

Quellen:

Indikatoren auf Basis der IMAGE-URL Kategorisierung: JPG Files

Alternativ zu den SVG Files können auch beliebige eigene Images auf einen öffentlich erreichbaren Webspace geladen und in einem Measure verarbeitet werden:

Trend (JPG) = 
VAR Image_Up = "https://linearis.at/wp-content/uploads/Image-Up.jpg"
VAR Image_Down = "https://linearis.at/wp-content/uploads/Image-Down.jpg"
VAR Image_Neutral = "https://linearis.at/wp-content/uploads/Image-Neutral.jpg"

RETURN
SWITCH(
    TRUE();
    [Change in %]>0;Image_Up;
    [Change in %]<0;Image_Down;
    Image_Neutral
)

Das Measure muß wiederum als Image URL kategorisiert werden, damit nicht die URL sondern das Image dargestellt wird (und auch die Image Height wird wiederum auf den Minimumwert von 24 reduziert):

Evaluierung

  • Korrekte Darstellung auf allen Ebenen des Matrix Visuals (+)
  • Es können beliebige (firmenspezifische) Bilder verwendet werden (+)
  • Ist ein öffentlicher Webspace verfügbar, ist diese Methode bei wenigen Indikatoren häufig einfacher als die Konstruktion des SVG Images via URL (+)
  • Der Platzbedarf ist hier noch geringfügig höher als bei den SVG Files, sodaß das Matrix Visual zur Abbildung der gleichen Anzahl von Zeilen noch etwas mehr Platz benötigt als bei der Verwendung von SVG Files (-)
  • Die Images müssen dauerhaft erreichbar bleiben -> Wartungsbedarf (-)
  • Der IMAGE-URL Indikator kann nur im Table/Matrix Visual angezeigt werden, nicht aber im Card Visual und im Multi-Row Card Visual (-)

Zusammenfassung

Im direkten Vergleich zwischen allen vorgestellten Methoden liefern die beiden IMAGE-URL Methoden (rechts außen) eine durchgehende Visualisierung über alle Ebenen, benötigen aber auch etwas mehr Platz als die anderen Methoden:

Power BI Camp - Präsenztrainings in Wien und Nürnberg!

DAX & Datenmodellierung, Power Query und Dashboarding mit Power BI - als einzelnes Modul oder als ganze Trainingswoche!

Nürnberg 20. bis 24. April 2020
Wien 04. bis 08. Mai 2020
Early Bird!
Share on linkedin
Share on twitter
Share on facebook

Leave a Replay

Über den Autor

Blog auf Feedly abonnieren

Kategorien

Verwandte Beiträge

Kostenlos zum Newsletter anmelden

Ihre Anfrage

Schicken Sie uns Ihre Fragen und Anregungen!