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
Wie funktioniert der Code?
- 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).
- Formatierung in einen String:
- Der Wert wird in ein numerisches Format (
#.00
) umgewandelt, das zwei Dezimalstellen enthält.
- Der Wert wird in ein numerisches Format (
- 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.
- Mithilfe von
- 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. 😊