Dynamischer Power BI Kalender – Feiertagsliste

Hits: 1457

Im ersten Teil haben wir einen dynamischen Kalender aufgrund einer Faktentabelle erstellt. Diesem Kalender fehlen noch die Feier- und Arbeitstage. In diesem Beitrag zeige ich, wie die Feiertagsliste einfach erstellt werden kann.

Feiertagsliste erstellen

Ständige Feiertage

In einer neuen Query definieren wir als Erstes eine Feiertagsliste mit den ständigen, das heisst unveränderlichen Feiertagen.
Neujahr = Number.From(DateTimeZone.From("01.01." & Text.From(Jahr))),
Bundesfeier = Number.From(DateTimeZone.From("01.08." & Text.From(Jahr))),
Weihnachtstag = Number.From(DateTimeZone.From("25.12." & Text.From(Jahr))),
Stephanstag = Number.From(DateTimeZone.From("26.12." & Text.From(Jahr))),
Neujahr = Number.From(DateTimeZone.From("01.01." & Text.From(Jahr))),
Bundesfeier = Number.From(DateTimeZone.From("01.08." & Text.From(Jahr))),
Weihnachtstag = Number.From(DateTimeZone.From("25.12." & Text.From(Jahr))),
Stephanstag = Number.From(DateTimeZone.From("26.12." & Text.From(Jahr))),

Ostern berechnen

Für die Berechnung von Ostern sowie der von diesem Datum abhängigen Feiertagen benötigen wir eine Formel. Ich gehe hier nicht im Detail darauf ein. Die Formel findet ihr hier.

Diese Formel wandeln wir in folgende Skript um:

Ostersonntag=
Number.Round
(
Number.From
(
Number.From
(
Date.From
(
DateTimeZone.From("01.04."&Text.From(Jahr))
), type date
), Int64.Type
)/7 +
Number.Mod
(
19*Number.Mod(Jahr,19)-7,30
)*0.14
,0
)*7-6,

Von diesem Datum ausgehend können wir nun die restlichen Feiertage berechnen:
Karfreitag = Ostersonntag-2,
Ostermontag = Ostersonntag+1,
Auffahrt = Ostersonntag+39,
Pfingstmontag = Ostersonntag+50,

Mit diesen Werten erstellen wir nun die ganze Feiertagsliste:
Feiertagsliste= Table.FromList
(
{
[A="Neujahr", B=Neujahr],
[A="Karfreitag", B=Karfreitag],
[A="Ostersonntag", B=Ostersonntag],
[A="Ostermontag", B=Ostermontag],
[A="Auffahrt", B=Auffahrt],
[A="Pfingstmontag", B=Pfingstmontag],
[A="Bundesfeier", B=Bundesfeier],
[A="Weihnachtstag", B=Weihnachtstag],
[A="Stephanstag", B=Stephanstag]
Record.FieldValues, {"Feiertag", "Datum"}

Das ganze Skript soll uns für die nächsten Schritte als Funktion dienen. Wir ergänzen es deshalb in der ersten Zeile um folgenden Befehl:
(Jahr) =>

Das ganze Skript

Das ganze Skript sieht wie folgt aus:
(Jahr) =>
let
Neujahr = Number.From(DateTimeZone.From("01.01." & Text.From(Jahr))),
Bundesfeier = Number.From(DateTimeZone.From("01.08." & Text.From(Jahr))),
Weihnachtstag = Number.From(DateTimeZone.From("25.12." & Text.From(Jahr))),
Stephanstag = Number.From(DateTimeZone.From("26.12." & Text.From(Jahr))),
Ostersonntag=
Number.Round
(
Number.From
(
Number.From
(
Date.From
(
DateTimeZone.From("01.04."&Text.From(Jahr))
), type date
), Int64.Type
)/7 +
Number.Mod
(
19*Number.Mod(Jahr,19)-7,30
)*0.14
,0
)*7-6,
Karfreitag = Ostersonntag-2,
Ostermontag = Ostersonntag+1,
Auffahrt = Ostersonntag+39,
Pfingstmontag = Ostersonntag+50,

Feiertagsliste= Table.FromList
(
{
[A=”Neujahr”, B=Neujahr],
[A=”Karfreitag”, B=Karfreitag],
[A=”Ostersonntag”, B=Ostersonntag],
[A=”Ostermontag”, B=Ostermontag],
[A=”Auffahrt”, B=Auffahrt],
[A=”Pfingstmontag”, B=Pfingstmontag],
[A=”Bundesfeier”, B=Bundesfeier],
[A=”Weihnachtstag”, B=Weihnachtstag],
[A=”Stephanstag”, B=Stephanstag]
},
Record.FieldValues, {“Feiertag”, “Datum”}
)
in
Feiertagsliste
Sobald wir die Funktion aufrufen wird die Angabe des Jahres verlangt. Danach erstellt die Funktion die Feiertagsliste des eingegebenen Jahres. Die Spalte „Datum“ wandeln wir in das Datumsformat – eh voilà!
Feiertagsliste

Im nächsten Beitrag ergänzen wir unser Query aus dem ersten Teil um die Arbeitstage unter Berücksichtigung der Feiertage.
Mehr Artikel über Power Query findet Ihr im Power Query Online Buch.

Happy Querying!

Deine Bewertung
[Total: 0 Average: 0]

Ein Gedanke zu „Dynamischer Power BI Kalender – Feiertagsliste

Kommentar verfassen

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website stores some user agent data. These data are used to provide a more personalized experience and to track your whereabouts around our website in compliance with the European General Data Protection Regulation. You may find further informations here: Privacy Policy   If you decide to opt-out of any future tracking, a cookie will be set up in your browser to remember this choice for one year. I Agree, Deny
856
%d Bloggern gefällt das: