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.
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.
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.
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.