Korzystanie z funkcji analizy czasowej języka DAX

Ukończone

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 obejmuje DATESMTD również funkcje języka DAX i DATESQTD dla daty od początku miesiąca (MTD) i kwartału do daty (QTD). Te funkcje można przekazać jako filtry do CALCULATE 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 funkcje TOTALQTDTOTALMTD 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, NEXTQUARTERNEXTYEARi PREVIOUSDAYPREVIOUSMONTH, PREVIOUSQUARTERi PREVIOUSYEAR.

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.