Proste tworzenie tabeli kalendarzowej w DAX

Tworząc raporty w Power BI, które mają zawierać dane oparte o pewien fragment czasu spotkacie się z tworzeniem tabeli kalendarzowej. Istnieje na to wiele sposobów, lecz nie chcę oceniać, który jest najlepszy, a podzielić się z Wami swoim. Tabele kalendarzowe możemy utworzyć np. w Power Query za pomocą kodu M, lub wykorzystując jako źródło plik płaski zawierający tabelę kalendarzową. Tabele kalendarzowe zazwyczaj nie są duże, dlatego ja zawsze preferuję tworzyć je za pomocą języka DAX. Dlaczego? Bo mogę automatycznie dostosować rozpiętość tabeli w dość prosty sposób. Wystarczy we wstążce Modelling wybrać funkcję New Table i wpisać odpowiednią formułę.
Przyjrzyjmy się formule DAX:
dCalendar =
VAR MinYear = YEAR ( MIN ( FactTable[DateCol] ) ) -- Gdzie FactTable[DateCol] oznacza Twoją tabelę faktów i kolumnę datową
VAR MaxYear = YEAR ( MAX ( FactTable[DateCol] ) )
RETURN
ADDCOLUMNS (

FILTER (

CALENDARAUTO( ),

AND ( YEAR ( [Date] ) >= MinYear, YEAR ( [Date] ) <= MaxYear )

),

"Calendar Year", "CY " & YEAR ( [Date] ),

"Year Number", YEAR ( [Date] ),

"Month Name", FORMAT ( [Date], "mmmm" ),

"Month Number", MONTH ( [Date] ),

"Weeknumber", "W" & WEEKNUM ( [Date] ),

"Weekday", FORMAT ( [Date], "dddd" ),

"Weekday number", WEEKDAY( [Date] ),

"Day Number", DAY( [Date] ),

"Quarter", "Q" & TRUNC ( ( MONTH ( [Date] ) - 1 ) / 3 ) + 1)
Tworząc tego rodzaju tabelę mamy większość kolumn opracowanych z góry. Kod warto sobie zapisać na poczet tworzenia przyszłych raportów. Pozostaje nam tylko stworzyć hierarchię danych np. Year > Month Name > Weeknumber > Day Number – to jest hierarchia, której najczęściej używam, a do tego kolumnę Month Name sortuję według kolumny Month Number (wystarczy zaznaczyć kolumnę Month Name i na wstążce Column Tools wybrać opcję Sort by Column. Ostatnim krokiem będzie oznaczenie tabeli dCalendar jako tabela datowa klikając na tabelę prawym przyciskiem myszy i wybierając Mark as date table. Po nawiązaniu odpowiednich relacji z tabelami faktów jesteśmy gotowi do pracy z naszą nową tabelą kalendarzową.

Podsumowanie

W artykule opisałem sposób tworzenia tabeli kalendarzowej przy pomocy jednej formuły DAX.

Interesujący artykuł? Podaj dalej!