Wprowadzenie do języka DAX – pierwsze średniozaawansowane formuły i obliczenia

Poznaj średniozaawansowane formuły i obliczenia w języku DAX. Naucz się tworzyć miary, pracować z kontekstem i wykorzystywać funkcje czasowe w Power BI.
21 grudnia 2025
blog
Poziom: Średnio zaawansowany

Artykuł przeznaczony dla analityków danych oraz użytkowników Power BI na poziomie podstawowym i średnio zaawansowanym, którzy chcą zrozumieć DAX i stosować go w praktycznych analizach.

Z tego artykułu dowiesz się

  • Czym jest język DAX i jaką rolę pełni w Power BI?
  • Jakie są kluczowe różnice między miarami a kolumnami obliczeniowymi i kiedy je stosować?
  • Jak działa kontekst wiersza i kontekst filtru oraz jak wpływają na wyniki formuł DAX?

Wprowadzenie do języka DAX i jego roli w Power BI

DAX, czyli Data Analysis Expressions, to język formuł stworzony przez firmę Microsoft, wykorzystywany w narzędziach analitycznych takich jak Power BI, Excel Power Pivot oraz Analysis Services Tabular. Jego głównym celem jest umożliwienie użytkownikom tworzenia zaawansowanych obliczeń i analiz danych w modelu tabelarycznym.

W kontekście Power BI, DAX odgrywa kluczową rolę w procesie przekształcania surowych danych w użyteczne informacje biznesowe. Dzięki niemu użytkownicy mogą definiować własne miary analityczne, tworzyć kolumny obliczeniowe oraz budować złożone modele analityczne wspierające podejmowanie decyzji. DAX zapewnia elastyczność i precyzję, umożliwiając np. obliczanie wartości dynamicznych zależnych od kontekstu filtrów, dat czy relacji pomiędzy tabelami.

Choć składnia DAX przypomina znane z Excela formuły, jego możliwości znacznie wykraczają poza arkusz kalkulacyjny. Język ten został zaprojektowany z myślą o pracy z dużymi zbiorami danych i wielowymiarowych relacjach, co czyni go nieodzownym narzędziem w rękach analityków pracujących z Power BI.

Rola DAX w Power BI nie ogranicza się wyłącznie do tworzenia obliczeń – pozwala on także na optymalizowanie wydajności modelu danych, dostosowywanie sposobu wizualizacji informacji oraz budowanie logiki biznesowej w raportach i dashboardach. Dzięki temu umożliwia przekształcenie danych na poziomie semantycznym, bez konieczności ingerowania w źródłowe bazy danych.

Podsumowując, znajomość języka DAX stanowi jeden z fundamentów efektywnej pracy z Power BI, otwierając drogę do tworzenia elastycznych, dynamicznych i w pełni dostosowanych do potrzeb organizacji analiz danych.

Podstawowe zasady składni i struktury formuł DAX

Data Analysis Expressions (DAX) to język formuł wykorzystywany głównie w Power BI, a także w innych narzędziach Microsoft, takich jak Power Pivot czy Analysis Services. Choć przypomina tradycyjne formuły znane z Excela, DAX posiada własną strukturę i zasady, które pozwalają na budowę dynamicznych miar i zaawansowanych obliczeń w modelach danych. W Cognity często spotykamy się z pytaniami na ten temat podczas szkoleń, dlatego postanowiliśmy przybliżyć go również na blogu.

Formuły DAX są zawsze przypisane do kontekstu – mogą być stosowane do obliczeń kolumn obliczeniowych, miar lub tabel zwracanych dynamicznie w zależności od filtrów i interakcji w raporcie. Kluczowe składniki każdej formuły DAX to funkcje (np. agregujące, logiczne, matematyczne), operatory (takie jak +, -, *, /, &&, ||) oraz odwołania do kolumn lub tabel danych.

Najważniejsze cechy składni DAX obejmują:

  • Użycie nazw kolumn i tabel: Kolumny zawsze znajdują się w nawiasach kwadratowych i są poprzedzone nazwą tabeli, jeśli kontekst tego wymaga.
  • Nawiasy: Funkcje DAX używają klasycznej notacji z nawiasami okrągłymi do przekazywania argumentów.
  • Separatory: W zależności od ustawień regionalnych, lista argumentów może być oddzielana przecinkiem lub średnikiem.
  • Typ danych: DAX rozpoznaje typy, takie jak liczby całkowite, zmiennoprzecinkowe, tekst czy daty, co ma wpływ na sposób działania funkcji i operatorów.
  • Funkcje wbudowane: DAX oferuje szeroki wachlarz funkcji umożliwiających filtrowanie, przekształcanie oraz analizę danych w czasie.

W DAX-ie szczególną rolę odgrywa sposób, w jaki formuła jest interpretowana w kontekście danych – dlatego poprawna struktura i zrozumienie składni to fundament skutecznego korzystania z języka. Nawet proste formuły mogą działać inaczej w zależności od tego, czy są używane jako miary, kolumny czy w filtrze wizualizacji.

Najczęściej używane funkcje DAX i ich zastosowanie

Język DAX (Data Analysis Expressions) oferuje szeroki wachlarz funkcji, które umożliwiają tworzenie zaawansowanych obliczeń oraz analizowanie danych w Power BI. W tej sekcji omówimy najczęściej wykorzystywane grupy funkcji DAX, ich ogólne zastosowanie oraz różnice pomiędzy nimi.

1. Funkcje agregujące

Funkcje agregujące pozwalają na podsumowanie danych, takie jak sumowanie, liczenie czy obliczanie średniej. Są to jedne z najczęściej stosowanych funkcji w raportach i miarach.

  • SUM() – sumuje wartości w kolumnie
  • AVERAGE() – oblicza średnią arytmetyczną
  • COUNT() – liczy ilość wartości niepustych
  • MAX(), MIN() – zwracają odpowiednio największą lub najmniejszą wartość
SUM('Sprzedaż'[Kwota])

2. Funkcje logiczne

Pozwalają na tworzenie warunków i logiki decyzyjnej w formułach, co czyni je bardzo przydatnymi przy tworzeniu dynamicznych obliczeń.

  • IF() – wykonuje warunkowe sprawdzenia
  • SWITCH() – zwraca różne wyniki w zależności od wartości wejściowej
  • AND(), OR(), NOT() – operatory logiczne
IF('Produkty'[Marża] > 0.2, "Wysoka", "Niska")

3. Funkcje tekstowe

Umożliwiają manipulację ciągami znaków – przydatne podczas formatowania lub przygotowania danych do wizualizacji.

  • CONCATENATE(), CONCATENATEX() – łączenie tekstu
  • LEFT(), RIGHT(), MID() – ekstrakcja fragmentów tekstu
  • SEARCH(), FIND() – wyszukiwanie tekstu w ciągach
CONCATENATE('Klienci'[Imię], " ", 'Klienci'[Nazwisko])

4. Funkcje związane z datami

Pozwalają na analizę danych w kontekście czasu. Choć wiele z nich będzie szczegółowo omawianych później, warto znać podstawowe:

  • TODAY(), NOW() – zwracają aktualną datę lub datę i czas
  • YEAR(), MONTH(), DAY() – ekstrakcja części daty
YEAR('Zamówienia'[Data Zamówienia])

5. Funkcje tabelaryczne vs funkcje skalarne

W DAX funkcje mogą zwracać pojedyncze wartości (funkcje skalarne) lub całe tabele (funkcje tabelaryczne). To, jaką funkcję wybierzemy, zależy od kontekstu i rodzaju tworzonych formuł.

Typ funkcji Przykłady Zwracana wartość
Skalarne SUM(), AVERAGE(), IF() Pojedyncza wartość (liczba, tekst, data)
Tabelaryczne FILTER(), VALUES(), ALL() Tabela danych

6. Funkcje filtrowania i kontekstu

Są kluczowe dla bardziej zaawansowanych analiz – pozwalają na kontrolę nad tym, jakie dane są brane pod uwagę w obliczeniach.

  • CALCULATE() – przelicza wyrażenie w zmodyfikowanym kontekście
  • FILTER() – zwraca podzbiór danych spełniających warunek
  • ALL() – usuwa filtry z tabeli lub kolumny
CALCULATE(SUM('Sprzedaż'[Kwota]), 'Sprzedaż'[Region] = "Zachód")

Znajomość tych funkcji stanowi fundament efektywnej pracy z DAX w Power BI. Ich właściwe użycie pozwala tworzyć zarówno proste miary, jak i złożone modele analityczne. Jeśli chcesz pogłębić swoją wiedzę i nauczyć się wykorzystywać te funkcje w praktyce, sprawdź nasz Kurs Język DAX i język M - wykorzystanie funkcji języka DAX i analiza danych przy użyciu języka M.

Tworzenie miar i kolumn obliczeniowych – różnice i przykłady

DAX (Data Analysis Expressions) umożliwia tworzenie zaawansowanych obliczeń i analiz w Power BI, głównie poprzez zastosowanie dwóch kluczowych elementów: miar oraz kolumn obliczeniowych. Choć oba typy wykorzystują formuły DAX, różnią się znacząco pod względem przeznaczenia, kontekstu działania i wpływu na model danych. W Cognity omawiamy to zagadnienie zarówno od strony technicznej, jak i praktycznej – zgodnie z realiami pracy uczestników.

Podstawowe różnice między miarami a kolumnami obliczeniowymi

Cecha Miara Kolumna obliczeniowa
Miejsce przechowywania Nie jest przechowywana fizycznie w modelu – obliczana dynamicznie Przechowywana w tabeli jako nowa kolumna
Kontekst działania Obliczenia zależne od kontekstu filtru i raportu Obliczenia wykonywane dla każdego wiersza tabeli
Wydajność Bardziej wydajne przy dużych zbiorach danych Zużywają więcej pamięci – zwiększają rozmiar modelu
Zastosowanie Tworzenie agregacji (np. sum, średnich, wskaźników KPI) Dodawanie informacji do danych źródłowych (np. kategorie, etykiety)

Przykłady zastosowań

Poniżej przedstawiono proste przykłady użycia miary i kolumny obliczeniowej w praktyce.

Miara – obliczanie całkowitej sprzedaży

Total Sales = SUM(Sales[Amount])

Miara Total Sales sumuje wartości w kolumnie Amount w zależności od kontekstu filtru w raporcie – np. dla wybranego roku lub regionu.

Kolumna obliczeniowa – klasyfikacja wartości sprzedaży

Sales Category = IF(Sales[Amount] > 1000, "Wysoka", "Niska")

Kolumna Sales Category przypisuje każdemu wierszowi etykietę na podstawie wartości sprzedaży. Jest tworzona dla każdego rekordu osobno i przechowywana w tabeli.

Podsumowanie

Zrozumienie różnicy między miarami a kolumnami obliczeniowymi jest kluczowe dla efektywnego projektowania modeli danych w Power BI. Wybór między nimi powinien zależeć od charakteru obliczenia oraz kontekstu, w jakim wynik ma być używany. Miary są niezastąpione w analizie dynamicznej, natomiast kolumny obliczeniowe ułatwiają wzbogacenie danych o dodatkowe atrybuty.

Praca z kontekstem wiersza i kontekstem filtru

Jednym z kluczowych elementów zrozumienia języka DAX (Data Analysis Expressions) jest pojęcie kontekstu. To właśnie kontekst determinuje, jak formuły są interpretowane i jakie wartości są wykorzystywane podczas obliczeń. DAX operuje głównie w dwóch typach kontekstu: kontekst wiersza oraz kontekst filtru.

Kontekst wiersza

Kontekst wiersza odnosi się do konkretnego wiersza tabeli, w którym wykonywana jest formuła. Najczęściej występuje podczas tworzenia kolumn obliczeniowych, gdzie każda formuła działa niezależnie dla każdego rekordu. W takim przypadku mamy dostęp do wartości z innych kolumn tego samego wiersza.

Przykład użycia kontekstu wiersza:

NowaKolumna = 'Sprzedaż'[CenaJednostkowa] * 'Sprzedaż'[Ilość]

W tym przykładzie formuła oblicza wartość tylko dla konkretnego wiersza – mnoży cenę jednostkową przez ilość.

Kontekst filtru

Kontekst filtru powstaje, gdy filtrujemy dane w modelu – na przykład przez użycie filtrów w wizualizacji, segmentatorów, czy funkcji DAX takich jak CALCULATE(). Ten kontekst wpływa na to, które wiersze są brane pod uwagę przy obliczaniu wartości agregowanych.

Przykład użycia kontekstu filtru:

CałkowitaSprzedaż = CALCULATE(SUM('Sprzedaż'[Wartość]), 'Sprzedaż'[Kraj] = "Polska")

W tym przypadku CALCULATE zmienia kontekst filtru tak, aby suma dotyczyła jedynie wierszy, w których kraj to „Polska”.

Podstawowe różnice

Cecha Kontekst wiersza Kontekst filtru
Zakres działania Pojedynczy wiersz tabeli Wybrany podzbiór danych w tabeli
Typ obliczeń Kolumny obliczeniowe Miary i agregacje
Źródło kontekstu Wiersz przetwarzany przez formułę Filtry z raportu, relacji i funkcji DAX
Możliwość zmiany Trudniejsza do modyfikacji Łatwa do zmiany przez CALCULATE()

Zrozumienie tych dwóch kontekstów jest niezbędne do poprawnego tworzenia formuł w DAX i unikania nieoczekiwanych wyników. Najczęściej obliczenia w bardziej złożonych analizach wymagają świadomego zarządzania kontekstem filtru i jego interakcją z kontekstem wiersza. Jeśli chcesz zgłębić tę tematykę jeszcze bardziej i poznać praktyczne zastosowania, sprawdź nasz Kurs DAX – praca w języku DAX i użyteczne funkcje, wizualizacja danych w Power BI.

💡 Pro tip: Miary działają wyłącznie w kontekście filtru; gdy potrzebujesz logiki per wiersz w mierze, użyj funkcji iterujących (np. SUMX), które tworzą kontekst wiersza dla każdego rekordu. Pamiętaj, że CALCULATE w obecności kontekstu wiersza wykonuje przejście kontekstu i zamienia go na filtry.

Zastosowanie funkcji czasowych w analizie danych

Funkcje czasowe w języku DAX (Data Analysis Expressions) umożliwiają analizę danych w ujęciu czasowym, co jest kluczowe w raportowaniu biznesowym i tworzeniu wizualizacji trendów. Dzięki nim można z łatwością porównywać wartości z różnych okresów, obliczać skumulowane sumy czy generować wskaźniki dynamiki.

Podstawowym celem tych funkcji jest ułatwienie pracy z datami i kalendarzami, a także umożliwienie analiz takich jak:

  • Porównania rok do roku (Year-over-Year, YoY)
  • Porównania kwartał do kwartału lub miesiąc do miesiąca
  • Kumulacja wartości w czasie (np. od początku roku)
  • Obliczenia dla przesuniętych okresów (np. sprzedaż z poprzedniego miesiąca)

W DAX dostępnych jest wiele funkcji czasowych, z których najczęściej wykorzystywane obejmują:

Funkcja Opis Typowe zastosowanie
SAMEPERIODLASTYEAR() Zwraca zestaw dat odpowiadających temu samemu okresowi w poprzednim roku. Porównania rok do roku
DATESYTD() Zwraca zestaw dat od początku roku do bieżącej daty w kontekście. Kumulacja danych od stycznia do chwili obecnej
PREVIOUSMONTH() Zwraca zestaw dat z poprzedniego miesiąca. Porównania miesiąc do miesiąca
PARALLELPERIOD() Pozwala uzyskać dane z równoległych okresów o określonym przesunięciu (np. 1 rok, 3 miesiące). Elastyczne analizy porównawcze
DATEADD() Przesuwa daty o określoną jednostkę czasu. Zaawansowane przesunięcia czasowe

Aby funkcje czasowe działały poprawnie, niezbędne jest posiadanie w modelu danych spójnej tabeli kalendarza (data table), najlepiej oznaczonej jako tabela dat w Power BI. Tabela ta powinna zawierać ciągły zakres dat oraz kolumny pomocnicze, takie jak rok, miesiąc, kwartał czy nazwa dnia tygodnia.

Poniżej przykład wykorzystania funkcji SAMEPERIODLASTYEAR() do porównania sprzedaży rok do roku:

Sales YoY = 
CALCULATE(
    SUM(Sales[Amount]),
    SAMEPERIODLASTYEAR('Date'[Date])
)

Dzięki tym funkcjom użytkownicy Power BI mogą tworzyć bardziej dynamiczne i porównawcze raporty, które pozwalają lepiej zrozumieć zmiany w danych na przestrzeni czasu.

Przykłady praktyczne – budowa formuł krok po kroku

W tej części przyjrzymy się, jak tworzyć pierwsze formuły w języku DAX w sposób praktyczny. Celem jest pokazanie, jak krok po kroku zbudować użyteczne obliczenia, które można zastosować w modelu danych Power BI. Na tym etapie skupimy się na prostych, ale reprezentatywnych przykładach, które ilustrują podstawowe podejście do rozwiązywania typowych problemów analitycznych przy użyciu DAX.

Wyobraźmy sobie, że mamy model danych zawierający sprzedaż, produkty i klientów. Na jego podstawie chcemy przygotować kilka podstawowych analiz:

  • Obliczenie łącznej sprzedaży: Użyjemy funkcji agregującej, aby zsumować wartości kolumny, np. sprzedaży brutto. To jedna z najprostszych formuł, ale bardzo często wykorzystywana.
  • Średnia wartość sprzedaży na klienta: Tutaj wykorzystamy kombinację sumowania i liczenia unikalnych klientów, by uzyskać średnią per klient. To przykład bardziej złożonego obliczenia, wymagającego przemyślenia kontekstu, w jakim działa formuła.
  • Porównanie sprzedaży miesiąc do miesiąca: Zastosujemy funkcję zwracającą sprzedaż z poprzedniego okresu i odejmiemy ją od bieżącej wartości, aby pokazać zmianę. To przykład użycia funkcji czasowych i prostych obliczeń różnicowych.
  • Liczba sprzedanych produktów określonej kategorii: Użyjemy filtru wewnątrz formuły, aby ograniczyć analizę do wybranej kategorii i policzyć sprzedane jednostki. To pokazuje, jak działa filtrowanie na poziomie formuły.

Tworząc każdą z tych formuł, warto zwrócić uwagę na to, czy zapisujemy je jako miary, czy jako kolumny obliczeniowe. Miary obliczają się dynamicznie w zależności od kontekstu (np. wybranych filtrów czy dat), natomiast kolumny są obliczane raz i przechowywane w danych. Wybór między nimi zależy od tego, co chcemy osiągnąć i jak chcemy zaprezentować wynik.

Praktyczna budowa formuł polega najczęściej na testowaniu, iteracyjnym udoskonalaniu logiki oraz sprawdzaniu działania obliczeń w różnych kontekstach raportu. Warto korzystać z edytora DAX w Power BI oraz narzędzi takich jak okienko „Wartości szybkiego pomiaru”, które pomagają w eksploracji dostępnych funkcji i składni.

Podejście krok po kroku pozwala dokładnie zrozumieć, jak działa każda część formuły i jak wpływa na wynik końcowy. Dzięki temu łatwiej będzie budować coraz bardziej zaawansowane obliczenia i unikać typowych błędów w analizie danych.

Najczęstsze błędy i dobre praktyki przy pracy z DAX

Praca z językiem DAX może początkowo wydawać się intuicyjna, szczególnie dla osób mających doświadczenie w Excelu czy SQL. Jednak DAX rządzi się swoimi unikalnymi zasadami, których nieprzestrzeganie może prowadzić do trudnych do wykrycia błędów i nieprawidłowych wyników analiz. Poniżej przedstawiamy najczęstsze pułapki, w które wpadają użytkownicy, oraz dobre praktyki, które warto stosować od samego początku pracy z DAX. Podczas szkoleń Cognity pogłębiamy te zagadnienia w oparciu o konkretne przykłady z pracy uczestników.

Typowe błędy popełniane przez użytkowników

  • Brak zrozumienia kontekstu: Jednym z najczęściej występujących problemów jest nieświadome ignorowanie kontekstu wiersza i kontekstu filtru, co prowadzi do błędnych wyników obliczeń.
  • Mylenie kolumn obliczeniowych z miarami: Początkujący często stosują kolumny obliczeniowe tam, gdzie bardziej odpowiednie byłoby użycie miar, przez co niepotrzebnie zwiększają rozmiar modelu danych.
  • Używanie zagnieżdżonych IF-ów zamiast SWITCH: Rozbudowane instrukcje warunkowe w formie zagnieżdżonych IF-ów mogą być trudne do utrzymania i prowadzić do błędów logicznych.
  • Nadmierne użycie funkcji CALCULATE bez zrozumienia: CALCULATE to potężne narzędzie, ale jego niewłaściwe użycie może całkowicie zmienić kontekst obliczeń i prowadzić do błędnych danych.
  • Nieoptymalne modelowanie danych: Próby kompensowania złej struktury modelu za pomocą skomplikowanych formuł DAX często kończą się nieczytelnym kodem i problemami z wydajnością.

Dobre praktyki w pracy z DAX

  • Rozumienie kontekstu: Zanim zaczniesz pisać formuły, upewnij się, że rozumiesz, w jakim kontekście (wiersza lub filtru) zostaną one wykonane.
  • Używanie czytelnych nazw i komentarzy: Nadawanie sensownych nazw miarom i dodawanie krótkich komentarzy znacznie ułatwia pracę z kodem, zwłaszcza w większych projektach.
  • Minimalizowanie złożoności formuł: Złożone obliczenia lepiej rozbić na kilka prostszych miar, co poprawia czytelność i ułatwia debugowanie.
  • Stosowanie standardów nazewnictwa: Ujednolicone nazwy miar i kolumn pomagają w nawigacji po modelu i ułatwiają współpracę w zespole.
  • Testowanie i walidacja wyników: Zawsze porównuj wyniki działania formuł z oczekiwaniami lub danymi źródłowymi, aby szybko wykryć potencjalne błędy logiczne.

Unikanie typowych błędów i stosowanie się do dobrych praktyk pozwala nie tylko tworzyć bardziej przejrzyste i wydajne formuły, ale także zwiększa niezawodność analiz biznesowych wykonywanych w Power BI.

💡 Pro tip: Najpierw zadbaj o model w schemacie gwiazdy i minimalne relacje, a złożone obliczenia buduj kaskadowo z małych, nazwanych miar bazowych. Każdą nową miarę weryfikuj w tabeli kontrolnej, porównując z danymi źródłowymi, zanim trafi do wizualizacji.
icon

Formularz kontaktowyContact form

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