Megosztás a következőn keresztül:


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

A Lekérdezésdiagnosztika használatának egyik leggyakoribb oka, hogy jobban tisztában van azzal, hogy a Power Query milyen műveleteket "leküldésesen" hajtott végre, amelyeket a háttéradatforrás, más néven "összecsukás" hajt végre. Ha látni szeretnénk, hogy mi van összehajtva, megnézhetjük, hogy mi a "legspecifikusabb" lekérdezés vagy lekérdezés, amelyet a rendszer elküld a háttérbeli adatforrásnak. Ezt az ODATA és az SQL esetében is megvizsgálhatjuk.

A Felvételdiagnosztikáról szóló cikkben leírt művelet alapvetően négy dolgot hajt végre:

  • Csatlakozás az adatforráshoz
  • Az ügyféltábla megragadása
  • Az Ügyfélazonosító szerepkör szűrése "Értékesítési képviselő" értékre
  • Csoportok ország szerint

Mivel az ODATA-összekötő jelenleg nem támogatja a COUNT() végponthoz való összecsukását, és mivel a végpont működése is némileg korlátozott, nem számítunk az utolsó lépésre. Másrészt a szűrés viszonylag triviális. Pontosan ezt látjuk, ha megnézzük a fent megadott 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 ContactTitle "Sales Representative" (Értékesítési képviselő) értékével egyenlő tábláját szűrjük, és csak két oszlopot adunk vissza: ügyfélazonosítót és országot. A csoportosítási művelethez természetesen országra van szükség, amelyet mivel az ODATA-végpont nem hajtja végre, helyileg kell végrehajtani. Meg tudjuk állapítani, hogy mi hajt, és nem hajt ide.

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]

Itt láthatjuk, hogy a Power Query létrehoz egy alszakaszt, amelyben a ContactTitle a "Sales Representative" (Értékesítési képviselő) értékre van szűrve, majd ország szerint csoportosítja ezt az alszakaszt. Minden műveletünk le van hajtva.

A Lekérdezésdiagnosztikával megvizsgálhatjuk, hogy a jövőben milyen műveletek hajthatók végre – reméljük, hogy ez a funkció könnyebben használható lesz.