Wartość z ostatnich 12 miesięcy na podstawie wyboru daty

Ostatnie wymaganie dotyczące raportów w Power BI z jakim się spotkałem było zaprezentowanie wartości z ostatnich 12 miesięcy na wykresie. Nie wydawało się to problemem w kwestii filtrów. Problem pojawił się, gdy odbiorca doprecyzował, że chodzi o wybór konkretnej daty i prezentację ostatnich 12 miesięcy licząc od niej wstecz. Jak się z tym uporać? Omówię przypadek na podstawie swojego przykładowego dashboardu sprzedażowego.

Rozwiązanie

Pierwszym krokiem było utworzenie spójnej kolumny oznaczającej miesiące. Do mojej tabeli kalendarzowej dopisałem nową kolumnę oznaczającą koniec miesiąca.
"End of Month", EOMONTH ( [Date], 0 )
Następnie na podstawie tabeli kalendarzowej utworzyłem nową tabelę DateDupl zawierającą unikatowe wartości końca miesiąca i sformatowałem ją do formatu YYYY-MM. Poniżej formuła:
DateDupl = DISTINCT ( 'Date' [End of Month] )
Ważne jest, aby pomiędzy tabelami DateDupl i Date nie było nawiązanej relacji.

Kolejnym krokiem było już napisanie odpowiedniej miary.
Sales12M =
VAR _CurrentDate = MAX(DateDupl[End of Month])
VAR _PreviousDate = DATE( YEAR ( _CurrentDate ), MONTH ( _CurrentDate ) -12, DAY ( _CurrentDate ) )
VAR _Result =
CALCULATE(
[C_SalesAmount],
FILTER(
'Date',
[Date] > _PreviousDate && [Date] <= _CurrentDate
)
)
RETURN
_Result

Po napisaniu miary utworzyłem dwie wizualizacje:
  • Fragmentator zawierający zbiór dat z tabeli DateDupl
  • Wykres kolumnowy zawierający oś x (Hierarchia dat z tabeli Date [Rok oraz miesiąc], oraz naszą miarę Sales12M

Jak widać na powyższym zrzucie ekranu zamierzony efekt został osiągnięty. Po wybraniu daty 2014-04 wykres automatycznie przefiltrował oś o 12 miesięcy.

Podsumowanie

W artykule opisałem jak przy użyciu Power BI w prosty sposób utworzyć miarę i wizualizacje, które na podstawie wybranego miesiąca przefiltrują dane na wykresie o ostatnie 12 miesięcy od wybranej daty.

Interesujący artykuł? Podaj dalej!

2 komentarze

  1. Adam 06/07/2021 at 4:26 pm - Reply

    Jak można otrzymać dane , na których zaprezentowano lekcję?