Import czy DirectQuery - krok Power Query nie jest obsługiwany w trybie DirectQuery
Udostępnij na:
Spis treści
Power Query w Power BI
Import czy DirectQuery - krok Power Query nie jest obsługiwany w trybie DirectQuery
W skrócie
Po dodaniu kroku w zapytaniu DirectQuery edytor Power Query ostrzega, że krok nie jest obsługiwany w trybie DirectQuery. W trybie importu ten sam krok działa bez zastrzeżeń.
W trybie DirectQuery dane nie trafiają do modelu, więc każdy krok musi przełożyć się na zapytanie do źródła. Nieobsługiwany krok to taki, którego Power Query nie zamieni na SQL, na przykład kolumna indeksu albo scalenie z plikiem.
Znajdź krok, który przerywa składanie, i zastąp go takim, który się składa. Logikę, której nie zapiszesz krokami, przenieś do widoku w bazie, a gdy krok jest niezbędny, przełącz tabelę na tryb importu.
Nieobsługiwany krok Power Query w trybie DirectQuery to częsta niespodzianka przy pracy z bazą SQL Server: w trybie importu krok działa, a w DirectQuery edytor go odrzuca. Wyjaśniamy, skąd bierze się ta różnica, które kroki najczęściej ją wywołują i jak wybrać między poprawką kroku, widokiem w bazie a trybem importu.
Jak to wygląda w praktyce
Łączysz się z SQL Server w trybie DirectQuery, wybranym w polu Tryb łączności danych okna łącznika, i dodajesz w edytorze krok, na przykład kolumnę indeksu. Edytor pokazuje ostrzeżenie „Ten krok powoduje utworzenie zapytania, które nie jest obsługiwane w trybie zapytania DirectQuery.” (ang. „This step results in a query that is not supported in DirectQuery mode.”). Ten sam krok na tej samej tabeli w trybie Importuj działa bez zastrzeżeń.
Drugi objaw pojawia się później, w raporcie: wizualizacja kończy się błędem, gdy zapytanie do źródła albo operacja pośrednia zwraca ponad milion wierszy. Microsoft opisuje to jako limit wyniku pośredniego w trybie DirectQuery.
Dlaczego tak się dzieje
W trybie importu Power BI wykonuje zapytania przy odświeżeniu i kopiuje wynik do modelu, a kroki, których baza nie wykona, Power Query liczy u siebie. W trybie DirectQuery dane nie trafiają do modelu: każda wizualizacja wysyła zapytanie do źródła w chwili, gdy ją oglądasz. Dlatego dokumentacja Microsoft wymaga, żeby przekształcenia dało się zamienić na jedno zapytanie natywne. Kroki, które się nie składają, niektóre funkcje niestandardowe i wieloetapowa logika proceduralna kończą się błędami, które trzeba uprościć albo obejść przejściem na import.
Składanie zapytań (ang. query folding) to właśnie zamiana kroków na SQL. Zwykle składają się filtry, wybór i usuwanie kolumn, grupowanie z sumą, sortowanie, scalanie tabel z tej samej bazy i proste kolumny niestandardowe. Zwykle przerywają je kolumna indeksu, scalanie z innym źródłem, na przykład z plikiem, funkcje niestandardowe wywoływane dla każdego wiersza, część operacji tekstowych, kolumny z przykładów, Table.Buffer i własna instrukcja SQL wpisana w oknie łącznika. Według dokumentacji w DirectQuery nie da się też składać wywołań procedur składowanych ani wyrażeń CTE.
Jak to rozwiązać krok po kroku
Znajdź krok, który przerywa składanie. Klikaj prawym przyciskiem kolejne kroki na liście Zastosowane kroki. Ostatni krok z aktywną pozycją Wyświetl zapytanie natywne wyznacza granicę, a krok tuż po nim jest tym, którego DirectQuery nie przyjmie.
Zmień kolejność albo zastąp krok. Sprawdź, czy filtry i usuwanie kolumn da się przenieść przed ten krok i czy scalenie z plikiem można zastąpić scaleniem z tabelą z tej samej bazy. Zamiast kolumny indeksu użyj klucza z tabeli, a zamiast kolumny z przykładów prostej kolumny niestandardowej, którą da się zapisać w SQL.
Przenieś logikę do widoku w bazie. Gdy przekształcenia nie zapiszesz krokami, które się składają, przygotuj w bazie widok (ang. view) z gotowym wynikiem albo poproś o to administratora bazy i wybierz go w Nawigatorze zamiast tabeli. Dla Power Query widok wygląda jak zwykła tabela, a cała logika działa po stronie serwera.
Nie wpisuj własnego SQL w oknie łącznika. Zapytanie wpisane w polu Instrukcja języka SQL w opcjach zaawansowanych łącznika Power Query traktuje jak gotową tabelę i kolejne kroki przestają się składać. Potrzebną logikę zapisz w widoku, a w Power Query zostaw kroki, które baza wykona sama.
Przełącz tabelę na import, gdy krok jest niezbędny. Jeśli dane nie muszą być aktualne przy każdym kliknięciu, tryb importu dopuszcza wszystkie kroki Power Query, a Microsoft zaleca go jako domyślny. Tabele dodane łącznikiem obsługującym DirectQuery mogą przełączać się między trybami DirectQuery, importu i podwójnym (ang. Dual), jeśli ich kroki nadal się składają. Całego modelu z importu na DirectQuery jednym przełącznikiem nie zmienisz.
Pilnuj liczby wierszy w wynikach. W DirectQuery zapytanie albo operacja pośrednia zwracająca ponad milion wierszy kończy się błędem. Filtruj dane jak najwcześniej i agreguj je w bazie, zamiast ściągać szczegóły do wizualizacji.
Okno łącznika SQL Server z wyborem trybu łączności Importuj albo DirectQuery i rozwiniętymi Opcjami zaawansowanymi, w tym polem na własną Instrukcję języka SQL.
Jak sprawdzić, że zadziałało
Po poprawce kliknij prawym przyciskiem ostatni krok zapytania i sprawdź, czy ostrzeżenie o trybie DirectQuery zniknęło. Aktywna pozycja Wyświetl zapytanie natywne pokaże SQL, który Power BI wyśle do bazy przy każdej interakcji z raportem. W raporcie zmierz czas odświeżania wizualizacji: Microsoft podaje jako cel typowe odświeżenie poniżej 5 sekund i ostrzega, że ponad 30 sekund pogarsza użyteczność raportu.
Żeby problem nie wracał, decyzję o trybie podejmuj przy pierwszym połączeniu ze źródłem, w polu Tryb łączności danych. W zapytaniach DirectQuery używaj tylko kroków, które się składają, i po każdym nowym kroku sprawdzaj Wyświetl zapytanie natywne, jak radzi dokumentacja Microsoft.
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.
Czym różni się tryb Importuj od DirectQuery w Power Query?
Importuj kopiuje dane do modelu przy odświeżeniu i dopuszcza wszystkie kroki Power Query. DirectQuery nie kopiuje danych, tylko przy każdej interakcji z raportem wysyła zapytanie do bazy, więc dopuszcza wyłącznie kroki, które da się przełożyć na zapytanie do źródła.
Które kroki Power Query najczęściej nie działają w DirectQuery?
Zwykle kolumna indeksu, scalanie z innym źródłem, na przykład z plikiem, funkcje niestandardowe wywoływane dla każdego wiersza, część operacji tekstowych, kolumny z przykładów, Table.Buffer i własna instrukcja SQL wpisana w oknie łącznika. To reguła ogólna, bo o składaniu decydują też łącznik i kolejność kroków.
Czy mogę zmienić tryb tabeli z DirectQuery na import po zbudowaniu raportu?
Tak, pojedyncze tabele dodane łącznikiem obsługującym DirectQuery mogą przełączać się między trybami DirectQuery, importu i podwójnym, jeśli ich kroki nadal się składają. W edytorze modeli w usłudze Power BI zamiany tabeli z DirectQuery na import nie da się jednak cofnąć.
Dlaczego wizualizacja w DirectQuery kończy się błędem przy dużych danych?
Zapytanie albo operacja pośrednia, która zwraca ponad milion wierszy, kończy się w DirectQuery błędem. Pojemności Premium pozwalają podnieść ten limit, ale pewniejszą drogą jest filtrowanie i agregowanie danych w bazie, zanim trafią do wizualizacji.
Komentarze (0)
Brak komentarzy...