Orginal Beitrag „ISO 8601 Week in DAX“ von Gerhard Brueckl
Standardmäßig verwendet DAX eine Kalenderkonvention, bei der die Woche mit dem 1. Januar als die erste Woche des Jahres betrachtet wird. In Europa ist jedoch die Kalendernorm ISO 8601 weit verbreitet, in die die erste Woche eines Jahres diejenige ist, die die Mehrheit der Tage (>=4) enthält.
Ausgangspunkt ist die DAX Datumsfunktion WEEKNUM.
Diese Funktion akzeptiert folgende Parameter:
Benennung | Definition |
<date> | Das Datum im datetime-Format |
<return_type> | Eine Zahl, die den Rückgabewert bestimmt: Verwenden Sie 1, wenn die Woche am Sonntag beginnt. Verwenden Sie 2, wenn die Woche am Montag beginnt. |
Laut docs.microsoft.com unterstützt der zweite Parameter nur die Werte 1 und 2. Doch das ist nur die halbe Wahrheit. Sie können auch den Wert 21 als zweiten Parameter verwenden und erhalten die Wochennummern gemäß ISO 8601.
Der dax.guide dokumentiert weitere Parameterwerte von 11 – 17.
So können Sie durch folgende Berechnung eine Neue Spalte erstellen, die die ISO Wochennummer des Datums zurückgibt.
ISO Woche =
WEEKNUM ( Datum[Datum], 21 )
Wenn Sie auch ein ISO Jahr berechnen möchten, um saubere Hierarchien zu erstellen, können Sie folgende Formel verwenden.
ISO Jahr =
YEAR(Datum[Datum])
+ IF (
MONTH ( Datum[Datum] ) = 1
&& WEEKNUM ( Datum[Datum], 21 ) > 50,
-1,
IF (
MONTH ( Datum[Datum] ) = 12
&& WEEKNUM ( Datum[Datum], 21 ) < 10,
1,
0
)
)
Mit diesen DAX Formeln können Sie leicht die Datumstabelle aus dem Beitrag „Erstellen einer einfachen Datumstabelle in DAX„, um die ISO Woche erweitern.
Quellen:
- https://blog.gbrueckl.at/2012/04/iso-8601-week-in-dax/
- https://docs.microsoft.com/de-de/dax/weeknum-function-dax
- https://dax.guide/weeknum/
- https://www.thinkbi.de/2019/09/25/erstellen-einer-einfachen-datumstabelle-in-dax/
- https://community.powerbi.com/t5/Desktop/Doubt-in-calculating-sum-of-last-6-weeks-sum/td-p/913870