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.
10 lipca 2025
blog

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.

💡 Pro tip: Buduj zapytanie od prostego szkicu let ... in, testując każdy krok i nadając mu zrozumiałą nazwę; parametryzuj ścieżki i warunki, aby łatwo ponownie używać kodu. Do odkrywania funkcji użyj #shared oraz IntelliSense, a Table.Buffer stosuj oszczędnie i tylko tam, gdzie świadomie chcesz odłączyć źródło.

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.

💡 Pro tip: Utrzymuj query folding, wykonując filtrowanie i wybór kolumn jak najwcześniej, a kroki, które je zrywają (np. niestandardowe kolumny, Table.Buffer), odkładaj na koniec. Zmieniaj domyślne nazwy kroków, dodawaj krótkie komentarze i jawnie ustawiaj typy; w trakcie prac testuj na próbce danych (np. Table.FirstN).

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.

Majczęściej zadawane pytania i odpowiedzi odnośnie Jak napisać zapytanie w Power BI Query Editor?

Jak wygląda podstawowa struktura zapytania w Power BI Query Editor?

Podstawowa struktura zapytania w Power BI Query Editor opiera się na bloku let ... in. W części let definiujesz kolejne kroki transformacji danych, a w części in wskazujesz krok, który ma zostać zwrócony jako wynik końcowy. Taki układ porządkuje logikę zapytania i ułatwia późniejszą edycję oraz rozbudowę kodu M.

Czy trzeba znać język M, żeby napisać zapytanie w Power BI?

Nie, znajomość języka M nie jest konieczna, aby zacząć pracę z zapytaniami w Power BI. Wiele operacji wykonasz przez interfejs graficzny, a Power BI automatycznie zapisze je jako kod M. Znajomość składni staje się jednak bardzo przydatna, gdy chcesz ręcznie poprawiać kroki, tworzyć bardziej elastyczne transformacje lub lepiej kontrolować sposób przetwarzania danych.

Jak zacząć pisać własne zapytanie M od podstaw?

Najlepiej zacząć od prostego szkicu z jednym źródłem danych i jednym krokiem wynikowym. Na początku warto budować krótkie, czytelne zapytania i testować każdy etap osobno. Dobry start obejmuje:

  • zdefiniowanie źródła danych,
  • nadanie jasnych nazw krokom,
  • dodanie jednej prostej transformacji, na przykład filtrowania lub zmiany typu.
Jakie operacje najczęściej wykonuje się w Power Query Editor przy pisaniu zapytań?

Najczęściej wykonuje się filtrowanie, zmianę typów danych, usuwanie lub dodawanie kolumn oraz łączenie tabel. Są to podstawowe transformacje przygotowujące dane do modelu raportowego. W praktyce często dochodzi też grupowanie danych, sortowanie oraz scalanie albo dołączanie zapytań, gdy dane pochodzą z wielu źródeł i trzeba je ujednolicić przed analizą.

Kiedy lepiej edytować zapytanie w kodzie M zamiast przez interfejs graficzny?

Kod M warto edytować wtedy, gdy potrzebujesz większej kontroli nad logiką transformacji. Interfejs graficzny sprawdza się przy prostych operacjach, ale ręczna edycja jest wygodniejsza przy bardziej niestandardowych scenariuszach. Dotyczy to zwłaszcza sytuacji, gdy chcesz tworzyć warunki, parametry, własne funkcje albo uporządkować i zoptymalizować wygenerowane wcześniej kroki.

Jakie są najczęstsze błędy podczas tworzenia zapytań w Power BI Query Editor?

Najczęstsze błędy to nieczytelne nazwy kroków, zbędne transformacje i brak jawnego ustawiania typów danych. Problemy pojawiają się też wtedy, gdy użytkownik polega wyłącznie na interfejsie i nie sprawdza kodu M. Często spotykane są również:

  • brak komentarzy w bardziej złożonych zapytaniach,
  • nieprzemyślane filtrowanie danych,
  • duplikowanie logiki zamiast korzystania z referencji.
Jak poprawić czytelność i utrzymanie zapytania w języku M?

Czytelność zapytania poprawisz przez logiczne nazwy kroków, prostą strukturę i krótkie komentarze. Dzięki temu łatwiej zrozumieć, co robi każde przekształcenie i szybciej znaleźć miejsce wymagające zmiany. Pomaga także budowanie zapytania etapami, unikanie niepotrzebnych operacji oraz rozdzielanie bardziej złożonej logiki na mniejsze, łatwiejsze do utrzymania fragmenty.

Dlaczego w Power Query warto jak najwcześniej filtrować dane i wybierać potrzebne kolumny?

Wczesne filtrowanie danych i wybór kolumn pomagają ograniczyć ilość przetwarzanych informacji. Dzięki temu zapytanie jest zwykle prostsze i może działać sprawniej podczas odświeżania. To podejście ułatwia też zachowanie porządku w transformacjach, ponieważ od początku pracujesz tylko na tych danych, które są rzeczywiście potrzebne do dalszego modelowania i raportowania.

icon

Formularz kontaktowyContact form

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