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 obejmujeDATESMTDrównież funkcje języka DAX iDATESQTDdla daty od początku miesiąca (MTD) i kwartału do daty (QTD). Te funkcje można przekazać jako filtry doCALCULATEfunkcji 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 funkcjeTOTALQTDTOTALMTDQTD 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,NEXTQUARTERNEXTYEARiPREVIOUSDAYPREVIOUSMONTH,PREVIOUSQUARTERiPREVIOUSYEAR.
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.