Der Beitrag vom 2.9.2024 zeigt, wie der Aktualisierungszeitpunkt in Power BI Desktop korrekt angezeigt wird. Was aber, wenn der Bericht im Power BI Service veröffentlicht wird?
Dann bezieht sich der Befehl DateTime.LocalNow() nicht mehr auf die lokale Systemzeit, sondern auf die Weltzeit (UTC). Das bedeutet bei der Winterzeit eine Differenz von -1 Std. (Offset UTC+1) und bei der Sommerzeit eine Differenz von -2 Std. (Offset UTC+2).
Eine benutzerdefinierte Funktion in Power Query sorgt für die erforderliche Korrektur. Folgende fünf einfache Schritte führen zur Lösung.
Schritt 1: Die benutzerdefinierte Funktion in Power Query erstellen
- In Power BI Desktop wähle ich Start > Daten abrufen > Leere Abfrage.
- Über die Registerkarte Ansicht > erweiterter Editor wechsle ich in den erweiterten Editor.
- Den dort angezeigten Code ersetze ich durch folgenden Code:
(DateTimeUTC as datetime) as datetime =>
let
// Jahr von DateTimeUTC extrahieren
Year = Date.Year(DateTimeUTC),
// Beginn der Sommerzeit: letzter Sonntag im März, um 02:00:00 Uhr (01:00:00 Uhr UTC)
StartSommerzeit = Date.StartOfWeek(#date(Year, 3, 31), Day.Sunday) & #time(1, 0, 0),
// Ende der Sommerzeit: letzter Sonntag im Oktober, um 03:00:00 Uhr (01:00:00 Uhr UTC)
EndSommerzeit = Date.StartOfWeek(#date(Year, 10, 31), Day.Sunday) & #time(1, 0, 0),
// Berechnung Zeitverschiebung:
OffsetToUTC = if DateTimeUTC > StartSommerzeit and DateTimeUTC <= EndSommerzeit then 2 else 1,
// Umrechnung UTC in lokale Zeit
Output = DateTimeUTC + #duration(0, OffsetToUTC, 0, 0)
in
Output
- Die benutzerdefinierte Funktion benenne ich rechts oben um in funSommerWinterZeit.
- Anschließend teste ich die Funktion, indem ich im Feld DateTimeUTC einen DateTime-Wert eingebe, beispielsweise 09.09.2024 11:44.
In Power Query die benutzerdefinierte Funktion mit dem DateTime-Wert 09.09.2024 11:44 testen
Schritt 2: Die benutzerdefinierte Funktion anwenden
- Die automatisch generierte Abfrage gibt nun den Wert 09.09.2024 13:44:00 zurück.
- In der Bearbeitungsleiste des Power Query-Editors ersetze ich nun bei der generierten Abfrage den Code #datetime(2024, 9, 9, 11, 44, 0) durch DateTime.LocalNow().
- Die Abfrage benenne ich rechts oben um in LetzteAktualisierung.
- Über Start > Schließen und übernehmen wechsle ich zurück in die Berichtsansicht von Power BI Desktop.
In Power Query mit einer Abfrage den korrigierten Aktualisierungszeitpunkt ermitteln
Schritt 3: Den Aktualisierungszeitpunkt über ein Measure verfügbar machen
Um den Aktualisierungszeitpunkt in Berichtsseiten verwenden zu können, erstelle ich wie folgt ein Measure:
- Auf der Registerkarte Start klicke ich auf Neues Measure.
- In die Bearbeitungsleiste gebe ich den unten gezeigten Code ein:
Das Ergebnis der Abfrage in ein Measure einbauen
Schritt 4: Das neue Measure einsetzen
- Das Measure kann ich nun im Karten-Visual oder bei diversen Visuals als dynamischen Titel nutzen.
- Bei jeder erfolgreichen Aktualisierung liefert die Abfrage bzw. das Measure den formatierten Aktualisierungszeitpunkt zurück.
Das Measure verwenden
Schritt 5: Report in das Power BI Service hochladen
- Auf der Registerkarte Start klicke ich auf Veröffentlichen, wähle den passenden Arbeitsbereich aus und bestätige mit Auswählen.
- Wird das Semantikmodell im Power BI Service erfolgreich aktualisiert, korrigiert nun die benutzerdefinierte Funktion den Aktualisierungszeitpunkt bei der Winterzeit um das Offset UTC+1 und bei der Sommerzeit um das Offset UTC+2.
Der Aktualisierungszeitpunkt wird im Power BI Service korrekt angezeigt
Über den Autor