Udostępnij za pośrednictwem


Omówienie składania za pomocą diagnostyki zapytań

Jedną z najczęstszych przyczyn korzystania z diagnostyki zapytań jest lepsze zrozumienie, jakie operacje zostały "wypchnięte" przez dodatek Power Query do wykonania przez źródło danych zaplecza, 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:

  • Połączenie do źródła danych
  • Pobiera tabelę klienta
  • Filtruje rolę Identyfikator klienta na "Przedstawiciel handlowy"
  • Grupy według "Country"

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 dowiedzieć się, co składa się i nie składa się 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]

W tym miejscu widać, że dodatek Power Query tworzy podwybór, w którym element ContactTitle jest filtrowany do pozycji "Przedstawiciel sprzedaży", a następnie grupuje według kraju w tej podwybór. Wszystkie nasze operacje zostały złożone.

Korzystając z diagnostyki zapytań, możemy sprawdzić, jakiego rodzaju operacje składane — mamy nadzieję, że ta funkcja będzie łatwiejsza w użyciu.