Lekcja 16 – Zaawansowane funkcje DAX w Power BI i Power Pivot

W tej lekcji skupimy się na języku DAX (Data Analysis Expressions), który jest używany w Power BI i Power Pivot do tworzenia zaawansowanych obliczeń, miar, kolumn obliczeniowych oraz dynamicznych raportów. DAX to potężny język funkcjonalny, który umożliwia manipulowanie danymi, wykonywanie skomplikowanych obliczeń oraz budowanie dynamicznych modeli danych.

Czym jest DAX?

DAX to język funkcjonalny oparty na formułach, podobny do formuł w Excelu, ale znacznie bardziej elastyczny i zoptymalizowany pod kątem dużych zbiorów danych. Umożliwia tworzenie złożonych wyrażeń, które służą do analizy danych w Power BI, Power Pivot, a także w Microsoft Analysis Services. Dzięki DAX możesz definiować niestandardowe miary, kolumny obliczeniowe oraz wskaźniki KPI, które dynamicznie dostosowują się do danych, gdy są używane w raportach i tabelach przestawnych.

Dlaczego warto korzystać z DAX?

DAX pozwala na zaawansowaną analizę danych, która wykracza poza standardowe możliwości Excela czy Power BI. Oto główne zalety korzystania z DAX:

  1. Zaawansowane obliczenia: DAX umożliwia tworzenie dynamicznych miar i kolumn obliczeniowych, które automatycznie dostosowują się do zmieniających się danych. Możesz obliczać sumy, średnie, procenty, rankingi, zmiany w czasie i wiele innych wskaźników.
  2. Zarządzanie dużymi zbiorami danych: DAX jest zoptymalizowany do pracy z dużymi zestawami danych, co pozwala na efektywną analizę danych w Power BI i Power Pivot bez spowolnienia pracy.
  3. Dynamiczne raporty: Miary i kolumny obliczeniowe stworzone za pomocą DAX są dynamiczne, co oznacza, że zmieniają swoje wartości w zależności od filtrów i danych wybranych przez użytkownika.
  4. Praca z relacyjnymi modelami danych: DAX umożliwia pracę z wieloma tabelami i relacjami między nimi, co pozwala na analizowanie danych w bardziej złożony sposób niż w tradycyjnych arkuszach Excel.

Kluczowe elementy DAX

1. Miary (Measures)

Miary to dynamiczne obliczenia, które są stosowane do danych w tabelach przestawnych lub raportach. W przeciwieństwie do kolumn obliczeniowych, miary są obliczane na bieżąco, kiedy użytkownik analizuje dane, co sprawia, że są bardzo wydajne.

Przykładowa miara

Załóżmy, że masz tabelę z danymi dotyczącymi sprzedaży, gdzie każda transakcja jest zapisana w osobnym wierszu. Możesz utworzyć miarę, która oblicza całkowitą sprzedaż:

CałkowitaSprzedaż = SUM('Sprzedaż'[KwotaSprzedaży])

Miara ta oblicza sumę wszystkich wartości w kolumnie KwotaSprzedaży w tabeli Sprzedaż.

Miary z warunkami

Możesz także tworzyć miary, które obliczają wartości na podstawie określonych warunków. Na przykład, możesz obliczyć sumę sprzedaży tylko dla jednego regionu:

SprzedażRegionuA = CALCULATE(SUM('Sprzedaż'[KwotaSprzedaży]), 'Sprzedaż'[Region] = "Region A")

W tym przypadku funkcja CALCULATE zmienia kontekst obliczeń, filtrując dane tylko dla transakcji z regionu “Region A”.

2. Kolumny obliczeniowe (Calculated Columns)

Kolumny obliczeniowe są dodawane do istniejących tabel w modelu danych i są obliczane dla każdego wiersza. Różnią się od miar tym, że są statyczne i przypisane do konkretnej tabeli. Kolumny obliczeniowe są przydatne, gdy chcesz dodać nowe informacje do tabeli, które nie wynikają bezpośrednio z danych źródłowych.

Przykładowa kolumna obliczeniowa

Załóżmy, że masz tabelę Sprzedaż, w której znajdują się dane o ilości sprzedanych produktów oraz cenie za jednostkę. Możesz dodać kolumnę obliczeniową, która będzie wyliczać łączną wartość sprzedaży dla każdego wiersza:

ŁącznaWartośćSprzedaży = 'Sprzedaż'[Ilość] * 'Sprzedaż'[CenaJednostkowa]

Ta kolumna obliczeniowa będzie obliczać łączną wartość sprzedaży dla każdego wiersza w tabeli.

3. Funkcje czasowe (Time Intelligence)

DAX oferuje zaawansowane funkcje czasowe, które umożliwiają analizowanie danych w kontekście czasu, takie jak obliczanie wartości narastających, porównywanie danych rok do roku czy obliczanie średnich dla określonych okresów.

Przykładowa funkcja czasowa: CALCULATE i SAMEPERIODLASTYEAR

Załóżmy, że chcesz porównać sprzedaż z bieżącego roku do sprzedaży z tego samego okresu w poprzednim roku. Możesz użyć funkcji CALCULATE oraz SAMEPERIODLASTYEAR:

SprzedażPoprzedniegoRoku = CALCULATE(SUM('Sprzedaż'[KwotaSprzedaży]), SAMEPERIODLASTYEAR('Sprzedaż'[Data]))

Funkcja SAMEPERIODLASTYEAR zwraca zakres dat z poprzedniego roku, co pozwala na porównanie wyników z obecnym rokiem.

Funkcja TOTALYTD (narastająco od początku roku)

Jeśli chcesz obliczyć sumę sprzedaży narastająco od początku roku, możesz użyć funkcji TOTALYTD:

SprzedażYTD = TOTALYTD(SUM('Sprzedaż'[KwotaSprzedaży]), 'Sprzedaż'[Data])

Funkcja TOTALYTD oblicza sumę wartości od początku roku do wybranego dnia.

4. CALCULATE – zmiana kontekstu obliczeń

Funkcja CALCULATE jest jedną z najważniejszych funkcji w DAX, ponieważ pozwala na zmianę kontekstu obliczeń poprzez zastosowanie filtrów do danych. Dzięki CALCULATE możesz precyzyjnie kontrolować, jakie dane są brane pod uwagę w obliczeniach.

Przykład użycia CALCULATE

Załóżmy, że chcesz obliczyć całkowitą sprzedaż tylko dla klientów z określonego kraju:

SprzedażUK = CALCULATE(SUM('Sprzedaż'[KwotaSprzedaży]), 'Klienci'[Kraj] = "UK")

W tym przypadku CALCULATE filtruje dane, aby uwzględniać tylko transakcje klientów z Wielkiej Brytanii.

5. SUMX, AVERAGEX – operacje na tabelach

Funkcje SUMX, AVERAGEX, MINX, MAXX itp. to funkcje iteracyjne, które pozwalają na wykonywanie operacji na poziomie wierszy w tabeli. Są one przydatne, gdy chcesz obliczać wartości na podstawie złożonych obliczeń dla każdego wiersza.

Przykład funkcji SUMX

Załóżmy, że chcesz obliczyć łączną wartość sprzedaży, biorąc pod uwagę ilość i cenę za jednostkę, ale musisz wykonać to obliczenie dla każdego wiersza:

ŁącznaSprzedaż = SUMX('Sprzedaż', 'Sprzedaż'[Ilość] * 'Sprzedaż'[CenaJednostkowa])

Funkcja SUMX iteruje po każdym wierszu w tabeli Sprzedaż i mnoży ilość przez cenę jednostkową, a następnie sumuje wynik.

6. FILTER – filtrowanie danych w DAX

Funkcja FILTER umożliwia filtrowanie danych w modelu DAX. Jest szczególnie przydatna, gdy chcesz przeprowadzać operacje na określonym podzestawie danych.

Przykład użycia FILTER

Załóżmy, że chcesz obliczyć całkowitą sprzedaż dla klientów, którzy zrobili zakupy o wartości powyżej 1000 zł:

SprzedażDużychKlientów = CALCULATE(SUM('Sprzedaż'[KwotaSprzedaży]), FILTER('Sprzedaż', 'Sprzedaż'[KwotaSprzedaży] > 1000))

W tym przypadku FILTER wybiera tylko te wiersze, w których kwota sprzedaży przekracza 1000 zł, a CALCULATE sumuje te wartości.

Zaawansowane przykłady zastosowania DAX

Przykład 1: Obliczanie procentowego udziału sprzedaży

Załóżmy, że chcesz obliczyć procentowy udział sprzedaży dla każdego regionu w całkowitej sprzedaży. Możesz to zrobić za pomocą DAX, tworząc dwie miary:

1. Całkowita sprzedaż:

CałkowitaSprzedaż = SUM('Sprzedaż'[KwotaSprzedaży])

2. Procentowy udział sprzedaży:

UdziałSprzedaży = DIVIDE(SUM('Sprzedaż'[KwotaSprzedaży]), [CałkowitaSprzedaż])

Funkcja DIVIDE dzieli sumę sprzedaży dla każdego regionu przez całkowitą sumę sprzedaży, obliczając w ten sposób procentowy udział.

Przykład 2: Obliczanie sprzedaży narastająco według kwartału

Jeśli chcesz obliczyć sumę sprzedaży narastająco dla każdego kwartału, możesz użyć funkcji TOTALQTD (Total Quarter-to-Date):

SprzedażNarastającoKwartalnie = TOTALQTD(SUM('Sprzedaż'[KwotaSprzedaży]), 'Sprzedaż'[Data])

Funkcja TOTALQTD oblicza sumę sprzedaży od początku kwartału do wybranego dnia.

Przykład 3: Ranking produktów według sprzedaży

Załóżmy, że chcesz utworzyć ranking produktów według ich całkowitej sprzedaży. Możesz użyć funkcji RANKX, aby nadać każdemu produktowi odpowiednią pozycję:

RankingProduktów = RANKX(ALL('Produkty'), SUM('Sprzedaż'[KwotaSprzedaży]),, DESC, DENSE)

Funkcja RANKX oblicza ranking na podstawie sumy sprzedaży dla każdego produktu, sortując wyniki malejąco.

Podsumowanie

W tej lekcji nauczyłeś się, jak korzystać z zaawansowanych funkcji DAX w Power BI i Power Pivot, aby tworzyć dynamiczne miary, kolumny obliczeniowe oraz wskaźniki wydajności. DAX umożliwia wykonywanie zaawansowanych obliczeń, pracę z relacyjnymi modelami danych, analizę danych w kontekście czasu oraz tworzenie dynamicznych raportów, które dostosowują się do zmieniających się filtrów i danych. Dzięki DAX możesz znacznie rozszerzyć możliwości Power BI i Power Pivot, co pozwala na bardziej zaawansowaną analizę danych.

W kolejnych lekcjach omówimy, jak tworzyć zaawansowane raporty w Power BI na podstawie rzeczywistych przypadków biznesowych oraz jak zintegrować Power BI z innymi narzędziami w celu automatyzacji procesów i raportowania.

Gratulacje! Ukończyłeś lekcję 16.
Przejdź teraz do lekcji 17 >> Tworzenie zaawansowanych raportów w Power BI – Case Study


Spis Treści - darmowy kurs Excel


Wprowadzenie: Czym jest arkusz kalkulacyjny?
Lekcja 1: Wprowadzanie i formatowanie danych w Excelu
Lekcja 2: Korzystanie z formuł i funkcji w Excelu
Lekcja 3: Tabele i zarządzanie danymi w Excelu
Lekcja 4: Tworzenie wykresów w Excelu
Lekcja 5: Tabele przestawne w Excelu
Lekcja 6: Zaawansowane techniki filtrowania i sortowania danych w Excelu
Lekcja 7: What-If Analysis w Excelu
Lekcja 8: Solver i zaawansowana optymalizacja w Excelu
Lekcja 9: Zaawansowane scenariusze z użyciem Solver w Excel
Lekcja 10: Analysis ToolPak – Narzędzie do zaawansowanej analizy danych w Excelu
Lekcja 11: Power Query w Excelu – zaawansowane techniki pracy z danymi
Lekcja 12: Power Pivot – Analiza dużych zestawów danych w Excelu
Lekcja 13: Power BI – Tworzenie interaktywnych raportów i wizualizacji danych
Lekcja 14: Power Automate – Automatyzacja procesów biznesowych i Power BI
Lekcja 15: Power Apps – Tworzenie aplikacji na podstawie danych z Excela i Power BI
Lekcja 16: Zaawansowane funkcje DAX w Power BI i Power Pivot
Lekcja 17: Tworzenie zaawansowanych raportów w Power BI – Case Study
Lekcja 18: Zarządzanie dużymi bazami danych w Power BI
Lekcja 19: Analiza danych z wykorzystaniem Excela, Power BI i innych narzędzi