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!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.