Definicja #
DAX (Data Analysis Expressions) to język formuł opracowany przez Microsoft, używany w narzędziach analitycznych opartych na silniku tabelarycznym VertiPaq: Power BI, Power Pivot (Excel) i SSAS Tabular. Składnia DAX przypomina formuły Excela, ale operuje na całych tabelach i kolumnach, a nie pojedynczych komórkach.
Kluczowe koncepcje DAX:
- Miary (Measures) — dynamiczne obliczenia agregowane w kontekście filtrów raportu (np. suma sprzedaży, marża).
- Kolumny obliczeniowe — wartości wyliczane dla każdego wiersza tabeli i przechowywane w modelu.
- Kontekst filtrowania (Filter Context) — mechanizm określający, które wiersze są brane pod uwagę; kluczowy do zrozumienia funkcji CALCULATE.
- Kontekst wiersza (Row Context) — iteracja po wierszach tabeli w funkcjach iteracyjnych (SUMX, AVERAGEX).
- Time Intelligence — wbudowane funkcje do analiz czasowych: TOTALYTD, SAMEPERIODLASTYEAR, DATEADD.
Funkcja CALCULATE jest najważniejszą funkcją DAX — modyfikuje kontekst filtrowania obliczeń. Opanowanie DAX jest kluczowe dla tworzenia zaawansowanych modeli analitycznych i raportów w Power BI.
Zastosowania #
- Tworzenie miary KPI — np. YoY Sales Growth obliczającej wzrost sprzedaży rok do roku za pomocą SAMEPERIODLASTYEAR.
- Obliczanie skumulowanej sumy sprzedaży od początku roku (Year-To-Date) z TOTALYTD.
- Budowa modelu z tabelą kalendarza i relacjami do analizy trendów czasowych w Power BI.
- Dynamiczne rankingowanie produktów za pomocą RANKX.
- Obliczanie udziałów procentowych kategorii w całości z użyciem ALL i CALCULATE.
Ścieżka nauki #
DAX najlepiej uczyć się przy praktycznej pracy z Power BI lub Excelem z Power Pivot:
- Zacznij od podstawowych funkcji agregujących: SUM, AVERAGE, COUNT, MIN, MAX.
- Naucz się tworzyć miary i rozumieć różnicę między miarą a kolumną obliczeniową.
- Opanuj CALCULATE — to fundament zaawansowanego DAX; zasoby: SQLBI.com (Marco Russo, Alberto Ferrari).
- Poznaj funkcje Time Intelligence i naucz się budować tabele kalendarza.
- Ćwicz z funkcjami iteracyjnymi: SUMX, AVERAGEX, RANKX.
- Zasoby: dax.guide, książka "The Definitive Guide to DAX" (Russo & Ferrari), kanał YouTube Guy in a Cube.
FAQ #
- Czym różni się DAX od SQL?
- SQL służy do pobierania i transformacji danych z relacyjnych baz danych. DAX to język formuł do obliczeń na już załadowanym modelu tabelarycznym — działa w kontekście filtrów raportu. DAX nie zastępuje SQL, lecz uzupełnia go na etapie analizy i wizualizacji.
- Co to jest kontekst filtrowania w DAX?
- Kontekst filtrowania (Filter Context) to zbiór filtrów aktywnych podczas obliczania miary — np. wybrany miesiąc, region lub kategoria produktu na raporcie. Funkcja CALCULATE pozwala modyfikować ten kontekst wewnątrz formuły.
- Kiedy używać miary, a kiedy kolumny obliczeniowej?
- Miary są obliczane dynamicznie w kontekście filtrów raportu i nie zajmują miejsca w modelu — używaj ich dla agregacji (sumy, średnie, udziały). Kolumny obliczeniowe są wyliczane przy odświeżaniu danych i przechowywane — używaj ich, gdy potrzebujesz wartości dla każdego wiersza do filtrowania lub grupowania.
- Gdzie DAX jest używany poza Power BI?
- DAX jest używany w Power Pivot (Excel), SQL Server Analysis Services (SSAS) w trybie tabelarycznym oraz Azure Analysis Services. Składnia jest niemal identyczna we wszystkich tych narzędziach.