Porównanie DAX i języka M w Power BI
Poznaj różnice i zastosowania języków DAX i M w Power BI. Dowiedz się, który język wykorzystać do transformacji danych, a który do analizy i tworzenia miar w raportach.
DAX vs Język M – Który wybrać i do czego służą?
Wprowadzenie do DAX i języka M
Power BI to jedno z najpopularniejszych narzędzi do analizy i wizualizacji danych, a jego funkcjonalność opiera się na dwóch kluczowych językach: DAX (Data Analysis Expressions) oraz M (Power Query Formula Language). Choć oba służą do manipulacji danymi, mają zupełnie inne zastosowania.
-
DAX jest językiem stosowanym do analizy danych w modelu Power BI. Umożliwia on wykonywanie dynamicznych obliczeń, tworzenie miar oraz agregowanie danych w tabelach.
-
Język M to język funkcjonalny używany w Power Query, który służy do transformacji i przekształcania danych przed ich załadowaniem do modelu.
Wybór odpowiedniego języka zależy od tego, na jakim etapie pracy z danymi znajdujesz się w Power BI – przed czy po załadowaniu ich do modelu danych.
Główne różnice między DAX a językiem M
Cel użycia
-
DAX: używany do analizy danych i obliczeń na poziomie modelu Power BI.
-
Język M: stosowany do przekształcania i czyszczenia danych w Power Query przed ich załadowaniem.
Sposób działania
-
DAX pracuje w modelu danych Power BI, wykonując obliczenia w czasie rzeczywistym.
-
Język M wykonuje transformacje danych przed ich załadowaniem, działając w trybie ETL (Extract, Transform, Load).
Typowe zastosowania
-
DAX:
-
Tworzenie dynamicznych miar.
-
Definiowanie kolumn obliczeniowych.
-
Wykonywanie agregacji.
-
-
Język M:
-
Czyszczenie danych.
-
Łączenie różnych źródeł.
-
Transformacja i filtrowanie danych.
-
Różnice w wydajności
-
DAX umożliwia dynamiczne przeliczanie danych w zależności od filtrów i wizualizacji.
-
Język M może znacznie poprawić wydajność Power BI, przekształcając dane przed ich załadowaniem do modelu.
Kiedy używać DAX, a kiedy M w Power BI?
DAX:
-
Tworzenie dynamicznych miar (np.
SUM(),AVERAGE(),COUNTROWS()). -
Obliczanie wskaźników KPI.
-
Zastosowanie filtrów kontekstowych i relacyjnych w modelu danych.
-
Analiza danych na poziomie wizualizacji, np. dynamiczne podsumowania, rankingi i wartości skumulowane.
-
Obsługa skomplikowanych relacji między tabelami, np. analiza danych historycznych z użyciem
CALCULATE(). -
Umożliwia interaktywność raportu poprzez dynamiczne reagowanie na wybory użytkownika.
Język M:
-
Czyszczenie i przekształcanie danych przed ich załadowaniem.
-
Łączenie różnych źródeł danych w Power Query, np. baz danych SQL, arkuszy Excela, plików CSV.
-
Tworzenie nowych tabel na podstawie przekształconych danych, np. grupowanie i filtrowanie dużych zbiorów danych przed ich wczytaniem do modelu.
-
Redukcja ilości danych, poprzez filtrowanie i eliminację niepotrzebnych kolumn przed ich importem do Power BI.
-
Przygotowanie złożonych zapytań do przekształceń i automatyzacja procesów ETL.
Składnia i podstawowe funkcje DAX
DAX opiera się na funkcjach podobnych do Excela. Oto kilka kluczowych funkcji:
- SUM() – Sumuje wartości w danej kolumnie.
- AVERAGE() – Oblicza średnią.
- COUNTROWS() – Liczy liczbę wierszy w tabeli.
- CALCULATE() – Zmienia kontekst obliczeniowy, np.:
TotalSalesFiltered = CALCULATE(SUM(Sales[Amount]), Sales[Category] = "Electronics") - FILTER() – Filtrowanie danych w tabelach.
- RELATED() – Pobiera wartości z powiązanych tabel.
Składnia i podstawowe funkcje języka M
Język M jest funkcjonalny i wykorzystuje strukturę let-in. Oto podstawowe funkcje:
- Table.TransformColumns() – Modyfikacja kolumn w tabeli.
Table.TransformColumns(Source, {"Column1", each _ * 2}) - Text.Clean() – Usuwa niepotrzebne znaki.
- List.RemoveNulls() – Usuwa puste wartości.
- Table.Combine() – Łączy tabele.
- If, Each, Try – Struktury warunkowe, np.:
Table.AddColumn(Source, "NewColumn", each if [Value] > 10 then "High" else "Low")
Język M doskonale nadaje się do zaawansowanej manipulacji danymi przed ich załadowaniem.
Podsumowanie – który język wybrać?
| Cecha | DAX | Język M |
|---|---|---|
| Cel | Analiza danych w modelu | Transformacja danych w Power Query |
| Kontekst | Dynamiczne obliczenia | Przetwarzanie ETL przed załadowaniem |
| Typowe funkcje | SUM(), CALCULATE(), FILTER() | Table.TransformColumns(), Text.Clean() |
| Wydajność | Dynamiczne, może obciążać model | Optymalizacja ładowania danych |
| Scenariusze | KPI, analizy, dashboardy | Czyszczenie i integracja danych |
Kiedy użyć DAX?
- Potrzebujesz dynamicznych miar i wskaźników w Power BI.
- Chcesz przeprowadzić obliczenia na danych w modelu.
Kiedy użyć języka M?
- Pracujesz z różnych źródłami danych i potrzebujesz je znormalizować.
- Chcesz zoptymalizować wydajność Power BI poprzez lepsze przekształcenie danych przed ich załadowaniem.
Podsumowanie: Jeśli potrzebujesz dynamicznych obliczeń w raporcie – użyj DAX. Jeśli dane wymagają zaawansowanego przekształcenia przed analizą – wybierz M. Połączenie obu języków pozwala na optymalizację pracy z danymi w Power BI, poprawiając zarówno wydajność, jak i elastyczność raportów.