Project Online – Aktualisierungszeit mit Sommer- und Winterzeit in Power BI Service ausgeben

Vor einigen Jahren habe ich einen Blog-Artikel mit dem Titel „Power BI – Statusdatum in Projektberichten“ veröffentlicht. In diesem Artikel erklärte ich, wie man das aktuelle Datum der letzten Aktualisierung auslesen kann. Dies funktioniert grundsätzlich gut, wenn nur das Datum ausgegeben werden soll. Einige meiner Kunden benötigen jedoch auch die Uhrzeit der letzten Aktualisierung, und hierbei gibt es mit der von mir zuvor beschriebenen Lösung einige Probleme. Das erste Problem besteht darin, dass Power BI Services (Browser) nur die UTC-0-Zeit anzeigen können. Zweitens haben wir Sommer- und Winterzeiten, die bei der Ausgabe der Uhrzeit berücksichtigt werden müssen. In diesem Blog-Artikel möchte ich dir zeigen, wie du die aktuelle Aktualisierungszeit in der richtigen UTC-Zeit ausgeben kannst.

Für dieses Beispiel benötigst du mindestens eine Power BI Pro-Lizenz, wenn du den Bericht in einem freigegebenen Bereich veröffentlichen möchtest. Solltest du keine Power BI Pro-Lizenz besitzen, kannst du den Bericht jedoch zu Testzwecken nur in deinem persönlichen Arbeitsbereich bereitstellen.

Problemanalyse (UTC-0)

Damit du das Problem richtig verstehst, legen wir zunächst eine neue Abfrage mit der aktuellen Zeit an, fügen diese dann einem Bericht hinzu und laden anschließend den Bericht in die Power BI Services hoch. Öffne dazu Power BI Desktop mit einem leeren Bericht. Öffne dann den Power BI Query Editor, indem du auf die Registerkarte „Start (1) klickst und anschließend im Ribbon-Menü auf die Schaltfläche „Daten transformieren(2) klickst.

Klicke unter „Neue Quelle“ auf den Pfeil nach unten und wähle im Kontextmenü die Option „Leere Abfrage“ aus. Gib in der Eingabeleiste die Formel = DateTime. LocalNow()ein (1). Dir wird das entsprechende Datum angezeigt. Klicke mit der Maus auf der rechten Seite in das Eingabefeld unter „Name“ und ändere den Namen von „Abfrage 1“ in „Aktuelles Datum mit Zeit (Test)(2). Klicke abschließend auf Enter, um die Eingabe zu übernehmen. Auf der linken Seite wird der Name der Abfrage entsprechend angepasst (3). Deine Ansicht sollte nun wie folgt aussehen.

Klicke im Menüband auf die Registerkarte „Start“ und dann auf die Schaltfläche „Schließen & Laden“. Der Power Query Editor wird geschlossen, und wir können nun einfach das Feld auswerten. Klicke dazu unter „Build“ auf das Visual „Karte(1), dann auf das Datensymbol (2) innerhalb der Karte und anschließend auf „+ Daten hinzufügen(3). Wähle dort das Feld „Aktuelles Datum mit Zeit (Test)“ (4) aus.

Hinweis: Hierbei wird uns das richtige Datum mit der entsprechenden Uhrzeit angezeigt.

Der Bericht wird nun in den Power BI Services bereitgestellt. Schließe das Fenster. Öffne Power BI und wechsle dort zu deinem Arbeitsbereich, in dem du den Bericht veröffentlicht hast. Fahre mit der Maus über das bereitgestellte DataSet und wähle im erscheinenden Menü die Option „Aktualisieren(1). Hinter der Spalte „Aktualisiert“ wird dir ein rotierender Kreis angezeigt. Warte, bis dieser verschwindet.

Öffne jetzt den Bericht, indem du auf den Link klickst. Wie du sehen kannst, wird hier die UTC-0-Zeit angezeigt, also zwei Stunden vor unserer Zeitzone. Im Winter wäre es eine Stunde vor unserer Zeitzone.

Anlegen einer neuen Abfrage

Öffne erneut Power BI Desktop und unser zuvor erstelltes Beispiel. Öffne dann erneut den Power Query Editor. Klicke auf die Registerkarte „Start“ und dann erneut auf den Pfeil unter der Schaltfläche „Neue Quelle“. Wähle im Kontextmenü die Option „Leere Abfrage“ aus. Im Gegensatz zum vorherigen Beispiel (=DateTime. LocalNow()) geben wir jetzt die aktuelle Zeitzone aus. Hierzu trägst du die Formel =DateTimeZone. UtcNow()ein. Bestätige die Eingabe, indem du auf das Häkchen klickst. Du siehst nun die aktuelle Zeitzone UTC-0. Jetzt können wir auch die Zeitzone anpassen und die Zeit um 2 Stunden erhöhen. Hierzu nutzen wir die Formel DateTimeZone. SwitchZone“. Schließe die vorherige Formel mit der DateTimeZone.UtcNow-Formel zusammen und gib an, um wie viele Stunden (z. B. +2 Stunden Sommerzeit) und Minuten (z. B. 0 Minuten) sie erhöht werden soll. Die Formel sieht wie folgt aus: DateTimeZone. SwitchZone (DateTimeZone. UtcNow(), +2,0)(1). Gib im Eingabefeld „Name“ den Namen „Aktuelles Datum mit Zeit (UTC+2)(2) ein. Klicke auf Enter, um deine Eingabe zu bestätigen.

Passen wir noch den Namen für unseren Schritt an. Klicke dazu auf die Registerkarte „Start“ und wähle im Menü die Option „Erweiterter Editor“. Ersetze den Namen „Quelle“ durch „AktuelleZeit“. Schließe das Fenster, indem du auf „Fertig“ klickst.

So, jetzt passt die Uhrzeit. Wenn wir dieses Feld jetzt in unseren Bericht integrieren würden, würde die Zeitzone korrekt angepasst werden. Allerdings würde dies nur bis zur nächsten Sommer- oder Winterzeit funktionieren, danach würde uns wieder eine Stunde fehlen. Die Lösung besteht nun darin, die Jahresangabe unserer Formel „DateTimeZone. SwitchZone (DateTimeZone.UtcNow(), +2,0)“ variabel anzupassen. Ist es Sommerzeit, schreibe eine 2 in die Variable, im Falle der Winterzeit eine 1.

Berechnung der Sommer- und Winterzeit.

Die Sommerzeit wird immer am letzten Sonntag im März und die Winterzeit am letzten Sonntag im Oktober eingestellt. Also müssen wir zunächst berechnen, welches Datum dies in einem bestimmten Jahr ist. Dazu werten wir zuerst das aktuelle Jahr aus. Öffne hierzu erneut den erweiterten Editor. Füge hinter unsere Zeile „AktuelleZeit“ ein Komma ein. Wechsle eine Spalte nach unten, indem du auf Enter klickst. Gebe jetzt „AktuellesJahr =“ ein. Nun werten wir das aktuelle Jahr mit zwei Formeln aus. Die Formel „DateTime. LocalNow() gibt uns bekanntlich die aktuelle Zeit wieder, die auch das Jahr beinhaltet. Die zweite Formel ist „Date.Year()“, welche das aktuelle Jahr ausgibt. Wenn wir diese beiden Formeln verschachteln, indem wir sie zu „Date.Year(DateTime.LocalNow())“ kombinieren, erhalten wir das aktuelle Jahr. Gebe die Formel nun ein: AktuellesJahr =Date.Year(DateTime.LocalNow())“. Die Ansicht sollte nun wie folgt aussehen.

Jetzt kannst du den letzten Sonntag im März und im Oktober auswerten. Hierfür benötigen wir wieder mehrere verschachtelte Formeln. Klicke erneut mit der Maus hinter der gerade erstellten Spalte „AktuellesJahr“ und setze erneut ein Komma. Drücke dann die Enter-Taste, um in die nächste Zeile zu gelangen. Fangen wir mit der Sommerzeit an. Gebe als Name „Sommerzeit =“ ein. Als erstes benötigst du die Systemfunktion #date(), mit der wir ein bestimmtes Datum festhalten können. Um den 31.03.2024 einzugeben, sieht die Formel wie folgt aus: #date(2024,3,31). Da wir jedoch das Jahr mit dem aktuellen Jahr abfragen wollen, ersetzen wir 2024 durch unsere zuvor erstellte Variable „AktuellesJahr“. Jetzt benötigen wir die nächste Funktion mit dem Namen Date.StartOfWeek()“, mit der wir abfragen können, welcher Tag der erste Tag in der Woche des Datums #date() ist. Hier wird standardmäßig der Montag ausgegeben. Wir wollen jedoch den Sonntag in der Woche abfragen, also fügen wir zum Schluss noch , Day.Sunday“ hinzu. Da es bei der Winterzeit um dieselbe Formel handelt, kopierst du einfach die gerade erstellte Spalte in die Zwischenablage. Gehe dann mit der Maus wieder an die letzte Stelle der Formel „Sommerzeit“, füge erneut ein Komma hinzu, drücke die Enter-Taste und füge dann die Formel erneut aus der Zwischenablage hinzu. Ändere den Namen von „Sommerzeit“ in „Winterzeit“ und ändere dann das Datum auf den 31.10. Die Ansicht sollte wie folgt aussehen.

Damit wir nun eine Abfrage starten können, benötigen wir noch das aktuelle Datum mit der aktuellen Zeit zum Vergleichen. Gehe also erneut mit der Maus hinter die Zeile „Winterzeit“ und füge ein Komma hinzu. Klicke dann auf die Enter-Taste. Füge nun den Namen „AktuelleTagesZeit =“ hinzu. Jetzt könntest du einfach die Formel „DateTimeZone. UtcNow()“ nutzen. Diese gibt jedoch auch die aktuelle Zeitzone aus, die wir für den Vergleich nicht benötigen bzw. die einen Fehler verursachen würde. Daher müssen wir „+00:00“ abschneiden. Dies können wir mit der Formel DateTimeZone. RemoveZone() umsetzen. Gebe also die Formel „DateTimeZone. RemoveZone(DateTimeZone. UtcNow()) ein. Die Ansicht sollte jetzt wie folgt aussehen.

So, jetzt können wir die Abfrage generieren, um festzustellen, ob wir uns in der Sommer- oder Winterzeit befinden. Sind wir in der Sommerzeit, soll die Variable den Wert 2 erhalten, sind wir in der Winterzeit, den Wert 1. Gehe wieder an die letzte Stelle der gerade erstellten Spalte. Trage erneut ein Komma ein und drücke die Enter-Taste. Gebe nun den Namen „Jahreszeit =“ ein. Starten wir die Abfrage mit einem „if“ und geben die zuvor erstellte Variable „AktuelleTagesZeit=“ ein. Füge dann den Vergleich hinzu: größer als (>) die Sommerzeit. Füge bei der Sommerzeit noch die Zeit von 1 Stunde hinzu. Dies kannst du mit dem Zusatz #time(1,0,0)machen. Jetzt fragen wir noch ab, ob die Zeit eventuell unter der Winterzeit liegt. Füge ein „or“ (oder) hinzu und vergleiche die Zeit mit der Winterzeit, wobei du ebenfalls die #time(1,0,0)hinzufügst. Jetzt bestimmst du, was dann passieren soll. Schreibe „then“ (dann) und gebe eine 1 ein. Danach folgt das „else“ (sonst), in das du eine 2 einträgst. Die Darstellung sollte wie folgt aussehen.

Hinweis: Achte auf Groß- und Kleinschreibung (Case-sensitive) hier passieren oft Fehler.

Jetzt können wir unsere Logik abschließen und kopieren die Variable „Jahreszeit“ einfach in die Formel von „AktuelleZeit“ an die Stelle, wo die +2 steht. Deine Ansicht sollte jetzt wie folgt aussehen.

Klicke jetzt im unteren Bereich auf „Fertig“. Du siehst jetzt bereits, dass die 2 Stunden addiert werden. Überprüfen wir das Ergebnis in den Power BI Services.

Überprüfung des Ergebnisses

Schließe den Power Query Editor, indem du unter der Registerkarte „Start“ auf „Schließen & Laden“ klickst. Füge nun eine weitere „Karte“ (1) aus dem Build-Bereich hinzu. Klicke erneut auf den „Datenbereich“ (2), wähle im Menü „+ Daten hinzufügen“ (3) aus und dann die Option „Aktuelles Datum mit Zeit (UTC+2)“ (4).

Veröffentliche wie oben beschrieben den Bericht im selben Arbeitsbereich. Sollte Power BI fragen, ob der Bericht gespeichert werden soll, klicke auf „Ja“. Anschließend erscheint die Abfrage, ob der Bericht überschrieben werden soll. Schließe das Fenster, indem du auf „Ersetzen“ klickst.

Wechsel nun zu Power BI und aktualisiere den Bericht erneut, wie oben beschrieben. Wie du erkennst, wird die Zeit korrekt ausgegeben.

Eine Antwort zu „Project Online – Aktualisierungszeit mit Sommer- und Winterzeit in Power BI Service ausgeben“

  1. […] Das erste Problem besteht darin, dass Power BI Services (Browser) nur die UTC-0-Zeit anzeigen kann. Zweitens müssen Sommer- und Winterzeiten bei der Ausgabe der Uhrzeit berücksichtigt werden. In meinem aktuellen Blog-Artikel zeige ich dir, wie du die aktuelle Aktualisierungszeit in der richtigen UTC-Zeit ausgeben kannst [🔗]. […]

Schreibe einen Kommentar

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

Ich erkläre mich damit einverstanden, dass meine eingegebenen Daten und meine IP-Adresse nur zum Zweck der Spamvermeidung durch das Programm Akismet in den USA überprüft und gespeichert werden.
Weitere Informationen zu Akismet und Widerrufsmöglichkeiten.

Die folgenden im Rahmen der DSGVO notwendigen Bedingungen müssen gelesen und akzeptiert werden:
Durch Abschicken des Formulars wird dein Name, E-Mail-Adresse und eingegebene Text in der Datenbank gespeichert. Für weitere Informationen wirf bitte einen Blick in die Datenschutzerklärung.