Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Plan zapytania dla dodatku Power Query (wersja zapoznawcza)

Plan zapytania dla dodatku Power Query to funkcja, która zapewnia lepszy widok oceny zapytania. Warto pomóc w ustaleniu, dlaczego określone zapytanie może nie składać się w określonym kroku.

W praktycznym przykładzie w tym artykule przedstawiono główny przypadek użycia i potencjalne korzyści wynikające z używania funkcji planu zapytania w celu przejrzenia kroków zapytania. Przykłady użyte w tym artykule zostały utworzone przy użyciu przykładowej bazy danych AdventureWorksLT dla programu Azure SQL Server, którą można pobrać z przykładowych baz danych AdventureWorks.

Uwaga

Funkcja planu zapytania dla dodatku Power Query jest dostępna tylko w usłudze Power Query Online.

Sugerowany proces korzystania z funkcji planu zapytania w dodatku Power Query przez przejrzenie wskaźników składania zapytań, a następnie przejrzenie planu zapytania dla wybranego kroku i wdrożenie wszelkich zmian pochodzących z przeglądania planu zapytania.

Ten artykuł został podzielony w serii zalecanych kroków w celu zinterpretowania planu zapytania. Te kroki są następujące:

  1. Przejrzyj wskaźniki składania zapytań.
  2. Wybierz krok zapytania, aby przejrzeć jego plan zapytania.
  3. Zaimplementuj zmiany w zapytaniu.

Wykonaj poniższe kroki, aby utworzyć zapytanie we własnym środowisku usługi Power Query Online.

  1. W dodatku Power Query — wybierz źródło danych, wybierz pozycję Puste zapytanie.

  2. Zastąp skrypt pustego zapytania następującym zapytaniem.

    let
      Source = Sql.Database("servername", "database"),
      Navigation = Source{[Schema = "Sales", Item = "SalesOrderHeader"]}[Data],
      #"Removed other columns" = Table.SelectColumns(Navigation, {"SalesOrderID", "OrderDate", "SalesOrderNumber", "PurchaseOrderNumber", "AccountNumber", "CustomerID", "TotalDue"}),
      #"Filtered rows" = Table.SelectRows(#"Removed other columns", each [TotalDue] > 1000),
      #"Kept bottom rows" = Table.LastN(#"Filtered rows", 5)
    in
      #"Kept bottom rows"
    
  3. Zmień servername i database przy użyciu poprawnych nazw dla własnego środowiska.

  4. (Opcjonalnie) Jeśli próbujesz nawiązać połączenie z serwerem i bazą danych dla środowiska lokalnego, pamiętaj o skonfigurowaniu bramy dla tego środowiska.

  5. Wybierz Dalej.

  6. W Edytor Power Query wybierz pozycję Konfiguruj połączenie i podaj poświadczenia do źródła danych.

Uwaga

Aby uzyskać więcej informacji na temat nawiązywania połączenia z programem SQL Server, przejdź do bazy danych programu SQL Server.

Po wykonaniu tych kroków zapytanie będzie wyglądać jak na poniższej ilustracji.

Przykładowe zapytanie z włączonymi wskaźnikami składania zapytań. To zapytanie łączy się z tabelą SalesOrderHeader i wybiera kilka kolumn z ostatnich pięciu zamówień z wartością TotalDue powyżej 1000.

Uwaga

W tym artykule użyto uproszczonego przykładu do zaprezentowania tej funkcji, ale pojęcia opisane w tym artykule dotyczą wszystkich zapytań. Zalecamy, aby przed przeczytaniem planu zapytania dobrze się zapoznać z składaniem zapytań. Aby dowiedzieć się więcej na temat składania zapytań, przejdź do artykułu Podstawy składania zapytań.

1. Przejrzyj wskaźniki składania zapytań

Uwaga

Przed przeczytaniem tej sekcji zalecamy zapoznanie się z artykułem dotyczącym wskaźników składania zapytań.

Pierwszym krokiem w tym procesie jest przejrzenie zapytania i zwrócenie uwagi na wskaźniki składania zapytań. Celem jest przejrzenie kroków oznaczonych jako nieskładane. Następnie możesz sprawdzić, czy wprowadzanie zmian w ogólnym zapytaniu może spowodować całkowite składanie tych przekształceń.

Wskaźniki składania zapytań dla przykładowego zapytania w okienku Zastosowane kroki.

W tym przykładzie jedynym krokiem, którego nie można składać, jest Zachowano dolne wiersze, co jest łatwe do zidentyfikowania za pomocą nieskładanego wskaźnika kroku. Ten krok jest również ostatnim krokiem zapytania.

Teraz celem jest przejrzenie tego kroku i zrozumienie, co jest składane z powrotem do źródła danych i czego nie można złożyć.

2. Wybierz krok zapytania, aby przejrzeć plan zapytania

Krok Zachowano dolne wiersze został zidentyfikowany jako krok zainteresowania, ponieważ nie jest on składany z powrotem do źródła danych. Kliknij prawym przyciskiem myszy krok i wybierz opcję Wyświetl plan zapytania. Ta akcja powoduje wyświetlenie nowego okna dialogowego zawierającego diagram planu zapytania wybranego kroku.

Okno dialogowe planu zapytania przedstawiające widok diagramu dla planu zapytania z węzłami połączonymi wierszami. Dodatek Power Query próbuje zoptymalizować zapytanie, korzystając z leniwej oceny i składania zapytań, jak wspomniano w temacie Podstawy składania zapytań. Ten plan zapytania reprezentuje zoptymalizowane tłumaczenie zapytania M na zapytanie natywne wysyłane do źródła danych. Obejmuje również wszelkie przekształcenia wykonywane przez aparat Power Query. Kolejność, w jakiej węzły są wyświetlane, jest zgodna z kolejnością zapytania rozpoczynającą się od ostatniego kroku lub danych wyjściowych zapytania, które jest reprezentowane po lewej stronie diagramu, a w tym przypadku jest to węzeł Table.LastN , który reprezentuje krok Przechowywane dolne wiersze .

W dolnej części okna dialogowego znajduje się pasek z ikonami, które ułatwiają powiększanie lub wyłączanie widoku planu zapytania oraz inne przyciski ułatwiające zarządzanie widokiem. Na poprzedniej ilustracji opcja Dopasuj do wyświetlenia z tego paska została użyta do lepszego doceninia węzłów.

Okno dialogowe planu zapytania z węzłami powiększonymi, aby uzyskać lepszy widok.

Uwaga

Plan zapytania reprezentuje zoptymalizowany plan. Gdy aparat ocenia zapytanie, próbuje złożyć wszystkie operatory w źródle danych. W niektórych przypadkach może nawet wykonać pewne wewnętrzne zmiany kolejności kroków w celu zmaksymalizowania składania. Mając to na uwadze, węzły/operatory pozostawione w tym zoptymalizowanym planie zapytania zwykle zawierają zapytanie "złożone" źródła danych i wszystkie operatory, których nie można składać i są oceniane lokalnie.

Identyfikowanie złożonych węzłów z innych węzłów

Węzły na tym diagramie można zidentyfikować jako dwie grupy:

  • Złożone węzły: ten węzeł może być Value.NativeQuery węzłem lub węzłami "źródła danych", takimi jak Sql.Database. Można je również zidentyfikować za pomocą etykiety zdalnej pod nazwą funkcji.
  • Nieskładane węzły: inne operatory tabeli, takie jak Table.SelectRows, Table.SelectColumnsi inne funkcje, których nie można składać. Można je również zidentyfikować za pomocą etykiet Pełne skanowanie i przesyłanie strumieniowe.

Na poniższej ilustracji przedstawiono złożone węzły wewnątrz czerwonego prostokąta. Nie można składać pozostałych węzłów z powrotem do źródła danych. Należy przejrzeć pozostałe węzły, ponieważ celem jest próba złożenia tych węzłów z powrotem do źródła danych.

Kontrolki widoku planu zapytania w dolnej części okna dialogowego z opcją dopasuj, aby wyświetlić wybraną opcję. Możesz wybrać pozycję Wyświetl szczegóły w dolnej części niektórych węzłów, aby wyświetlić informacje rozszerzone. Na przykład szczegóły węzła Value.NativeQuery pokazują zapytanie natywne (w języku SQL), które zostanie wysłane do źródła danych.

Widok szczegółów węzła Value.NativeQuery w planie zapytania. Przedstawione tutaj zapytanie może nie być dokładnie tym samym zapytaniem wysłanym do źródła danych, ale jest to dobre przybliżenie. W tym przypadku informuje o dokładnie tym, jakie kolumny będą odpytywane z tabeli SalesOrderHeader, a następnie jak będzie filtrować tę tabelę przy użyciu pola TotalDue, aby uzyskać tylko wiersze, w których wartość tego pola jest większa niż 1000. Węzeł obok niego Table.LastN jest obliczany lokalnie przez aparat Power Query, ponieważ nie można go składać.

Uwaga

Operatory mogą nie być dokładnie zgodne z funkcjami używanymi w skryscie zapytania.

Przejrzyj nieskładane węzły i rozważ akcje, aby złożyć transformację

Określono, które węzły nie mogą być składane i będą oceniane lokalnie. Ten przypadek ma Table.LastN tylko węzeł, ale w innych scenariuszach może mieć o wiele więcej.

Celem jest zastosowanie zmian w zapytaniu, aby można było składać krok. Niektóre zmiany, które można zaimplementować, mogą wahać się od zmiany kolejności kroków w celu zastosowania alternatywnej logiki do zapytania, które jest bardziej jawne dla źródła danych. Nie oznacza to, że wszystkie zapytania i wszystkie operacje można składać, stosując pewne zmiany. Dobrym rozwiązaniem jest jednak ustalenie przez próbę i błąd, jeśli zapytanie może zostać złożone z powrotem.

Ponieważ źródło danych jest bazą danych programu SQL Server, jeśli celem jest pobranie ostatnich pięciu zamówień z tabeli, dobrym rozwiązaniem jest skorzystanie z klauzul TOP i ORDER BY w języku SQL. Ponieważ w języku SQL nie ma klauzuli BOTTOM, Table.LastN nie można przetłumaczyć przekształcenia w usłudze PowerQuery na język SQL. Możesz usunąć Table.LastN krok i zastąpić go:

  • Sortuj malejąco według kolumny SalesOrderID w tabeli, ponieważ ta kolumna określa, która kolejność jest najpierw i która została wprowadzona ostatnio.
  • Wybierz pięć pierwszych wierszy od posortowania tabeli. Ta transformacja wykonuje to samo, co w przypadku, gdy była to zachowana dolna liczba wierszy (Table.LastN).

Ta alternatywa jest równoważna oryginalnemu zapytaniu. Chociaż ta alternatywa w teorii wydaje się dobra, musisz wprowadzić zmiany, aby sprawdzić, czy ten alternatywny element sprawi, że ten węzeł zostanie w pełni złożony ze źródła danych.

3. Implementowanie zmian w zapytaniu

Zaimplementuj alternatywę omówiną w poprzedniej sekcji:

  1. Zamknij okno dialogowe planu zapytania i wróć do Edytor Power Query.

  2. Usuń krok Przechowywane dolne wiersze.

  3. Sortuj kolumnę SalesOrderID w kolejności malejącej.

    Sortowanie kolumny SalesOrderID w kolejności malejącej przy użyciu menu autofiltru.

  4. Wybierz ikonę tabeli w lewym górnym rogu widoku podglądu danych i wybierz opcję Zachowaj pierwsze wiersze. W oknie dialogowym przekaż liczbę pięć jako argument i naciśnij przycisk OK.

    Za pomocą menu kontekstowego tabeli wybierz przekształcenie Zachowaj pierwsze wiersze, aby zachować tylko pięć pierwszych wierszy.

Po zaimplementowaniu zmian ponownie sprawdź wskaźniki składania zapytań i sprawdź, czy daje on zwinięty wskaźnik.

Wszystkie wskaźniki składania zapytań są zielone i pokazują, że można je składać. Końcowa tabela zawiera te same wiersze, ale w innej kolejności. Teraz nadszedł czas, aby przejrzeć plan zapytania ostatniego kroku, który jest teraz Zachowaj pierwsze wiersze. Teraz istnieją tylko złożone węzły. Wybierz pozycję Wyświetl szczegóły w obszarze Value.NativeQuery , aby sprawdzić, które zapytanie jest wysyłane do bazy danych.

Nowy plan zapytania po wprowadzeniu zmian w zapytaniu, który teraz prezentuje tylko złożone węzły, z wartością Value.NativeQuery pokazującą pełną instrukcję SQL, która ocenia zapytanie.

Chociaż ten artykuł sugeruje, jaka alternatywa ma być stosowana, głównym celem jest zapoznanie się z planem zapytania w celu zbadania składania zapytań. W tym artykule przedstawiono również informacje o tym, co jest wysyłane do źródła danych i jakie przekształcenia zostaną wykonane lokalnie.

Możesz dostosować kod, aby zobaczyć wpływ, jaki ma on w zapytaniu. Korzystając ze wskaźników składania zapytań, lepiej zrozumiesz, które kroki uniemożliwiają składanie zapytania.