Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
W skrócieQuery folding, czyli składanie zapytań, sprawia, że filtry i grupowanie wykonuje serwer bazy danych, a do Power BI trafia mały wynik. Sprawdzamy składanie poleceniem Wyświetl zapytanie natywne, uruchamiamy diagnostykę zapytań i krok po kroku konfigurujemy odświeżanie przyrostowe z parametrami RangeStart i RangeEnd.
Ta lekcja jest częścią bezpłatnego kursu Power Query - czternastu lekcji od pierwszego zapytania w Excelu do przepływu danych w Microsoft Fabric i pracy z Copilotem. To lekcja 11 z 14.
Spis lekcji bezpłatnego kursu Power QueryQuery folding, po polsku składanie zapytań, to zdolność Power Query do zamiany kroków w jedno zapytanie w języku źródła. Przy bazie SQL Server filtr, usunięcie kolumn i grupowanie nie są wtedy wykonywane na Twoim komputerze. Power Query składa je w jedno zapytanie SQL, wysyła do serwera i dostaje gotowy, mały wynik. Różnica w szybkości przy dużych tabelach bywa ogromna: zamiast ściągać miliony wierszy przez sieć, pobierasz kilkanaście.

Na tabeli FaktSprzedaz z SQL Server wykonaliśmy trzy zwykłe kroki: filtr liczb na kolumnie DataID (Większe niż lub równe... 20260101, czyli tylko 2026 rok), usunięcie kolumn PracownikID i FormaPlatnosci oraz Grupowanie według sklepu z sumą wartości netto.


Teraz kliknij prawym przyciskiem ostatni krok na liście Zastosowane kroki. Jeśli pozycja Wyświetl zapytanie natywne jest aktywna, wszystkie kroki do tego miejsca złożyły się w zapytanie do bazy.

Po kliknięciu zobaczysz SQL, który Power Query wygenerował z naszych kroków i wysłał do SQL Server:

where, usunięcie kolumn w listę kolumn w select, a grupowanie w sum i group by.select [rows].[SklepID] as [SklepID],
sum([rows].[WartoscNetto]) as [Suma WartoscNetto]
from
(
select [_].[SklepID],
[_].[WartoscNetto]
from [dbo].[FaktSprzedaz] as [_]
where [_].[DataID] >= 20260101
) as [rows]
group by [SklepID]
Serwer zwraca 15 wierszy, po jednym na sklep, zamiast 11 669 linii sprzedaży z 2026 roku. Teraz dodaj krok, którego SQL nie umie wyrazić wprost: na karcie Dodaj kolumnę rozwiń Kolumna indeksu i wybierz Od 1. Prawy przycisk na nowym kroku:

W tym przykładzie to nie problem, bo indeks dodajemy do 15 wierszy. Problem zaczyna się, gdy krok łamiący składanie stoi na początku zapytania, przed filtrem: wtedy Power Query musi pobrać całą tabelę, żeby ją przefiltrować lokalnie.
W Power BI Desktop i w Excelu składanie sprawdzasz poleceniem Wyświetl zapytanie natywne. W Power Query Online (Dataflow Gen2 w Fabric, przepływy danych w usłudze Power BI) przy każdym kroku stoi ikona wskaźnika, a podpowiedź mówi, czy krok zostanie oceniony w źródle danych, czy poza nim. Pokazujemy to w lekcji o Fabric, gdzie przy źródle plikowym każdy krok ma komunikat Ten krok zostanie oceniony poza źródłem danych.
| Zwykle składa się do źródła | Zwykle przerywa składanie |
|---|---|
| filtrowanie wierszy, w tym filtry dat | kolumna indeksu |
| wybieranie i usuwanie kolumn, zmiana nazw | scalanie zapytań z dwóch różnych źródeł (baza i plik) |
| grupowanie z sumą, średnią, liczbą wierszy | funkcje niestandardowe wywoływane dla każdego wiersza |
| sortowanie, zachowanie pierwszych N wierszy | część operacji tekstowych i kolumn z przykładów |
| scalanie i dołączanie tabel z tej samej bazy | Table.Buffer, czyli wczytanie tabeli do pamięci |
| proste kolumny niestandardowe (dodawanie, mnożenie) | własna instrukcja SQL w oknie łącznika (bez EnableFolding) |
Tabela to reguła ogólna, a nie gwarancja. To, co się składa, zależy od łącznika (SQL Server, Oracle, PostgreSQL mają różne możliwości) i od kolejności kroków. Jedynym pewnym testem jest Wyświetl zapytanie natywne albo wskaźnik przy kroku. Pliki CSV, Excel i foldery nie składają się wcale, bo nie mają silnika, który mógłby wykonać krok.
Gdy zapytanie jest wolne i nie wiesz dlaczego, w Power BI Desktop pomoże karta Narzędzia w edytorze Power Query. Diagnozuj krok mierzy wykonanie zaznaczonego kroku, a Rozpocznij diagnostykę i Zatrzymaj diagnostykę nagrywają wszystko, co dzieje się w edytorze między tymi kliknięciami, na przykład odświeżenie podglądu.

Wynik diagnostyki to nowe zapytania w grupie Diagnostyka, nazwane według schematu zapytanie_krok_rodzaj_data_godzina. Zapytanie Detailed zawiera każde zdarzenie z czasem rozpoczęcia i zakończenia, Aggregated podsumowanie, a Counters liczniki zużycia procesora i pamięci. W zapytaniach do bazy kolumna Data Source Query pokazuje dokładny tekst zapytania wysłanego do źródła, co pozwala sprawdzić składanie i znaleźć krok, który zajmuje najwięcej czasu.

Przy tabelach z milionami wierszy pełne odświeżanie pobiera za każdym razem całą historię, choć zmieniają się tylko ostatnie dni. Odświeżanie przyrostowe (ang. incremental refresh) dzieli tabelę na partycje według daty i przy kolejnych odświeżeniach pobiera tylko najnowszy okres, a starsze partycje zostawia bez zmian. Zasady ustawiasz w Power BI Desktop, a działają po opublikowaniu raportu w usłudze Power BI. Przygotowanie ma trzy kroki.
1. Parametry RangeStart i RangeEnd. W edytorze Power Query kliknij Zarządzaj parametrami, a potem Nowy, i utwórz dwa parametry o nazwach dokładnie RangeStart i RangeEnd (wielkość liter ma znaczenie). Typ obu to Data/godzina, a wartość bieżąca może być dowolna, na przykład 01.01.2026 i 01.07.2026. W usłudze Power BI te wartości są podmieniane na granice kolejnych partycji, a w Desktop ograniczają tylko ilość danych pobieranych do pliku.

2. Filtr na kolumnie daty. Kolumna, według której Power BI podzieli dane, musi mieć ten sam typ co parametry, czyli Data/godzina. W zapytaniu Sprzedaz_wg_sklepu_i_miesiaca kolumna Początek miesiąca miała w Excelu typ Data, więc najpierw zmieniliśmy go ikoną typu w nagłówku kolumny. Język M nie porównuje wartości typu data z wartościami typu data i godzina, więc filtr na niezmienionej kolumnie zakończyłby się błędem. Potem otwórz menu filtra kolumny, wybierz Filtry dat/godzin i na przykład Po.... W oknie Filtrowanie wierszy ustaw dwa warunki połączone spójnikiem Oraz: jest po lub jest równe RangeStart i jest przed RangeEnd. Żeby wybrać parametr zamiast wpisanej daty, przełącz przycisk między listą warunku a listą wartości.

Power Query zapisze ten filtr jako jeden krok:
= Table.SelectRows(#"Zmieniono typ", each [Początek miesiąca] >= RangeStart and [Początek miesiąca] < RangeEnd)

3. Zasady odświeżania. Zasad nie ustawia się w edytorze Power Query. Zamknij edytor, w widoku raportu kliknij prawym przyciskiem tabelę w panelu Dane i wybierz Odświeżanie przyrostowe.

Jeśli parametrów nie ma, okno nie pozwoli włączyć odświeżania i wyświetli ostrzeżenie Przed skonfigurowaniem odświeżania przyrostowego dla tej tabeli należy skonfigurować parametry. U nas parametry i filtr już są, więc przełącznik jest dostępny, ale Power BI pokazuje inne ostrzeżenie, ważne dla każdego, kto chce użyć odświeżania przyrostowego na plikach:

Ostrzeżenie wynika wprost z pierwszej części tej lekcji: nasze zapytanie czyta pliki CSV i scala je z budżetem, więc filtr RangeStart i RangeEnd nie złoży się do źródła. Usługa Power BI i tak musiałaby przy każdej partycji przeczytać wszystkie pliki, więc odświeżanie przyrostowe nie przyniosłoby oszczędności. Pełną korzyść daje dopiero przy źródle, które wykona filtr samo, na przykład przy tabeli faktów w SQL Server.
Po włączeniu przełącznika ustawiasz dwa zakresy. Rozpoczynanie archiwizowania danych mówi, jak długą historię przechowuje model, a Uruchamianie odświeżania przyrostowego danych, jak długi okres jest pobierany przy każdym odświeżeniu. Pod polami okno od razu pokazuje, których dat to dotyczy, a sekcja Przejrzyj i zastosuj rysuje to na osi czasu.

Dwie opcje w sekcji Wybierz ustawienia opcjonalne warto znać. Odświeżaj tylko pełne okresy pomija bieżący, niepełny miesiąc albo dzień. Wykryj zmiany danych pozwala wskazać kolumnę z datą ostatniej modyfikacji wiersza i odświeżać tylko te partycje, w których coś się zmieniło. Szary blok na górze okna przypomina o jeszcze jednej konsekwencji: po opublikowaniu modelu z odświeżaniem przyrostowym nie pobierzesz go już z usługi z powrotem jako pliku .pbix, więc oryginał trzymaj u siebie.
Poprzednia lekcja
Lekcja 10: Power Query w Power BI DesktopNastępna lekcja
Lekcja 12: Dataflow Gen2 w Microsoft FabricChcesz przećwiczyć łączenie Power BI z bazą SQL Server, tryby Import i DirectQuery oraz optymalizację zapytań na ćwiczeniach z trenerem? Szkolenie Analiza Power BI - DAX + M --> To szkolenie ma terminy gwarantowane.
Szkolenie Power BI - Desktop, DAX i Online --> Pięć dni od pierwszego raportu do publikacji w usłudze Power BI: Power Query, model danych z wielu tabel, DAX, wizualizacje i Copilot. To szkolenie ma terminy gwarantowane.
To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.
★★★★★Średnia ocena naszych szkoleń w Google: 5/5
Komentarze (0)
Brak komentarzy...