Time intelligence w DAX — YTD, MTD, YoY w praktyce

Poznaj funkcje time intelligence w DAX i naucz się wykorzystywać YTD, MTD, YoY do analizy danych czasowych w Power BI na praktycznych przykładach.
13 kwietnia 2026
blog

Wprowadzenie do funkcji time intelligence w DAX

Funkcje time intelligence w języku DAX (Data Analysis Expressions) stanowią fundament analiz opartych na czasie w Power BI. Umożliwiają użytkownikom tworzenie miar i wskaźników, które automatycznie uwzględniają kontekst daty — takich jak porównania rok do roku, analiza narastająca czy trendy miesięczne. Dzięki nim można w prosty sposób analizować dane w ujęciu czasowym bez konieczności ręcznego filtrowania czy tworzenia skomplikowanych zapytań.

Mechanizmy time intelligence pozwalają na dynamiczne obliczenia oparte o daty, takie jak:

  • Sumowanie wartości narastająco od początku roku lub miesiąca (YTD/MTD)
  • Porównywanie wyników z analogicznymi okresami z lat poprzednich (YoY)
  • Identyfikowanie różnic i zmian w czasie

Dzięki integracji z kalendarzem dat, DAX potrafi rozpoznać strukturę czasu i wykorzystywać ją w formułach, co znacząco przyspiesza proces tworzenia raportów i analiz. W efekcie użytkownicy mogą łatwo uzyskać wgląd w sezonowość, trendy i zachowania biznesowe w czasie.

Warto zaznaczyć, że skuteczne korzystanie z funkcji time intelligence w DAX wymaga poprawnie skonfigurowanej tabeli dat, która stanowi podstawę dla wszystkich obliczeń czasowych. Jej obecność i odpowiednie powiązanie z danymi transakcyjnymi są kluczowe dla prawidłowego działania tych funkcji.

Znaczenie analizy czasowej w Power BI

Analiza czasowa odgrywa kluczową rolę w procesie podejmowania decyzji biznesowych, ponieważ umożliwia śledzenie zmian i trendów na przestrzeni czasu. Power BI, jako narzędzie do analizy danych, oferuje szeroki zakres możliwości w zakresie analizy temporalnej, wykorzystując funkcje time intelligence w języku DAX. Dzięki nim użytkownicy mogą łatwo porównywać dane w różnych przedziałach czasowych, oceniać dynamikę zmian oraz identyfikować sezonowość i długoterminowe trendy.

W Cognity obserwujemy rosnące zainteresowanie tym zagadnieniem – zarówno na szkoleniach otwartych, jak i zamkniętych.

Funkcje time intelligence pozwalają między innymi na:

  • obliczanie wartości narastających dla roku lub miesiąca, co ułatwia monitorowanie realizacji celów w czasie,
  • porównywanie bieżących wyników z analogicznymi okresami z lat poprzednich, co wspiera analizę efektywności i wzrostu,
  • tworzenie wskaźników opartych na czasie, takich jak Year-to-Date (YTD), Month-to-Date (MTD), czy Year-over-Year (YoY), które są standardem w raportach biznesowych.

W kontekście Power BI, właściwe wykorzystanie funkcji time intelligence znacząco zwiększa wartość raportów i dashboardów – umożliwia nie tylko prezentację danych w atrakcyjnej formie, ale przede wszystkim wspiera analityczne myślenie i podejmowanie decyzji opartych na faktach.

Funkcja TOTALYTD – analiza danych narastająco w ujęciu rocznym

Jedną z kluczowych funkcji time intelligence w języku DAX jest TOTALYTD, która umożliwia analizę danych w ujęciu narastającym od początku roku. Funkcja ta jest szczególnie przydatna w kontekście analiz finansowych, sprzedażowych czy produkcyjnych, gdzie istotne jest monitorowanie postępów w realizacji celów rocznych zgodnie z kalendarzem.

Główne zastosowania TOTALYTD:

  • Sumowanie wartości od początku roku kalendarzowego do określonej daty.
  • Tworzenie miar typu "Sprzedaż narastająco od początku roku".
  • Ułatwienie porównań rok do roku (np. YTD vs YTD LY).

Podstawowa składnia funkcji:

TOTALYTD(
        <expression>, 
        <dates>, 
        [<filter>], 
        [<year_end_date>]
)

Gdzie:

  • <expression> – wyrażenie DAX (np. miara), dla którego liczymy skumulowaną wartość,
  • <dates> – kolumna z datami (z tabeli kalendarza),
  • [<filter>] – opcjonalny filtr kontekstowy,
  • [<year_end_date>] – opcjonalna data zakończenia roku (np. przy roku fiskalnym).

Przykład prostego zastosowania funkcji TOTALYTD w mierze sumującej sprzedaż od początku roku:

Sprzedaż YTD = TOTALYTD(
    SUM(FaktSprzedaż[Kwota]), 
    'Kalendarz'[Data]
)

Poniższa tabela ilustruje, jak TOTALYTD kumuluje wartości w ciągu roku:

Miesiąc Sprzedaż miesięczna Sprzedaż YTD
Styczeń 10 000 10 000
Luty 12 000 22 000
Marzec 9 000 31 000

Dzięki TOTALYTD można w prosty sposób tworzyć wykresy i tabele, które pokazują dynamikę wzrostu w czasie, pozwalając szybko ocenić, czy firma zbliża się do rocznych celów sprzedażowych. Jeśli chcesz pogłębić wiedzę i nauczyć się praktycznego wykorzystania DAX w analizie danych, sprawdź nasze szkolenie Kurs Język DAX i język M - wykorzystanie funkcji języka DAX i analiza danych przy użyciu języka M.

💡 Pro tip: Zawsze opieraj TOTALYTD na poprawnie oznaczonej tabeli kalendarza i używaj parametru year_end_date, jeśli pracujesz na roku fiskalnym—unikniesz błędnych sum narastających. Gdy porównujesz YTD między latami, licz YTD dla obu okresów w tym samym kontekście filtrów (np. te same segmenty/produkty), aby wynik był miarodajny.

Funkcja TOTALMTD – analiza danych miesięcznych

Funkcja TOTALMTD (ang. Total Month-To-Date) jest jedną z podstawowych funkcji time intelligence w języku DAX i służy do obliczania wartości skumulowanej od początku bieżącego miesiąca do wybranego dnia w ramach danego kontekstu filtrowania. Jest szczególnie przydatna w analizie wskaźników finansowych, sprzedażowych czy operacyjnych, które wymagają obserwacji trendów w ujęciu miesięcznym.

W odróżnieniu od funkcji TOTALYTD, która analizuje dane w ujęciu rocznym, TOTALMTD koncentruje się na jednym, aktualnym miesiącu, co pozwala na bardziej szczegółowe monitorowanie zmian w krótszym okresie czasu.

Typowe zastosowania funkcji TOTALMTD to między innymi:

  • Śledzenie miesięcznej realizacji budżetu lub planu sprzedaży,
  • Analiza narastających kosztów operacyjnych w danym miesiącu,
  • Porównanie wydajności działań marketingowych od początku miesiąca do dziś.

Prosty przykład użycia funkcji TOTALMTD w języku DAX może wyglądać następująco:


Sprzedaż MTD = TOTALMTD(
    SUM('Sprzedaż'[Kwota]),
    'Kalendarz'[Data]
)

Powyższy kod oblicza narastającą wartość sprzedaży od pierwszego dnia bieżącego miesiąca do dnia wskazanego w kontekście filtrowania. Kluczowe znaczenie ma tutaj poprawna relacja z tabelą dat, której kolumna daty jest podawana jako drugi parametr.

Na szkoleniach Cognity pokazujemy, jak poradzić sobie z tym zagadnieniem krok po kroku – poniżej przedstawiamy skrót tych metod.

Dzięki funkcji TOTALMTD użytkownicy Power BI mogą łatwo tworzyć miary odzwierciedlające bieżący stan wykonania celów w ramach danego miesiąca, co wspiera szybkie podejmowanie decyzji biznesowych i monitorowanie zmian w czasie.

Funkcja SAMEPERIODLASTYEAR – porównanie z analogicznym okresem roku poprzedniego

Jedną z kluczowych funkcji time intelligence w języku DAX jest SAMEPERIODLASTYEAR. Pozwala ona szybko i efektywnie porównać aktualne wyniki z wynikami z tego samego okresu w roku ubiegłym. Jest to niezwykle użyteczne przy analizie trendów sezonowych, ocenie wzrostu lub spadku sprzedaży, czy monitorowaniu kluczowych wskaźników KPI w kontekście rocznym.

Funkcja SAMEPERIODLASTYEAR działa na podstawie kolumny daty i wykorzystuje kontekst filtrowania, aby zwrócić zestaw dat odpowiadający dokładnie temu samemu okresowi (dzień, miesiąc, kwartał) z poprzedniego roku. Dzięki temu możemy bez potrzeby ręcznego przesuwania dat łatwo uzyskać dane historyczne w odpowiednim zakresie czasowym.

Przykładowe zastosowanie:

Sales LY = CALCULATE([Total Sales], SAMEPERIODLASTYEAR('Date'[Date]))

Powyższy przykład wylicza wartość sprzedaży z analogicznego okresu roku poprzedniego względem obecnego filtru daty.

Porównanie podstawowych funkcji time intelligence:

Funkcja Zakres czasu Cel
TOTALYTD Od początku roku do bieżącej daty Analiza skumulowana roczna
TOTALMTD Od początku miesiąca do bieżącej daty Analiza skumulowana miesięczna
SAMEPERIODLASTYEAR Dokładnie ten sam okres w poprzednim roku Porównanie rok do roku (YoY)

W praktyce, SAMEPERIODLASTYEAR jest często używana w wizualizacjach słupkowych lub liniowych w Power BI, aby zestawić dane z dwóch lat względem tego samego okresu kalendarzowego. Umożliwia użytkownikom szybkie identyfikowanie zmian w wynikach i ocenę sezonowych wzorców. Jeśli chcesz nauczyć się praktycznego wykorzystania tej oraz innych funkcji DAX, warto rozważyć udział w Kursie DAX – praca w języku DAX i użyteczne funkcje, wizualizacja danych w Power BI.

💡 Pro tip: SAMEPERIODLASTYEAR działa poprawnie tylko z ciągłą kolumną dat z tabeli kalendarza—nie używaj dat z tabeli faktów, bo łatwo o luki i przekłamania. Do analizy dynamiki dodaj miarę różnicy lub % YoY (np. (Sales - Sales LY)/Sales LY), aby od razu widzieć skalę zmiany, a nie tylko dwie wartości obok siebie.

Inne przydatne funkcje time intelligence i ich zastosowania

Oprócz popularnych funkcji takich jak TOTALYTD, TOTALMTD czy SAMEPERIODLASTYEAR, DAX oferuje szereg innych funkcji time intelligence, które umożliwiają bardziej elastyczną analizę danych w ujęciu czasowym. Poniżej przedstawiamy wybrane funkcje wraz z ich podstawowym zastosowaniem.

  • DATESYTD, DATESMTD, DATESQTD
  • Funkcje te zwracają zestaw dat od początku roku, miesiąca lub kwartału do określonej daty. Są przydatne przy tworzeniu niestandardowych miar, gdy potrzebujemy pełnej kontroli nad agregacjami.

  • PREVIOUSMONTH, PREVIOUSQUARTER, PREVIOUSYEAR
  • Umożliwiają łatwe odniesienie się do danych z poprzedniego miesiąca, kwartału lub roku. Sprawdzają się świetnie w porównaniach okres do okresu.

  • PARALLELPERIOD
  • Daje możliwość przesuwania się o określoną liczbę okresów do przodu lub wstecz (np. 2 miesiące wcześniej) niezależnie od kontekstu daty. Przydatna w bardziej zaawansowanych analizach porównawczych.

  • DATEADD
  • Podobna do PARALLELPERIOD, ale obsługuje bardziej złożone scenariusze, takie jak przesuwanie o n dni, miesięcy, kwartałów lub lat.

  • FIRSTDATE, LASTDATE
  • Zwracają pierwszą lub ostatnią datę w kontekście filtrowania. Przydatne przy określaniu granic czasowych analizowanego okresu.

  • DATESBETWEEN
  • Umożliwia precyzyjne zdefiniowanie zakresu dat między dwiema wskazanymi wartościami. Daje dużą elastyczność w tworzeniu niestandardowych zestawień czasowych.

Poniższa tabela przedstawia krótkie porównanie wybranych funkcji:

Funkcja Zastosowanie Typ zwracanej wartości
PREVIOUSMONTH Dane z poprzedniego miesiąca Tabela dat
PARALLELPERIOD Przesunięcie o określoną liczbę okresów Tabela dat
DATEADD Dynamiczne przesuwanie dat Tabela dat
DATESYTD Zakres dat od początku roku Tabela dat
FIRSTDATE Pierwsza data w kontekście Pojedyncza data

Przykład użycia funkcji DATEADD dla obliczenia wartości sprzed roku dla miary sprzedaży:


SalesLastYear = 
CALCULATE(
    [Total Sales],
    DATEADD('Date'[Date], -1, YEAR)
)

Znajomość i umiejętne zastosowanie tych funkcji pozwala na tworzenie rozbudowanych analiz i lepsze zrozumienie trendów w danych biznesowych.

Przykłady praktyczne użycia funkcji time intelligence w raportach Power BI

Funkcje time intelligence w DAX są niezwykle przydatne podczas tworzenia dynamicznych raportów w Power BI, zwłaszcza gdy potrzebujemy analizować dane w czasie. Ich zastosowanie pozwala na szybkie porównywanie wyników finansowych, tracking sprzedaży, analizę sezonowości czy ocenę skuteczności działań marketingowych w różnych okresach.

W praktyce najczęściej spotykane są trzy scenariusze wykorzystania funkcji time intelligence:

  • Analiza narastająca (YTD, MTD) – pozwala śledzić, jak dane KPI, takie jak przychody, koszty czy liczba transakcji, kumulują się od początku roku lub miesiąca do wybranej daty. To przydatne np. przy monitorowaniu budżetu lub planów sprzedażowych.
  • Porównania okresów (YoY) – umożliwiają zestawienie aktualnych wyników z analogicznym okresem roku poprzedniego. Dzięki nim można łatwo ocenić dynamikę wzrostu, trendy oraz wpływ sezonowości.
  • Dynamiczne definiowanie zakresów dat – funkcje te wspierają budowanie wskaźników, które automatycznie dostosowują się do kontekstu daty w raporcie, co pozwala tworzyć elastyczne i interaktywne wizualizacje bez potrzeby ręcznego filtrowania danych.

Na przykład, w raporcie sprzedaży detalicznej można zastosować funkcję YTD, aby zobaczyć, jak rosną przychody w kolejnych miesiącach roku, a jednocześnie wykorzystać funkcję porównującą dane rok do roku, aby zidentyfikować sezonowe trendy i efektywność działań sprzedażowych w danym kwartale.

Dzięki tym funkcjom użytkownicy Power BI mogą nie tylko przeglądać dane w czasie, ale przede wszystkim podejmować bardziej świadome decyzje biznesowe.

💡 Pro tip: W raporcie trzymaj miary bazowe (np. [Sales]) i dopiero na nich buduj YTD/LY/YoY, dzięki czemu łatwiej je utrzymać i ponownie wykorzystać w wielu wizualizacjach. Testuj miary time intelligence na tabeli z osią dat (dzień/miesiąc), żeby szybko wyłapać problemy z kontekstem filtra i relacją do kalendarza.

Podsumowanie i najlepsze praktyki

Funkcje time intelligence w DAX stanowią fundament zaawansowanej analizy danych czasowych w Power BI. Dzięki nim możliwe jest porównywanie wartości w różnych okresach, śledzenie trendów oraz prezentacja wyników w kontekście czasowym, co znacząco wspiera podejmowanie decyzji biznesowych.

Najczęściej wykorzystywane funkcje, takie jak TOTALYTD, TOTALMTD czy SAMEPERIODLASTYEAR, pozwalają na szybkie zestawienie danych z obecnego roku, miesiąca czy porównanie z analogicznym okresem roku poprzedniego. Każda z nich znajduje zastosowanie w innych sytuacjach analitycznych – od raportowania sprzedaży po analizę sezonową.

Aby w pełni wykorzystać potencjał funkcji time intelligence, warto pamiętać o kilku najlepszych praktykach:

  • Zawsze korzystaj z poprawnie skonfigurowanej tabeli kalendarza (Date table) – najlepiej jako oddzielna, niezależna tabela z pełnym zakresem dat.
  • Upewnij się, że tabela kalendarza ma ciągłość dat i zawiera niezbędne kolumny, takie jak rok, kwartał, miesiąc, dzień oraz odpowiednie flagi logiczne (np. IsCurrentYear).
  • Zachowaj konsekwencję w relacjach między tabelami — tabela dat powinna mieć relację jeden-do-wielu z danymi transakcyjnymi.
  • Unikaj stosowania funkcji time intelligence bez kontekstu filtrowania dat — może to prowadzić do nieoczekiwanych wyników lub błędnych obliczeń.
  • Testuj funkcje na prostych przykładach, zanim użyjesz ich w złożonych modelach raportowych.

Właściwe zastosowanie funkcji time intelligence znacząco zwiększa wartość informacyjną raportów i pozwala użytkownikom końcowym lepiej zrozumieć dynamikę danych w czasie. W Cognity łączymy teorię z praktyką – dlatego ten temat rozwijamy także w formie ćwiczeń na szkoleniach.

icon

Formularz kontaktowyContact form

Imię *Name
NazwiskoSurname
Adres e-mail *E-mail address
Telefon *Phone number
UwagiComments