Von Dezimalstunden zurück zur herkömmlichen Zeit: Dynamic Formatting in DAX

Im gestrigen Blogbeitrag habe ich gezeigt, wie man mit Hilfe von Power Query Zeitangaben im Format „25:15“ in dezimale Stundenangaben umwandelt, um diese für Berechnungen in Power BI zu nutzen. Heute möchte ich den Kreis schließen und eine Idee vorstellen, wie man die dezimale Stundenangabe durch DAX Dynamic Formatting wieder als herkömmliche Zeitangabe anzeigen kann.

Warum ist das wichtig? Dezimale Stunden erleichtern zwar Berechnungen, sind für viele Anwender jedoch ungewohnt zu lesen. Beispielsweise entspricht die dezimale Angabe „2.5 Stunden“ genau „2 Stunden und 30 Minuten“. Es ist daher hilfreich, das Ergebnis in einem benutzerfreundlichen Format anzuzeigen, ohne auf die Vorteile der Rechenbarkeit verzichten zu müssen.

Dynamic Formatting: Der Schlüssel zur flexiblen Darstellung

DAX Measures in Power BI ermöglichen mit der Funktion FORMAT die dynamische Formatierung von Zahlen oder Text. Kombiniert mit Logik können wir so eine dezimale Stundenangabe in ein verständliches Zeitformat umwandeln.

Der DAX-Code zur Generierung des Formatierungsstrings

Der folgende Code erzeugt einen dynamischen Formatierungsstring, der dezimale Stundenangaben in ein „hh:mm“-Format umwandelt:

VAR _decimalHours = SELECTEDMEASURE()
VAR _Minutes = MOD(_decimalHours, 1)
VAR _TimeString = FORMAT(_decimalHours - _Minutes + 0.6 * _Minutes, "#.00", "en-US")
VAR _FmtString =
    SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(
        _TimeString, "0", "\0"), "1", "\1"), "2", "\2"), "3", "\3"), "4", "\4"), "5", "\5"), "6", "\6"), "7", "\7"), "8", "\8"), "9", "\9"), ".", "\:")
RETURN
    _FmtString

Dynamic Formatting in DAX für herkömmlichen Zeitangabe

Wie funktioniert der Code?

  1. Berechnung der Minutenanteile:
    • MOD(_decimalHours, 1) extrahiert den Nachkommateil der Stunden.
    • Dieser Anteil wird mit 0.6 multipliziert, um die Minuten korrekt umzurechnen (z. B. 0.5 Stunden = 30 Minuten).
  2. Formatierung in einen String:
    • Der Wert wird in ein numerisches Format (#.00) umgewandelt, das zwei Dezimalstellen enthält.
  3. Ersetzung durch benutzerdefiniertes Zeitformat:
    • Mithilfe von SUBSTITUTE wird die Dezimalzahl in ein Zeitformat (z. B. „hh:mm“) umgewandelt, indem die Dezimalstelle durch einen Doppelpunkt ersetzt wird und jede Zahl mit einem Backslash (\) maskiert wird.
  4. Rückgabe des Strings:
    • Der erstellte Formatierungsstring wird als Ergebnis zurückgegeben.

Anwendung in Power BI

Um diese Logik in Power BI zu nutzen, kannst du den Measure direkt im Bericht aufrufen. Kombiniert mit Dynamic Formatting kannst du festlegen, dass das Ergebnis automatisch im gewünschten Format angezeigt wird, basierend auf deinen Eingaben oder Kontext.

Fazit

Mit dem Einsatz von Dynamic Formatting und DAX-Logik kannst du deine Power BI-Reports nicht nur funktional, sondern auch benutzerfreundlich gestalten. Die Möglichkeit, Werte im gewünschten Format darzustellen, verbessert die Lesbarkeit und macht die Daten für die Nutzer verständlicher.

Wie immer gilt: Probieren geht über Studieren! Ich bin gespannt auf eure Erfahrungen und freue mich über Feedback. 😊

Veröffentlicht von

Marcus Wegener

Marcus Wegener

Marcus Wegener ist Anwendungsentwickler für Business Intelligence und erstellt Lösungen, mit denen sich große Datenmengen schnell analysieren lassen. Kunden nutzen seine Lösungen, um die Vergangenheit zu analysieren, die Gegenwart zu steuern und die Zukunft zu planen, um damit mehr Erfolg zu generieren. Dabei ist seine einzigartige Kombination aus Wissen und Auffassungsgabe ein Garant für ihren Erfolg.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.