DAX vs Język M – Który wybrać i do czego służą?

Dowiedz się, jakie są kluczowe różnice między DAX a językiem M oraz kiedy warto używać każdego z nich w Power BI.
26 marca 2025
blog
Poziom: Podstawowy

Artykuł przeznaczony dla początkujących i średnio zaawansowanych użytkowników Power BI, którzy chcą zrozumieć różnice oraz zastosowania DAX i języka M w analizie i przygotowaniu danych.

Z tego artykułu dowiesz się

  • Czym różnią się DAX i język M w Power BI oraz na jakim etapie pracy z danymi są używane?
  • Do jakich zadań służy DAX (miary, kolumny i tabele obliczeniowe) i jakie daje możliwości analityczne?
  • Jakie transformacje danych można wykonać w języku M w Power Query i kiedy warto go wybrać zamiast DAX?

Wprowadzenie do DAX i języka M

Power BI oferuje dwa główne języki służące do przekształcania i analizowania danych: DAX (Data Analysis Expressions) oraz język M. Choć oba odgrywają kluczową rolę w pracy z danymi, ich zastosowanie i sposób działania są zupełnie różne. DAX służy przede wszystkim do analizy, agregacji i obliczeń w modelu danych, natomiast język M jest wykorzystywany do przekształcania oraz ładowania danych podczas procesu ETL (Extract, Transform, Load).

DAX jest językiem obliczeniowym, który umożliwia tworzenie miar, kolumn obliczeniowych i tabel kalkulacyjnych w Power BI. Dzięki niemu można definiować zaawansowane formuły do analizy danych, np.:

SUMA_SPRZEDAŻY = SUM('Tabela'[Sprzedaż])

Z kolei język M, używany w Power Query, jest funkcjonalnym językiem służącym do pobierania, filtrowania i transformowania danych przed ich załadowaniem do modelu. Przykładowa transformacja w języku M może wyglądać tak:

let
    Źródło = Csv.Document(File.Contents("plik.csv"), [Delimiter=",", Columns=5, Encoding=65001])
    ZmienioneNazwy = Table.RenameColumns(Źródło, {{"Kolumna1", "Data"}, {"Kolumna2", "Sprzedaż"}})
 in
    ZmienioneNazwy

Podsumowując, DAX jest narzędziem do modelowania i analizy danych, natomiast język M służy do ich transformacji i przygotowania. W kolejnych sekcjach artykułu omówimy szczegółowe różnice między tymi językami oraz ich praktyczne zastosowania.

Główne różnice między DAX a językiem M

DAX (Data Analysis Expressions) i język M to dwa różne języki używane w Power BI, które służą innym celom. Główna różnica polega na tym, że DAX jest używany do analizy i obliczeń na modelu danych, podczas gdy język M służy do pobierania, przekształcania i przygotowywania danych przed ich załadowaniem do modelu.

DAX działa w kontekście modelu analitycznego i pozwala na tworzenie miar, kolumn obliczeniowych oraz obiektów pomocniczych do analizy danych. W przeciwieństwie do tego język M jest stosowany w Power Query do ekstrakcji i transformacji danych, umożliwiając filtrowanie, grupowanie oraz kształtowanie danych przed ich użyciem w modelu.

Przykładowo, w DAX można utworzyć miarę sumującą wartości w kolumnie:

CałkowitaSprzedaż = SUM(Tabela[Sprzedaż])

Natomiast w języku M typową operacją jest przekształcenie danych, np. zmiana nazw kolumn:

RenamedColumns = Table.RenameColumns(Źródło, {{"StaraNazwa", "NowaNazwa"}})

Podsumowując, DAX służy do analizy danych w modelu, a język M do ich transformacji przed załadowaniem. W kolejnych sekcjach omówimy bardziej szczegółowe zastosowania obu języków.

Zastosowania DAX w Power BI

DAX (Data Analysis Expressions) jest językiem stosowanym w Power BI, służącym do analizy i manipulacji danymi w modelu. Jego głównym zadaniem jest umożliwienie użytkownikom definiowania niestandardowych miar, kolumn obliczeniowych i tabel, które wspierają analizę danych w raportach i wizualizacjach.

W praktyce DAX pozwala na:

  • Tworzenie miar (Measures), które dynamicznie przeliczają wartości w kontekście wizualizacji.
  • Dodawanie kolumn obliczeniowych (Calculated Columns), które rozszerzają tabelę o nowe wartości wyliczone na podstawie istniejących danych.
  • Tworzenie tabel obliczeniowych (Calculated Tables), które generują nowe zestawy danych w oparciu o istniejące źródła.
  • Przeprowadzanie agregacji i filtrowania w sposób dynamiczny w zależności od kontekstu raportu.
  • Zaawansowane operacje na danych, takie jak analizy czasowe (np. porównania rok do roku, zmiany okresowe, suma narastająca).

Przykładem podstawowej miary w DAX może być suma wartości sprzedaży:

Sales Total = SUM(Sales[Amount])

DAX wyróżnia się tym, że działa na modelu danych po jego wczytaniu, co oznacza, że jest używany głównie do obliczeń wykonywanych na poziomie raportu, a nie do transformacji źródłowych danych. W kolejnych sekcjach omówimy bardziej szczegółowe różnice w stosowaniu DAX oraz porównamy go z językiem M.

Jeśli chcesz lepiej wykorzystać możliwości języka DAX i języka M w Power BI, sprawdź nasze szkolenie: Kurs Język DAX i język M - wykorzystanie funkcji języka DAX i analiza danych przy użyciu języka M. To doskonała okazja, aby zdobyć praktyczne umiejętności i zwiększyć efektywność analizy danych!

Zastosowania języka M w Power BI

Język M jest używany głównie w Power Query, gdzie służy do przekształcania i kształtowania danych przed ich załadowaniem do modelu Power BI. Dzięki jego funkcjom użytkownicy mogą automatyzować procesy czyszczenia danych, łączyć różne źródła informacji oraz definiować niestandardowe transformacje. W przeciwieństwie do DAX, który działa na już załadowanych danych, język M działa na etapie pozyskiwania i przetwarzania informacji.

Jednym z kluczowych zastosowań języka M jest filtrowanie, grupowanie oraz łączenie danych na poziomie zapytań. Przykładowo, aby przefiltrować tabelę tak, aby zawierała tylko wartości większe niż 100, można użyć następującego kodu:

let
    Źródło = Table.FromRecords({
        [Produkt="A", Cena=50],
        [Produkt="B", Cena=150],
        [Produkt="C", Cena=200]
    }),
    FiltrowaneDane = Table.SelectRows(Źródło, each [Cena] > 100)
 in
    FiltrowaneDane

Język M jest również pomocny w pobieraniu danych z różnych źródeł, takich jak pliki CSV, bazy danych SQL czy API internetowe. Pozwala na tworzenie dynamicznych zapytań, które mogą uwzględniać parametry użytkownika, co czyni go niezwykle elastycznym narzędziem w procesie ETL (Extract, Transform, Load).

Dzięki zastosowaniu języka M można zoptymalizować model danych w Power BI, eliminując zbędne kolumny lub agregując dane do odpowiedniego poziomu szczegółowości jeszcze przed ich załadowaniem. To sprawia, że raporty działają szybciej i są bardziej wydajne.

W kolejnych sekcjach przyjrzymy się szczegółowo różnicom między językiem M a DAX oraz konkretnym przykładom ich zastosowania w praktyce.

Kiedy używać DAX, a kiedy języka M?

Zarówno DAX, jak i język M pełnią kluczowe role w przetwarzaniu danych w Power BI, ale ich zastosowania różnią się znacząco. Wybór odpowiedniego języka zależy od celu operacji – czy chodzi o transformację danych na etapie importu, czy o analizę i agregację danych w modelu.

DAX służy głównie do analizowania danych już załadowanych do modelu. Używa się go do tworzenia miar, kolumn obliczeniowych oraz tabel obliczeniowych, pozwalając na dynamiczne obliczenia w kontekście raportowania. Na przykład, jeśli chcemy obliczyć skumulowaną sumę sprzedaży, możemy użyć DAX:

CALCULATE(SUM(Sales[Amount]), DATESYTD(Sales[Date]))

Z drugiej strony, język M jest używany w Power Query do pobierania, czyszczenia i transformowania danych przed ich załadowaniem do modelu. Przydaje się, gdy konieczne jest filtrowanie, łączenie tabel czy zmiana typów danych przed analizą. Przykładowo, aby zmienić format daty, możemy użyć kodu M:

Table.TransformColumns(Source, {{"OrderDate", each Date.ToText(_, "yyyy-MM-dd"), type text}})

Podsumowując, jeśli potrzebujesz manipulować danymi na etapie pobierania i oczyszczania – użyj języka M. Jeśli chcesz tworzyć dynamiczne miary i analizy – wybierz DAX. Jeśli chcesz zgłębić temat DAX i nauczyć się jego praktycznego zastosowania, sprawdź Kurs DAX - praca w języku DAX i użyteczne funkcje, wizualizacja danych w Power BI.

💡 Pro tip: Najpierw maksymalnie odchudź dane w języku M (filtry, typy, łączenia), a obliczenia pozostaw na etapie modelu jako miary w DAX – zyskasz mniejszy model i szybsze odświeżanie.

Przykłady składni i praktyczne różnice

DAX i język M różnią się nie tylko zastosowaniem, ale także sposobem zapisu operacji i przetwarzania danych. DAX stosuje się głównie do obliczeń wykonywanych na gotowych modelach danych, natomiast język M służy do ich przekształcania i pobierania. Składnia obu języków odzwierciedla te różnice – DAX przypomina formuły Excela, a M jest bardziej funkcjonalnym językiem opartym na transformacjach.

Na przykład, w języku DAX możemy obliczyć sumę wartości w kolumnie:

SalesTotal = SUM(Sales[Amount])

Natomiast język M pozwala na przekształcanie danych, np. zmianę nazw kolumn:

let
    Source = Excel.CurrentWorkbook(){[Name="Sales"]}[Content],
    RenamedColumns = Table.RenameColumns(Source, {{"OldColumn", "NewColumn"}})
 in
    RenamedColumns

Główna różnica polega więc na tym, że DAX działa na danych już załadowanych do modelu, a M odpowiada za ich przygotowanie przed załadowaniem. W kolejnych częściach przyjrzymy się bardziej szczegółowo ich zastosowaniom oraz sytuacjom, w których jeden język jest preferowany nad drugim.

💡 Pro tip: W M układaj kroki tak, by zachować query folding (filtry i łączenia jak najwcześniej), a w DAX pamiętaj, że obliczenia są zależne od kontekstu – testuj miary pod różnymi filtrami.

Podsumowanie i rekomendacje

Wybór między DAX a językiem M zależy przede wszystkim od celu, jaki chcemy osiągnąć w Power BI. Obie technologie pełnią różne role: DAX służy do analizy i obliczeń na poziomie modelu danych, natomiast język M jest używany do przekształcania i ładowania danych w Power Query.

DAX najlepiej sprawdza się, gdy potrzebujemy dynamicznych miar, kolumn obliczeniowych lub zaawansowanych agregacji na poziomie raportowania. Z kolei język M jest idealnym narzędziem do czyszczenia, transformacji oraz łączenia danych przed ich załadowaniem do modelu.

Przykładowo, jeśli chcemy obliczyć skumulowaną sumę sprzedaży, użyjemy DAX:

CALCULATE(SUM(Sales[Amount]), FILTER(ALL(Sales), Sales[Date] <= MAX(Sales[Date])))

Z kolei do usunięcia pustych wierszy podczas importu danych możemy użyć języka M:

Table.SelectRows(Source, each ([Column1] <> null and [Column1] <> ""))

Rekomendacja jest prosta: jeśli potrzebujesz dynamicznych kalkulacji w raportach – wybierz DAX. Jeśli chcesz przygotować dane przed ich analizą – skorzystaj z języka M. W praktyce oba języki często współpracują, zapewniając optymalny przepływ danych w Power BI.

Kurs Język M - Microsoft Business Intelligence - sprawne wykorzystanie Power BI podczas analizy danych i stosowanie języka M
ogólny
cena
od 2800 zł + VAT dla szkoleń otwartych
szkolenia zamknietę
Zapytaj o cenę dla szkoleń zamkniętych
Kurs Język M - Microsoft Business Intelligence...
Kurs Microsoft Power Query -  analiza danych przy użyciu języka M i optymalizacja procesu analizy danych
ogólny
cena
od 2961 zł + VAT dla szkoleń otwartych
szkolenia zamknietę
Zapytaj o cenę dla szkoleń zamkniętych
Kurs Microsoft Power Query - analiza danych przy użyciu języka M...
Kurs DAX zaawansowany: tworzenie skutecznych modeli danych
zaawansowany
cena
od 2800 zł + VAT dla szkoleń otwartych
szkolenia zamknietę
Zapytaj o cenę dla szkoleń zamkniętych
Kurs DAX zaawansowany: tworzenie skutecznych modeli danych ...
Kurs DAX - praca w języku DAX i użyteczne funkcje, wizualizacja danych w Power BI
zaawansowany
cena
od 2800 zł + VAT dla szkoleń otwartych
szkolenia zamknietę
Zapytaj o cenę dla szkoleń zamkniętych
Kurs DAX - praca w języku DAX i użyteczne funkcje...
Kurs DAX zaawansowany: tworzenie skutecznych modeli danych
zaawansowany
cena
od 2800 zł + VAT dla szkoleń otwartych
szkolenia zamknietę
Zapytaj o cenę dla szkoleń zamkniętych
Kurs DAX zaawansowany: tworzenie skutecznych modeli danych ...
icon

Formularz kontaktowyContact form

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