Jak napisać zapytanie w Power BI Query Editor?
Dowiedz się, jak tworzyć i edytować zapytania w Power BI Query Editor z użyciem języka M. Praktyczne porady, przykłady i dobre praktyki.
Artykuł przeznaczony dla użytkowników Power BI, analityków danych i osób uczących się Power Query oraz języka M na poziomie podstawowym i średnio zaawansowanym.
Z tego artykułu dowiesz się
- Czym jest Power BI Query Editor i jaką rolę pełni w przygotowaniu danych do analizy?
- Jak wygląda struktura zapytania w języku M (let-in) i jak działają kroki transformacji?
- Jakie podstawowe transformacje danych oraz dobre praktyki pomagają pisać i optymalizować zapytania M?
Wprowadzenie do Power BI Query Editor i języka M
Power BI to potężne narzędzie analityczne, które pozwala użytkownikom na przekształcanie, modelowanie i wizualizację danych z różnych źródeł. Jednym z kluczowych elementów tego procesu jest Power BI Query Editor — środowisko, w którym użytkownik może przygotować dane do dalszej analizy. To tutaj odbywa się czyszczenie, filtrowanie, łączenie i transformacja danych, zanim trafią one do modelu raportowego.
Query Editor działa w oparciu o język M (znany również jako Power Query Formula Language) — funkcjonalny, deklaratywny język programowania, zaprojektowany specjalnie do przekształcania danych. Choć na pierwszy rzut oka może wydawać się skomplikowany, M oferuje ogromną elastyczność i precyzję przy definiowaniu operacji na danych.
Interfejs Power BI Query Editor umożliwia wykonywanie większości operacji za pomocą kliknięć myszką, ale każde działanie jest zapisywane w postaci zapytania w języku M. Dzięki temu bardziej zaawansowani użytkownicy mogą edytować i rozszerzać te zapytania ręcznie, co otwiera drogę do bardziej złożonych transformacji.
Niektóre podstawowe cechy Power BI Query Editor i języka M to:
- Transformacje bezpośrednio na źródle danych – dzięki czemu model danych jest bardziej wydajny.
- Rejestrowanie kroków – każdy krok transformacji jest zapisywany i może być dowolnie modyfikowany lub usunięty.
- Możliwość łączenia wielu zapytań – pozwala integrować dane z różnych źródeł w ramach jednego modelu.
Dzięki połączeniu wizualnego interfejsu z możliwościami języka M, Query Editor stanowi elastyczne narzędzie zarówno dla początkujących, jak i dla zaawansowanych analityków danych w Power BI.
Struktura zapytania w języku M
Język M, używany w Power BI Query Editor, to funkcjonalny język programowania zaprojektowany do przekształcania i ładowania danych. Każde zapytanie w języku M ma swoją strukturę, która opiera się na logice kroków — każda transformacja danych jest realizowana jako osobny krok, który można odczytywać i modyfikować.
Podstawową strukturą zapytania jest blok let-in, który definiuje kolejne operacje na danych:
- let – sekcja, w której deklarowane są wszystkie kroki przekształceń danych (zmienne),
- in – część określająca wynik końcowy, który zostanie zwrócony przez zapytanie (zwykle ostatni krok).
Każdy krok może być oparty na poprzednim, co pozwala tworzyć łańcuchy transformacji. Nazwy kroków pełnią rolę etykiet, dzięki którym możliwe jest odwoływanie się do wcześniejszych operacji, co znacząco zwiększa czytelność i elastyczność kodu.
W języku M duży nacisk kładzie się na niezmienność danych – każda operacja tworzy nową wartość, nie modyfikując danych źródłowych. Dzięki temu zapytania są bardziej przewidywalne i odporne na błędy.
Przykładowe zapytanie może zawierać operacje takie jak załadowanie danych z pliku, przefiltrowanie wierszy i zmiana nazw kolumn. Choć te działania wykonujemy często za pomocą interfejsu graficznego Power BI, każde z nich przekłada się na konkretne instrukcje w języku M, które możemy ręcznie przeglądać i edytować w Edytorze zaawansowanym.
Język M wyróżnia się także dużą liczbą wbudowanych funkcji oraz możliwością tworzenia własnych procedur, co czyni go niezwykle elastycznym narzędziem do pracy z danymi.
Podstawowe operacje i transformacje danych
Power BI Query Editor, pracujący w oparciu o język M, umożliwia szeroki wachlarz operacji i transformacji danych, które są niezbędne do przygotowania danych przed ich wizualizacją. W tej sekcji przedstawiamy najczęściej wykorzystywane typy operacji, które użytkownicy wykonują na danych, wraz z ich podstawowymi zastosowaniami.
Najczęstsze operacje transformacji danych
- Filtrowanie wierszy – umożliwia wybranie tylko tych danych, które spełniają określone warunki, np. daty po 2020 roku.
- Usuwanie i dodawanie kolumn – pozwala oczyścić zbiór danych z niepotrzebnych informacji oraz uzupełnić go o nowe dane wyliczane lub transformowane z innych kolumn.
- Zmiana typów danych – ważna operacja zapewniająca poprawne interpretowanie wartości (np. liczby, daty, teksty).
- Grupowanie danych – przydatne przy agregacjach, takich jak sumy, średnie czy liczby unikalnych rekordów.
- Sortowanie danych – ułatwia analizę i dalsze przetwarzanie danych.
- Scalanie (merge) i dołączanie (append) zapytań – kluczowe przy pracy z wieloma źródłami danych.
Typowe transformacje – porównanie
| Typ operacji | Opis | Przykładowe użycie |
|---|---|---|
| Filter Rows | Usuwa wiersze niespełniające warunku | Filtruj tylko sprzedaż większą niż 1000 |
| Change Type | Zmienia typ danych w kolumnie | Data tekstowa → data rzeczywista |
| Group By | Agreguje dane po kolumnie kluczowej | Sumuj sprzedaż wg województwa |
| Merge Queries | Łączy dane z dwóch tabel na wspólnym kluczu | Połącz faktury z danymi klientów |
| Append Queries | Łączy dane z dwóch tabel w jedną listę | Dodaj dane sprzedaży z dwóch lat |
Przykład kodu – zmiana typu danych
let
Source = Excel.Workbook(File.Contents("C:\\Dane\\Sprzedaz.xlsx"), null, true),
Dane = Source{[Item="Arkusz1"]}[Data],
ZmienTyp = Table.TransformColumnTypes(Dane, {{"DataSprzedazy", type date}})
in
ZmienTyp
Podstawowe operacje w Query Editorze są dostępne zarówno z poziomu interfejsu graficznego, jak i poprzez bezpośrednią edycję kodu M. Dzięki temu użytkownicy mogą z łatwością dostosowywać proces transformacji do własnych potrzeb, niezależnie od poziomu zaawansowania. Jeśli chcesz jeszcze lepiej opanować pracę z językiem M i usprawnić swoją analizę danych, sprawdź nasz Kurs Microsoft Power Query - analiza danych przy użyciu języka M i optymalizacja procesu analizy danych.
Pisanie własnych zapytań M od podstaw
Tworzenie zapytań w języku M od podstaw daje użytkownikowi pełną kontrolę nad procesem transformacji danych w Power BI. Choć edytor Power Query oferuje interfejs graficzny umożliwiający generowanie zapytań automatycznie, bezpośrednie pisanie kodu M pozwala na bardziej precyzyjne, elastyczne i często wydajniejsze operacje.
Własne zapytanie M zaczyna się od zrozumienia podstawowych zasad składni oraz struktury języka. Każde zapytanie M składa się z kroków przypisanych do nazwanych zmiennych, a ostatnia z nich określa wynik działania zapytania. Przykład najprostszej struktury może wyglądać tak:
let
Źródło = Excel.Workbook(File.Contents("C:\\Dane\\plik.xlsx"), null, true)
in
Źródło
Podstawowe zastosowania własnych zapytań obejmują:
- Łączenie się z mniej standardowymi źródłami danych, których nie obsługuje interfejs graficzny
- Tworzenie dynamicznych transformacji, opartych na warunkach lub parametrach
- Reużywanie kodu i budowanie modułowych funkcji
Porównanie dwóch podejść może wyglądać następująco:
| Interfejs graficzny | Własny kod M |
|---|---|
| Łatwy w obsłudze, intuicyjny | Wymaga znajomości składni |
| Ograniczony do dostępnych operacji | Elastyczny i rozbudowany |
| Automatycznie generuje kod M | Możliwość pisania zoptymalizowanego kodu |
Pisząc kod M od podstaw, warto zacząć od prostych kroków takich jak filtrowanie, wybór kolumn, czy zmiana nazw, a następnie stopniowo przechodzić do bardziej zaawansowanych funkcji, takich jak operacje warunkowe czy definiowanie własnych funkcji.
Oto przykładowe zapytanie M tworzące listę liczb od 1 do 10:
let
Lista = {1..10}
in
Lista
Tworzenie własnych zapytań otwiera drogę do większej automatyzacji, kontroli i wydajności w pracy z danymi. Pozwala również lepiej zrozumieć, jak działają transformacje ukryte za interfejsem użytkownika Power BI.
Modyfikowanie istniejących zapytań
Power BI Query Editor umożliwia nie tylko tworzenie nowych zapytań, ale również wygodne modyfikowanie już istniejących. Ta funkcjonalność jest kluczowa zarówno w przypadku drobnych poprawek, jak i gruntownych zmian w logice przetwarzania danych.
Każde zapytanie w Power BI oparte jest na języku M, który jest językiem funkcyjnym wykorzystywanym do definiowania transformacji danych. Modyfikowanie zapytań może odbywać się na dwa sposoby:
- Poprzez interfejs graficzny – zmiany wprowadzane za pomocą przycisków i opcji w oknie edytora. Power BI automatycznie generuje odpowiedni kod M w tle.
- Bezpośrednio w kodzie M – ręczna edycja zapytania w oknie zaawansowanego edytora umożliwia większą elastyczność i precyzję.
Poniższa tabela przedstawia porównanie obu podejść:
| Metoda | Zalety | Wady |
|---|---|---|
| Interfejs graficzny | Łatwość użycia, brak potrzeby znajomości języka M | Ograniczona elastyczność, mniej kontroli nad strukturą kodu |
| Edytor zaawansowany (kod M) | Pełna kontrola, możliwość tworzenia niestandardowej logiki | Wymaga znajomości składni języka M |
Dla przykładu, jeśli chcesz zmienić nazwę kolumny w istniejącym zapytaniu, możesz to zrobić klikając odpowiednią opcję w interfejsie lub edytując kod, jak poniżej:
RenamedColumns = Table.RenameColumns(PreviousStep, {{"OldName", "NewName"}})
Modyfikowanie zapytań pozwala również na reorganizację kroków transformacji, dodawanie warunków filtrowania, scalanie z innymi tabelami czy pisanie funkcji. W praktyce często używa się kombinacji obu metod – interfejsu graficznego do szybkich operacji i kodu M do dostosowań niestandardowych. Jeśli chcesz pogłębić znajomość języka M i nauczyć się jego praktycznego zastosowania, warto zapoznać się z kursem „Język DAX i język M – wykorzystanie funkcji języka DAX i analiza danych przy użyciu języka M”.
Przykłady praktycznych transformacji danych
W Power BI Query Editor codzienna praca z danymi wymaga stosowania szeregu transformacji, które pozwalają przygotować dane do dalszej analizy. Poniżej przedstawiamy kilka najczęściej wykorzystywanych przykładów transformacji, które można realizować przy pomocy języka M. Każda z tych operacji ma konkretne zastosowanie i przynosi wymierne korzyści w procesie modelowania danych.
- Filtrowanie wierszy – umożliwia ograniczenie zbioru danych do interesujących nas rekordów, np. tylko dla konkretnego roku lub wartości wyższych niż próg.
- Zmiana typu danych – pozwala odpowiednio sklasyfikować kolumny (np. tekst, liczba, data), co jest kluczowe dla poprawnego działania obliczeń i wizualizacji.
- Scalanie tabel (Merge) – wykorzystywane przy łączeniu danych z różnych źródeł na podstawie wspólnego klucza, np. ID klienta.
- Dodawanie kolumn niestandardowych – umożliwia tworzenie nowych kolumn na podstawie wyrażeń logicznych lub matematycznych, np. „Zysk = Przychód – Koszty”.
- Grupowanie danych – przydatne przy agregowaniu informacji, np. suma sprzedaży według regionów.
- Transponowanie danych – zmienia układ tabeli, zamieniając kolumny w wiersze i odwrotnie, co bywa przydatne przy analizie danych ankietowych.
Przykład kodu w języku M ilustrujący filtrowanie tabeli według roku:
let
Źródło = Excel.Workbook(File.Contents("dane.xlsx"), null, true),
Tabela1_Sheet = Źródło{[Item="Tabela1",Kind="Sheet"]}[Data],
Przefiltrowane = Table.SelectRows(Tabela1_Sheet, each [Rok] = 2023)
in
Przefiltrowane
Poniższa tabela ukazuje porównanie wybranych transformacji wraz z ich typowymi zastosowaniami:
| Transformacja | Zastosowanie |
|---|---|
| Filtrowanie | Ograniczenie danych do wybranych wierszy |
| Scalanie tabel | Łączenie danych z wielu źródeł |
| Grupowanie | Agregacja danych (suma, średnia itp.) |
| Dodanie kolumny niestandardowej | Tworzenie nowych metryk na podstawie danych źródłowych |
| Zmiana typu danych | Poprawna interpretacja danych przez Power BI |
Dzięki tym transformacjom możemy w sposób elastyczny i efektywny przekształcać nawet bardzo złożone źródła danych, tworząc fundament pod dalszą analizę i wizualizacje w Power BI.
Najczęstsze błędy i dobre praktyki
Praca z Power BI Query Editor i językiem M może wydawać się intuicyjna, jednak nawet doświadczeni użytkownicy popełniają błędy, które mogą prowadzić do nieefektywnego działania raportów lub nieprawidłowego przetwarzania danych. Poniżej przedstawiamy najczęstsze problemy oraz dobre praktyki, które pomogą ich uniknąć.
- Brak czytelnych nazw kroków: Domyślne nazwy typu Changed Type czy Renamed Columns nie ułatwiają zrozumienia logiki zapytania. Zmieniaj nazwy kroków na bardziej opisowe, aby łatwiej było śledzić transformacje danych.
- Niepotrzebne kroki transformacji: Każdy krok w edytorze jest przetwarzany przy odświeżaniu danych. Usuwaj zbędne operacje, które nie wnoszą wartości do końcowego zestawu danych.
- Oparcie się wyłącznie na interfejsie graficznym: Choć GUI ułatwia pracę, nie pozwala na pełną kontrolę nad logiką zapytań. Warto zaglądać do kodu M, by optymalizować przekształcenia.
- Brak komentarzy w kodzie M: Zapytania bez komentarzy są trudniejsze do zrozumienia i konserwacji. Warto dodawać krótkie adnotacje w kodzie, np.
// Usunięcie duplikatów według kolumny ID. - Nieprzemyślane filtrowanie danych: Wczesne filtrowanie może ograniczyć ilość danych, ale zbyt agresywne ograniczenia mogą spowodować utratę istotnych informacji.
- Brak spójności w typach danych: Niezmienione lub nieodpowiednio ustawione typy danych mogą prowadzić do błędów podczas analiz i modelowania. Zawsze sprawdzaj i jawnie określaj typ danych w kluczowych kolumnach.
Dobre praktyki obejmują również organizację zapytań w sposób modularny (np. przez referencje zamiast duplikowania kroków), a także testowanie działania zapytania na mniejszych próbkach danych podczas tworzenia, co przyspiesza pracę i wykrywa problemy wcześniej.
Podsumowanie i dalsze kroki nauki języka M
Power BI Query Editor to potężne narzędzie, które umożliwia przygotowanie i transformację danych jeszcze przed ich załadowaniem do modelu. Kluczowym elementem działania edytora zapytań jest język M – funkcjonalny język programowania zaprojektowany specjalnie z myślą o pracy z danymi.
Chociaż większość operacji w Power BI można wykonać za pomocą interfejsu graficznego, język M daje użytkownikowi większą elastyczność i kontrolę nad przekształceniami. Pozwala m.in. na tworzenie własnych reguł filtrowania, łączenia źródeł danych, czy pisanie niestandardowych funkcji. Język ten różni się od DAX-a – drugiego języka używanego w Power BI – ponieważ działa na etapie pobierania i przekształcania danych, a nie ich analizy w modelu danych.
Zrozumienie podstaw języka M otwiera drogę do bardziej efektywnego przygotowywania danych i automatyzowania procesów ETL w Power BI. Dalsza nauka obejmuje znajomość składni, struktur danych, funkcji wbudowanych oraz sposobów na edytowanie i tworzenie zapytań od podstaw.
W kolejnych krokach warto eksperymentować z prostymi transformacjami, analizować wygenerowany kod M oraz stopniowo budować świadomość, jak działa cały proces przekształceń w Power Query.