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

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.

Majczęściej zadawane pytania i odpowiedzi odnośnie DAX vs Język M – Który wybrać i do czego służą?

Jaka jest najważniejsza różnica między DAX a językiem M w Power BI?

Najważniejsza różnica polega na tym, że DAX służy do obliczeń w modelu danych, a język M do przygotowania danych przed ich załadowaniem. DAX działa już na wczytanych tabelach i wspiera analizy, miary oraz kalkulacje w raportach. Język M działa w Power Query i odpowiada za pobieranie, czyszczenie, filtrowanie oraz przekształcanie danych na etapie ETL.

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

DAX wybierz wtedy, gdy chcesz liczyć i analizować dane w raporcie, a język M wtedy, gdy musisz je wcześniej przygotować. W praktyce podział wygląda zwykle tak:

  • DAX: miary, analizy czasowe, agregacje, logika raportowa.
  • Język M: filtrowanie źródeł, zmiana typów danych, usuwanie zbędnych kolumn, łączenie tabel.

Taki podział pomaga utrzymać porządek i lepszą wydajność modelu.

Czy DAX i język M konkurują ze sobą, czy raczej się uzupełniają?

DAX i język M przede wszystkim się uzupełniają, a nie zastępują. Język M przygotowuje dane do analizy, a DAX wykorzystuje je później w modelu do tworzenia miar i obliczeń. W dobrze zbudowanym rozwiązaniu oba języki współpracują: M porządkuje dane na wejściu, a DAX odpowiada za logikę analityczną widoczną w raportach i wizualizacjach.

Do czego służą miary, kolumny obliczeniowe i tabele obliczeniowe w DAX?

W DAX te elementy służą do rozszerzania modelu danych o logikę analityczną. Miary liczą wartości dynamicznie w zależności od filtrów i kontekstu raportu. Kolumny obliczeniowe dodają nowe dane do istniejących tabel. Tabele obliczeniowe pozwalają tworzyć nowe zestawy danych na podstawie już załadowanych informacji, co wspiera bardziej zaawansowane analizy.

Jakie zadania najczęściej wykonuje się w języku M w Power Query?

W języku M najczęściej wykonuje się operacje związane z przygotowaniem danych do modelu. Najczęstsze zastosowania obejmują:

  • pobieranie danych z plików, baz i innych źródeł,
  • filtrowanie i grupowanie rekordów,
  • zmianę nazw kolumn i typów danych,
  • łączenie tabel oraz usuwanie zbędnych wierszy.

Dzięki temu model może być prostszy i bardziej wydajny.

Dlaczego przeniesienie części pracy do języka M może przyspieszyć raporty Power BI?

Przeniesienie wstępnych transformacji do języka M może zmniejszyć rozmiar modelu i ograniczyć liczbę danych ładowanych do raportu. Jeśli już na etapie Power Query odfiltrujesz niepotrzebne rekordy, usuniesz zbędne kolumny i ustawisz poprawne typy, Power BI ma mniej pracy po załadowaniu danych. To zwykle poprawia odświeżanie i upraszcza dalsze analizy w DAX.

Jakie są praktyczne różnice w składni DAX i języka M?

DAX przypomina formuły znane z Excela, a język M opiera się na krokach transformacji i podejściu funkcjonalnym. W DAX często tworzysz pojedynczą formułę, która liczy wynik w określonym kontekście modelu. W M budujesz kolejne etapy przekształceń, na przykład pobranie danych, zmianę nazw kolumn i filtrowanie, zanim dane trafią do modelu.

Od czego zacząć naukę, jeśli chcę dobrze rozumieć DAX i język M?

Najlepiej zacząć od zrozumienia, na jakim etapie pracy działa każdy z tych języków. Najpierw opanuj w Power Query podstawowe operacje w języku M, takie jak filtrowanie, zmiana typów i łączenie danych. Następnie przejdź do DAX i naucz się tworzyć proste miary oraz analizować wyniki w kontekście raportu. Taka kolejność ułatwia zrozumienie całego przepływu danych.

icon

Formularz kontaktowyContact form

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