ISO 8601 Kalenderwoche in DAX mit verstecktem Parameter berechnen

January 3, 2021
Denis Selimovic
DAXcomment 3Created with Sketch Beta.0 comments

This post is also available in: Englisch


Frohes neues Jahr an alle meine Leser!

Die erste Herausforderung in diesem Jahr ist die korrekte Berechnung der Kalenderwoche. Denn in diesem Jahr haben wir wieder den Fall, dass sich die Kalenderwochen zwischen Amerika und Europa unterscheiden.

Unterschiedliche Berechnung der Kalenderwoche zwischen Nordamerika und Europa

Während in Nordamerika immer die erste Woche des neuen Jahres als KW 1 definiert ist, orientiert sich Europa am ISO Standard 8601. Nach der ISO Berechnung in Europa und Asien ist die erste Woche im neuen Jahr, welche 4 oder mehr Tage beinhaltet, als KW 1 definiert. In den USA und Kanada kann es auch eine halbe Woche als KW 1 geben.

In 2021 ist in Amerika somit die erste Woche des neuen Jahres geteilt:

Berechnung Kalenderwoche in den USA und Kanada für 2021
Berechnung Kalenderwoche in den USA und Kanada für 2021

In Europa ist die erste Woche mit 4 vollen Tagen als erste Kalenderwoche des Jahres definiert:

Berechnung Kalenderwoche in Europa, Asien und Ozeanien nach ISO 8601 Standard für 2021
Berechnung Kalenderwoche in Europa, Asien und Ozeanien nach ISO 8601 Standard für 2021

Berechnung mit der WEEKNUM Funktion

Grundsätzlich kann die Kalenderwoche mit Hilfe der WEEKNUM Funktion in DAX berechnet werden. Die Syntax lautet folgendermaßen:

WEEKNUM(<date>, <return_type>)

Der erste Parameter <date> ist das Datum. Der <return_type> ist laut offizieller Dokumentation entweder eine 1, wenn die neue Woche an einem Sonntag startet oder eine 2, wenn die neue Woche am Montag startet.

return_type 21 für ISO 8601 Format

Es gibt allerdings noch einen weiteren Wert für den Parameter, welcher in der Dokumentation nicht erwähnt wird. Wenn wir als <return_type> den Wert 21 angeben, wird die Kalenderwoche im ISO 8601 Format, also dem europäischem, asiatischen und ozeanischen Format, zurückgegeben. Die Woche startet nach ISO ohnehin am Montag.

WEEKNUM([Date], 21)

Hier die 3 Werte im Vergleich:

Vergleich Berechnung Kalenderwoche mit WEEKNUM in DAX
Vergleich Berechnung Kalenderwoche mit WEEKNUM in DAX

Zusammenfassung

Wir können mit der WEEKNUM Funktion also alle 3 Möglichkeiten der Kalenderwoche abbilden:

  1. Mit 1 als <return_type> im nordamerikanischen Format und Wochenstart Sonntag.
  2. Mit 2 als <return_type> im nordamerikanischen Format und Wochenstart Montag.
  3. Mit 21 als <return_type> europäischen ISO Format und Wochenstart Montag.