Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jedną z najczęstszych przyczyn korzystania z diagnostyki zapytań jest lepsze zrozumienie, jakie operacje zostały „przesunięte” przez Power Query do wykonania przez źródło danych, nazywane również „składaniem”. Jeśli chcemy zobaczyć, co zostało złożone, możemy przyjrzeć się temu, co jest "najbardziej konkretnym" zapytaniem lub zapytaniami, które są wysyłane do źródła danych zaplecza. Możemy przyjrzeć się temu zarówno pod kątem ODATA, jak i SQL.
Operacja opisana w artykule dotyczącym diagnostyki nagrywania obejmuje zasadniczo cztery elementy:
- Nawiązuje połączenie ze źródłem danych
- Pobiera tabelę klienta
- Filtruje identyfikator klienta według roli 'Przedstawiciel handlowy'
- Grupy według kraju
Ponieważ łącznik ODATA nie obsługuje obecnie składania funkcji COUNT() do punktu końcowego, a ponieważ ten punkt końcowy jest nieco ograniczony w jego operacjach, nie oczekujemy, że ostatni krok zostanie złożony. Z drugiej strony filtrowanie jest stosunkowo proste. Jest to dokładnie to, co widzimy, jeśli przyjrzymy się najbardziej konkretnego zapytania emitowanego powyżej:
Request:
GET https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry HTTP/1.1
Response:
https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry
HTTP/1.1 200 OK
Widzimy, że filtrujemy tabelę dla kolumny ContactTitle równej "Przedstawiciel sprzedaży", a zwracamy tylko dwie kolumny — identyfikator klienta i kraj. Kraj, oczywiście, jest potrzebny do operacji grupowania, która ponieważ nie jest wykonywana przez punkt końcowy ODATA musi być wykonywana lokalnie. Możemy wywnioskować, co się składa i co się nie składa tutaj.
Podobnie, jeśli przyjrzymy się konkretnego i końcowego zapytania emitowanego w diagnostyce SQL, zobaczymy coś nieco innego:
count(1) as [Count]
from
(
select [_].[Country]
from [dbo].[Customers] as [_]
where [_].[ContactTitle] = 'Sales Representative' and [_].[ContactTitle] is not null
) as [rows]
group by [Country]
Tutaj widać, że dodatek Power Query tworzy podzbiór, w którym element ContactTitle jest filtrowany na "Przedstawiciel sprzedaży", a następnie grupowany według kraju w tym podzbiorze. Wszystkie nasze operacje zostały zamknięte.
Korzystając z diagnostyki zapytań, możemy sprawdzić, jakie operacje zostały złożone. W przyszłości mamy nadzieję, że ta funkcja będzie łatwiejsza w użyciu.