Funkcja CALCULATE w Power BI – najważniejsza funkcja w DAX, którą musi znać każdy analityk

21 listopada 2025

funkcja CALCULATE w Power BI - DAX w Power BI

Kiedy uczę Power BI albo prowadzę rekrutacje na stanowiska analityczne, jest jedno pytanie, które wraca jak bumerang. Brzmi ono: „Jak działa funkcja CALCULATE i kiedy jej używać?”. I szczerze mówiąc, jeżeli miałbym wskazać tylko jedną funkcję, bez której nie wyobrażam sobie pracy w Power BI, to właśnie CALCULATE jest takim kandydatem numer jeden.

W tym artykule przeprowadzę cię krok po kroku przez logikę stojącą za CALCULATE, pokażę ci, jak zmienia ona kontekst filtrowania, i przede wszystkim – zbuduję kilka praktycznych, prawdziwych przykładów.
Na koniec będziesz dokładnie wiedzieć:

  • dlaczego CALCULATE to serce DAX,
  • jak tworzyć miary wykorzystujące złożone filtry,
  • jak liczyć wartości za poprzedni rok,
  • jak modyfikować kontekst filtrowania tak, aby tworzyć procentowe udziały czy agregacje na totalu.

Jedziemy.


Czym właściwie jest CALCULATE?

Gdy pierwszy raz spotykamy CALCULATE, może się wydawać, że to po prostu funkcja licząca coś pod warunkiem. Ale tak naprawdę to mechanizm zmiany kontekstu filtrowania – fundament działania języka DAX.

Najprościej mówiąc:

  1. Pierwszy argument CALCULATE to wyrażenie – coś, co ma zostać policzone.
    To może być suma, minimum, maksimum, COUNTROWS, albo po prostu inna miara.
  2. Kolejne argumenty to filtry – czyli warunki, które mają zostać nałożone zamiast lub obok aktualnych filtrów.

To oznacza, że CALCULATE pozwala nam wpływać na to, w jakim kontekście ma zostać wykonane wyrażenie – co czyni go funkcją absolutnie kluczową.

Żeby dobrze zrozumieć jego moc, przejdźmy do pierwszego praktycznego przykładu.


Przykład 1: Liczenie zamówień, w których data zamówienia jest równa dacie wysyłki

Załóżmy, że chcemy policzyć, ile było takich zamówień, gdzie:

OrderDate = ShipDate

To świetny przykład na start, bo pokazuje, jak połączyć wyrażenie (to, co liczymy) z filtrem (kiedy liczymy).

Tworzę nową miarę:

Same Day Orders = 
CALCULATE(
    COUNTROWS(Orders),
    Orders[Order Date] = Orders[Shipping Date]
)

I teraz co właściwie tu się wydarzyło?

  • COUNTROWS(Orders) liczy liczbę wierszy w tabeli zamówień.
  • CALCULATE zmienia kontekst filtrowania, tak aby liczyć tylko te wiersze, gdzie data zamówienia == data wysyłki.

Po wrzuceniu tej miary na kartę widzę, że takich zamówień jest 252.

I to jest pierwszy moment, w którym zaczynasz dostrzegać moc CALCULATE: ta funkcja nie tylko coś liczy – ona decyduje kiedy to coś zostanie policzone.

Kurs PowerBI dla początkujących

Opanuj PowerBI z moim kursem!

Poznasz najważniejsze narzędzia do wizualizacji danych – od pierwszego modelu danych, przez Power Query, aż po DAX i profesjonalne raporty. Zobaczysz, jak łączyć różne źródła danych, budować czytelne dashboardy i tworzyć analizy, które realnie wspierają decyzje biznesowe. To praktyczny kurs, który pozwoli Ci wyjść poza Excela i wejść na poziom pracy nowoczesnego analityka.


Przykład 2: Wartość zamówień z poprzedniego roku (year-over-year)

Drugie bardzo częste zadanie w Power BI to porównania rok do roku.
I tu CALCULATE staje się wręcz niezastąpiony.

Załóżmy, że mamy już miarę:

Total Order Value

I chcemy policzyć:

„Jaka była wartość zamówień w poprzednim roku względem wybranego zakresu dat?”

Dodaję slicer z datą, a następnie tworzę nową miarę:

Order Value Last Year =
CALCULATE(
    [Total Order Value],
    SAMEPERIODLASTYEAR('Calendar'[Date])
)

To jest piękne w swojej prostocie:

  • Używamy SAMEPERIODLASTYEAR, która przesuwa kontekst dat dokładnie o 1 rok do tyłu.
  • CALCULATE sprawia, że Total Order Value liczy się w nowym kontekście.

Po wrzuceniu miary na kartę widzę, że wartość zamówień rok wcześniej wynosi ok. 2 miliony.

Jak interpretować te wyniki?

Załóżmy, że na slicerze wybrałem zakres:

  • 29.01.2018 – 25.01.2022

To oznacza:

  • Total Order Value liczy wartość zamówień w tym okresie.
  • Order Value Last Year liczy wartość zamówień od:
    • 29.01.2017 do
    • 25.01.2021

Jeśli w danych nie ma dat sprzed 2018 roku (a w naszym przykładzie nie ma), Power BI zrobi coś bardzo logicznego – po prostu nie cofnie się dalej, niż pozwala mu kalendarz.

To ważny szczegół, bo często początkujący użytkownicy dziwią się, dlaczego wyniki „nie działają”, gdy zakres obejmuje pierwszy dostępny rok.


Przykład 3: Procentowy udział stanów w liczbie wszystkich zamówień

To przykład, który wymaga głębszego zrozumienia działania kontekstu wiersza i filtra.

Chcemy policzyć:

„Jaki procent wszystkich zamówień pochodzi z danego stanu?”

Czyli:

  • Licznik: liczba zamówień dla konkretnego stanu
  • Mianownik: liczba zamówień niezależnie od stanu (total)

Dla takiego zadania tworzę miarę:

State Share =
DIVIDE(
    [Orders],
    CALCULATE(
        [Orders],
        ALL(Orders[Delivery State])
    )
)

Co tu się dzieje?

  1. DIVIDE obsługuje licznik/mianownik i zabezpiecza przed dzieleniem przez zero.
  2. Licznik – zwykła miara [Orders].
  3. Mianownik:
    • CALCULATE ponownie liczy [Orders],
    • ale ALL(Orders[Delivery State]) usuwa filtr ze stanu.
      Dzięki temu liczymy całkowitą liczbę zamówień, niezależnie od tego, jaki stan akurat wyświetla tabela.

Po wrzuceniu wyniku do tabeli i ustawieniu formatu procentowego mamy czytelną listę: które stany odpowiadają za jaki udział całkowitej liczby zamówień.

To jest klasyczny przykład, który pokazuje, jak CALCULATE zmienia kontekst i umożliwia tworzenie miar typu:

  • udział procentowy,
  • rankingi,
  • porównania,
  • agregacje na totalu,
  • i wiele innych.

Dlaczego CALCULATE jest absolutną podstawą nauki DAX?

Bo pozwala robić trzy kluczowe rzeczy:

1. Zmieniać kontekst filtrowania

To jest najważniejsze.
Bez tego DAX byłby zestawem prostych agregacji jak w Excelu.

Dzięki CALCULATE możesz:

  • usuwać filtry (ALL),
  • dodawać nowe (np. Sales > 100),
  • modyfikować istniejące,
  • przesuwać kontekst czasu (SAMEPERIODLASTYEAR, DATEADD).

2. Łączyć miary i logikę biznesową

W realnych projektach prawie każda miara będzie w pewnym momencie wykorzystywać CALCULATE:

  • liczba produktów premium,
  • przychód za ostatnie 30 dni,
  • koszt transportu tylko dla zamówień ekspresowych,
  • wartość sprzedaży w kategorii electronics,
  • budowanie KPI.

3. Tworzyć zaawansowane analizy czasu (time intelligence)

Bez CALCULATE nie zadziała:

  • YOY,
  • YTD,
  • MTD,
  • zmiany procentowe,
  • przesunięcia okresów,
  • rolling windows.

CALCULATE w praktyce – kompletne podsumowanie logiki użytkowej

Aby naprawdę zrozumieć CALCULATE, trzeba wiedzieć o trzech rzeczach:
kontekst wiersza, kontekst filtra i to, co robi CALCULATE, gdy je przetwarza.

1. CALCULATE najpierw wykonuje wszystkie filtry

To oznacza, że zamiast liczyć agregację w standardowym kontekście (np. tabeli lub slicera), najpierw nakłada warunki z argumentów.

2. Następnie liczy wyrażenie w nowym kontekście

Dzięki temu możesz np. policzyć sprzedaż:

  • tylko dla klientów VIP,
  • tylko w niedziele,
  • tylko powyżej pewnego progu,
  • albo zupełnie ignorując filtry tabeli wymiarów.

3. CALCULATE nie działa w kolumnach obliczeniowych

To pułapka, na którą wiele osób wpada.
CALCULATE działa tylko w miarach, bo wymaga kontekstu filtrowania.


Jak najlepiej uczyć się CALCULATE? Moja rada

Jeżeli chcesz naprawdę dobrze zrozumieć CALCULATE, rób trzy rzeczy:

  1. Twórz miary, które mają więcej niż jeden filtr.
  2. Buduj małe tabelki testowe i obserwuj, jak zmienia się wynik po usunięciu filtrów funkcją ALL.
  3. Wykonuj analizy typu year-over-year, bo świetnie pokazują mechanikę kontekstu dat.

Zapisz się do
newslettera

🎁 i zgarnij darmowe bonusy:

Poradnik Początkującego Analityka

Video - jak szukać pracy w IT

Regularne dawki darmowej wiedzy, bez spamu


Podsumowanie

Funkcja CALCULATE to fundament DAX.
To ona daje ci możliwość tworzenia zaawansowanych analiz, modyfikowania kontekstu filtrowania i budowania logiki biznesowej na poziomie, którego Excel nie jest w stanie zapewnić.

Jeśli zrozumiesz CALCULATE, cała reszta DAX zacznie układać się jak puzzle.
I właśnie dlatego ta funkcja pojawia się w niemal każdej rekrutacji na analityka danych – bo jej znajomość pokazuje, że rozumiesz, jak Power BI działa „pod maską”.

Jeśli ten artykuł był dla ciebie pomocny, podziel się nim w swoich mediach społecznościowych i pomóż innym lepiej wejść w świat Power BI.

Inne ciekawe artykuły:

Autorem artykułu jest Kajo Rudziński – analytical data architect, uznany ekspert w analizie danych, twórca KajoData oraz społeczności dla analityków KajoDataSpace.

To tyle w tym temacie. Analizujcie w pokoju!  

Podobał Ci się ten artykuł 🙂?
Podziel się nim w Social Mediach 📱
>>> udostępnij go na LinkedIn i pokaż, że codziennie uczysz się czegoś nowego 
>>> wrzuć go na Facebooka, to się może przydać któremuś z Twoich znajomych 
>>> Przypnij sobie tą stronkę to zakładek, może się przydać w przyszłości

Wolisz oglądać 📺 niż czytać – nie ma problemu
>>> Obserwuj i oglądaj KajoData na YouTube

Ja Ci ją z przyjemnością wyślę. Za darmo. Bez spamu.

Poradnik Początkującego Analityka

Video - jak szukać pracy w IT

Regularne dawki darmowej wiedzy, bez spamu.