Korzystanie z funkcji analizy czasowej języka DAX
Język DAX zawiera wiele funkcji analizy czasowej, które upraszczają modyfikowanie kontekstu filtru daty. Wiele z tych formuł analizy można napisać przy użyciu funkcji modyfikującej CALCULATE
filtry dat, ale spowodowałoby to więcej pracy.
Uwaga
Wiele funkcji analizy czasowej języka DAX dotyczy standardowych okresów dat, w szczególności lat, kwartałów i miesięcy. Jeśli okresy są nieregularne (na przykład miesiące finansowe zaczynają się w połowie miesiąca kalendarzowego) lub musisz pracować na podstawie tygodni lub okresów czasu (godzin, minut itd.), funkcje analizy czasowej języka DAX nie będą pomocne. Zamiast tego należy użyć CALCULATE
funkcji i przekazać ręcznie utworzone filtry daty lub godziny.
Wymaganie dotyczące tabeli dat
Aby korzystać z funkcji analizy czasowej języka DAX, musisz spełnić wymaganie wstępne polegające na tym, aby mieć w modelu co najmniej jedną tabelę dat. Tabela dat jest tabelą, która spełnia następujące wymagania:
- Musi mieć kolumnę z danymi typu Data (lub Data/godzina), nazywaną kolumną dat.
- Kolumna dat musi zawierać wartości unikatowe.
- Kolumna dat nie może zawierać wartości pustych.
- Kolumna dat nie może zawierać brakujących dat.
- Kolumna dat musi obejmować pełne lata. Rok nie musi być koniecznie rokiem kalendarzowym (styczeń – grudzień).
- Tabela dat musi być wskazana jako tabela dat.
Aby uzyskać więcej informacji, patrz Tworzenie tabel dat w Power BI Desktop.
Podsumowywanie z biegiem czasu
Jedna grupa funkcji analizy czasowej języka DAX jest objęta podsumowywaniem z biegiem czasu:
-
DATESYTD
— Zwraca jednokolumniową tabelę zawierającą daty od początku roku (YTD) w bieżącym kontekście filtru. Ta grupa obejmujeDATESMTD
również funkcje języka DAX iDATESQTD
dla daty od początku miesiąca (MTD) i kwartału do daty (QTD). Te funkcje można przekazać jako filtry doCALCULATE
funkcji języka DAX. -
TOTALYTD
— Oblicza wyrażenie dla od początku roku w bieżącym kontekście filtru. Dostępne są również równoważne funkcjeTOTALQTD
TOTALMTD
QTD i MTD języka DAX. -
DATESBETWEEN
— Zwraca tabelę zawierającą kolumnę dat rozpoczynającą się od danej daty początkowej i trwa do określonej daty zakończenia. -
DATESINPERIOD
— Zwraca tabelę zawierającą kolumnę dat rozpoczynającą się od danej daty początkowej i kontynuuje dla określonej liczby interwałów.
Uwaga
TOTALYTD
Chociaż funkcja jest prosta w użyciu, jest ograniczona do przekazywania jednego wyrażenia filtru. Jeśli musisz zastosować wiele wyrażeń filtru, użyj CALCULATE
funkcji , a następnie przekaż DATESYTD
funkcję jako jedno z wyrażeń filtru.
W poniższym przykładzie utworzysz pierwsze obliczenie analizy czasowej, które będzie używać funkcji TOTALYTD. Składnia wygląda następująco:
TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])
Funkcja wymaga wyrażenia oraz, co jest cechą wspólną dla wszystkich funkcji analizy czasowej, odwołania do kolumny Data w oznaczonej tabeli dat. Opcjonalnie przekazać można pojedyncze wyrażenie filtru lub datę zakończenia roku (wymagane tylko wtedy, gdy rok nie kończy się 31 grudnia).
Pobierz i otwórz plik Adventure Works DW 2020 M07.pbix. Następnie dodaj następującą definicję miary do tabeli Sales (Sprzedaż ), która oblicza przychód od początku roku. Formatowanie miary ustaw na walutę z dwoma miejscami dziesiętnymi.
Revenue YTD =
TOTALYTD([Revenue], 'Date'[Date], "6-30")
Wartość "6-30"
daty zakończenia roku reprezentuje 30 czerwca.
Na stronie 1 raportu dodaj miarę Revenue YTD do wizualizacji macierzy. Warto zauważyć, że generuje to podsumowanie kwot przychodów od początku roku aż do filtrowanego miesiąca.
Porównania w miarę upływu czasu
Kolejna grupa funkcji analizy czasowej języka DAX dotyczy zmian okresów:
-
DATEADD
— Zwraca tabelę zawierającą kolumnę dat przesuniętą do przodu lub do tyłu o określoną liczbę interwałów z dat w bieżącym kontekście filtru. -
PARALLELPERIOD
— Zwraca tabelę zawierającą kolumnę dat reprezentującą okres równoległy do dat w określonej kolumnie dat w bieżącym kontekście filtru z datami przesuniętymi w czasie lub z powrotem w czasie. -
SAMEPERIODLASTYEAR
— Zwraca tabelę zawierającą kolumnę dat, które są przesunięte o jeden rok z powrotem w czasie z dat w określonej kolumnie dat w bieżącym kontekście filtru. - Istnieje wiele funkcji pomocniczych języka DAX służących do przechodzenia do tyłu lub do przodu w przypadku określonych okresów, z których wszystkie zwracają tabelę dat. Te funkcje pomocnicze obejmują
NEXTDAY
, ,NEXTMONTH
,NEXTQUARTER
NEXTYEAR
iPREVIOUSDAY
PREVIOUSMONTH
,PREVIOUSQUARTER
iPREVIOUSYEAR
.
Teraz dodasz miarę do tabeli Sales ( Sprzedaż ), która oblicza przychód z poprzedniego roku przy użyciu SAMEPERIODLASTYEAR
funkcji . Formatowanie miary ustaw na walutę z dwoma miejscami dziesiętnymi.
Revenue PY =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
RevenuePriorYear
Teraz dodaj miarę Revenue PY do wizualizacji macierzy. Zwróć uwagę, że generuje wyniki podobne do kwot przychodu z poprzedniego roku.
Następnie zmodyfikujesz miarę, zmieniając jej nazwę na Revenue YoY % , a następnie aktualizując RETURN
klauzulę w celu obliczenia współczynnika zmian. Pamiętaj, aby zmienić format na wartość procentową z dwoma miejscami dziesiętnymi.
Revenue YoY % =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
DIVIDE(
[Revenue] - RevenuePriorYear,
RevenuePriorYear
)
Zwróć uwagę, że miara Revenue YoY % generuje współczynnik zmian w stosunku do przychodu miesięcznego z poprzedniego roku. Na przykład w lipcu 2018 r. odnotowano 106,53-procentowy wzrost w stosunku do przychodu miesięcznego z poprzedniego roku. Natomiast w listopadzie 2018 r. odnotowano 24,22-procentowy spadek w porównaniu z przychodem miesięcznym z poprzedniego roku.
Uwaga
Miara Revenue YoY % ilustruje dobre wykorzystanie zmiennych języka DAX. Miara zwiększa czytelność formuły i pozwala na przetestowanie jednostkowe części logiki miary (poprzez zwrócenie wartości zmiennej RevenuePriorYear). Ponadto ta miara jest optymalną formułą, ponieważ nie musi dwukrotnie pobierać wartości przychodu z poprzedniego roku. Po zapisie go raz w zmiennej klauzula RETURN
używa do wartości zmiennej dwa razy.