Aufrufe: 7231
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.
Willst du Power BI lernen?
Auf unseren neuen Seite Power BI Coach haben wir einen Onlinekurs zusammengestellt.
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à!
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!
Pingback:Dynamischer Power BI Kalender – Arbeitstage - PowerBI Pro
Pingback:Dynamischer Kalender in Power BI - Power BI
Pingback:Dynamischer Power BI Kalender – Arbeitstage - Power BI