Nur noch 400 Tassen Kaffee und dann ist schon wieder Wochenende
Ernst schickt mir eine Lösung zur korrekten Berechnung der Kalenderwoche nach ISO in Power Query:
Hallo Rene,
Du hast in letzter Zeit mehrere Beiträge zu Power Query gepostet.
Vor einiger Zeit habe ich eine Möglichkeit beschrieben, die Iso-Kalenderwoche mit WORD-Feldfunktionen zu berechnen. Nun habe ich den verwendeten Algorithmus auf Power Query „M“ übertragen.
Die benutzerdefinierte Funktion sieht sieht dann in der einfachen Variante wie folgt aus.
InputDaten as any) as any =>
let
Quelle = DateTime.Date(InputDaten),
Wochentag = Date.DayOfWeek(Quelle,Day.Monday)+1,
Jahr = Date.Year(Date.AddDays(Quelle, 4-Wochentag))-1
IsoKw = Number.IntegerDivide(Duration.Days(Quelle – #date(1901,1,1)) – Wochentag-Duration.Days(#date(Jahr,12,21) – #date(1901,1,1)),7)
in
IsoKw
In einer Version, in der eine Erläuterung mit angezeigt wird sieht sie wie folgt aus.
let
//Errechnet die Kalenderwoche nach ISO 8601 eines Datums.
ISOKW =
let
Function = (InputDaten as any) as any =>
let
Quelle = DateTime.Date(InputDaten),
Wochentag = Date.DayOfWeek(Quelle,Day.Monday)+1,
Jahr = Date.Year(Date.AddDays(Quelle, 4-Wochentag))-1,
FunctionResult = Number.IntegerDivide(Duration.Days(Quelle-#date(1901,1,1))-Wochentag-Duration.Days(#date(Jahr,12,21)-#date(1901,1,1)),7)
in
FunctionResult,
FunctionType = type function (InputDaten as any) as any
meta [
Documentation.Name = „ISOKW“,
Documentation.LongDescription = „Calculates the calendar week according to ISO 8601 of a date.“,
Documentation.Examples = {
[Description = „“, Code = „ISOKW(#date(2024,12,30)“, Result = „1“]
}
],
TypedFunction = Value.ReplaceType(Function, FunctionType)
in
TypedFunction
in
ISOKW
Was mir an dieser cleveren Lösung gut gefällt, ist der Teil der Metadaten. Diese Teile werden beim Selektieren der Funktion angezeigt. Große klasse!