Az összecsukás ismertetése a Lekérdezésdiagnosztikával

A Lekérdezésdiagnosztika használatának egyik leggyakoribb oka, hogy jobban megértsük, mely műveleteket leküld a Power Query a háttérbeli adatforrásnak végrehajtásra. Ezt a folyamatot hajtogatásnak is nevezik. Annak megtekintéséhez, hogy milyen műveletek hajthatók végre, tekintse meg a legspecifikusabb lekérdezéseket vagy lekérdezéseket, amelyeket Power Query küld a háttéradatforrásnak. Ezt a folyamatot az ODATA és az SQL esetében is megvizsgálhatja.

A lekérdezésdiagnosztikák rögzítése Power BI című szakaszban leírt művelet négy lépést hajt végre:

  • Csatlakozik az adatforráshoz
  • Lekéri az ügyféltáblát
  • Az Ügyfélazonosító szerepkört erre szűri: Sales Representative
  • Csoportok szerint Country

Mivel az ODATA-összekötő jelenleg nem támogatja a COUNT() végponthoz való összecsukását, és mivel ez a végpont a működésében is korlátozott, nem számítunk arra, hogy ez az utolsó lépés lehajtható. Másrészt a szűrés viszonylag triviális. Pontosan ezt látjuk, ha megnézzük a legspecifikusabb lekérdezést:

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

Látható, hogy a táblát azokra a ContactTitle értékekre szűrjük, amelyek megegyeznek a Sales Representative értékkel, és csak két oszlopot ad vissza: Customer ID és Country. Country a csoportosítási művelethez van szükség, amelyet helyileg kell végrehajtani, mert az ODATA-végpont nem végzi el. Meg tudjuk állapítani, hogy mi hajlik, és mi nem hajlik.

Hasonlóképpen, ha megnézzük az SQL-diagnosztikában kibocsátott konkrét és végleges lekérdezést, valami kissé eltérőt látunk:

    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]

Láthatja, hogy a Power Query létrehoz egy részhalmazt, amelyben a(z) ContactTitle értékét a(z) Sales Representative értékre szűri, majd ebben a részhalmazban a(z) Country szerint csoportosít. Minden műveletünk megszűnt.

A Lekérdezésdiagnosztika segítségével megvizsgálhatjuk, hogy milyen típusú műveletek képeződtek le. A jövőben reméljük, hogy ez a képesség könnyebben használható lesz.