,

DAX Funktion WEEKNUM liefert die falsche Kalenderwoche

Ein Kalender ist in DAX recht schnell und einfach erstellt.
Möchte man auch die Kalenderwoche im Kalender haben, liefert die DAX-Funktion WEEKNUM die Wochennummer als Zahl zwischen 1 und maximal 54.
Vielleicht habt Ihr es auch schon mal erlebt, so wie mir es neulich ging: Beim Vergleichen der einzelnen Datumsangaben mit der Wochennummer stellt Ihr fest, dass da etwas nicht stimmt. Die Wochennummer passt nicht zum Datum. Schnell habe ich festgestellt, dass die Wochennummer um 1 zu hoch war. Die Kalenderwoche 23/2022 ist also eigentlich die Woche 22/2022.

Nun war mein erster Gedanke „mache ich einfach: Wochennummer = WEEKNUM(Datum) – 1“. Aber dann kam auch gleich der Gedanke: stimmt das dann aber im kommenden Jahr auch noch? Und tatsächlich: im Jahr 2022 würde diese Vorgehensweise das richtige Ergebnis liefern. 2023 sieht es aber schon wieder anders aus.

Die Erklärung:

Bevor wir zur Lösung des Problems kommen, hier kurz die Theorie, warum es zu diesem Problem überhaupt kommt.

Power BI stammt von Microsoft, einem US-amerikanischen Konzern.
In den USA ist es so, dass die Woche 1 eines Jahres immer am 1. Januar beginnt. Außerdem beginnen Wochen in den USA am Sonntag, nicht wie bei uns, am Montag.

In Europa ist es so, dass die erste Woche eines Jahres gemäß ISO 8601 die Woche ist, in die der erste Donnerstag des Jahres fällt. Oder anders ausgedrückt: die Woche, die als erste Woche im Jahr 4 Tage hat. Wie schon angesprochen, beginnen in Europa die Wochen außerdem am Montag, nicht am Sonntag.

Die Funktion WEEKNUM erwartet zwei Parameter

Die Funktion WEEKNUM erwartet zwei Parameter:

  1. Das Datum, zu dem die Wochennummer zurückgegeben werden soll
  2. Einen optionalen return_type

Der return_type ist eine Ganzzahl. Wenn man keinen return_type angibt, gilt der Standardparameter 1. 1 bedeutet: die Wochennummer im amerikanischen System, beginnend mit dem Sonntag.

Mit return_type 2 wird der Montag zum ersten Tag der Woche. Allerdings wird noch immer das amerikanische System verwendet, die Woche 1 beginnt also noch immer mit dem 1. Januar.

Es gibt noch eine Reihe weiterer return_types, diese machen in der Regel aber wenig Sinn. So lässt der return_type 13 zum Beispiel die Woche am Mittwoch beginnen, was man in der Praxis wohl sehr selten brauchen wird.

Die Lösung

Die Lösung für dieses Problem ist sehr einfach. Ich wollte Euch jedoch zuerst mit den theoretischen Hintergründen vertraut machen.

Wenn man die Kalenderwoche nach dem europäischen System, beginnend mit einem Montag haben möchte, kann man als return_type 21 angeben:

Wochennummer = WEEKNUM(Kalender[Datum],21)

That´s it! Wenn man es weiß, ganz einfach.

IntelliSense schlägt den return_type 21 nicht vor

Power BI Desktop verwendet, wie viele andere Produkte von Microsoft auch, das System IntelliSense, um bei der Syntax von Ausdrücken zu helfen.
Leider kennt IntelliSense aber offenbar den return_type 21 nicht – es werden nur 1 und 2 vorgeschlagen.

IntelliSense schlägt den hilfreichen return_type 21 nicht vor

Dieses Verhalten von IntelliSense ist sehr schade, denn es wird der Eindruck erweckt, es gäbe nur diese zwei Möglichkeiten.

Seid Ihr vor diesem Problem auch schon mal gestanden? Schreibt es gerne in die Kommentare.

0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert