Zdieľať cez


Informácie o postupných posúvaní pomocou funkcie Diagnostika dotazov

Jedným z najčastejších dôvodov používania diagnostiky dotazov je lepšie pochopenie toho, ktoré operácie Power Query 'posunul dole', aby ich vykonal zdroj dát v pozadí, čo je známe aj ako 'folding'. Ak chceme vidieť, čo sa zložilo, môžeme sa pozrieť, ktorý je "najšpecifickejší" dotaz alebo dotazy, ktoré sa posielajú do zdroja dát v pozadí. Môžeme sa na to pozrieť pre ODATA aj SQL.

Operácia opísaná v článku o Recording Diagnostics robí v podstate štyri veci:

  • Pripája sa k dátovému zdroju
  • Chytí zákaznícky stôl
  • Filtruje rolu Customer ID na 'Obchodný zástupca'
  • Skupiny podľa 'krajiny'

Keďže konektor ODATA momentálne nepodporuje skladanie COUNT() na endpoint a keďže tento endpoint je tiež čiastočne obmedzený vo svojich operáciách, neočakávame, že sa tento posledný krok zloží. Na druhej strane, filtrovanie je relatívne triviálne. Presne toto vidíme, ak sa pozrieme na najkonkrétnejší dotaz vydaný vyššie:

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

Vidíme, že filtrujeme tabuľku podľa ContactTitle, čo sa rovná 'Sales Representative', a vraciame len dva stĺpce – Customer ID a krajina. Krajina je samozrejme potrebná pre zoskupovaciu operáciu, ktorú keďže nevykonáva ODATA endpoint, musí byť vykonaná lokálne. Tu môžeme usúdiť, čo sa skladá a čo nie.

Podobne, ak sa pozrieme na konkrétny a záverečný dotaz vydaný v SQL diagnostike, vidíme niečo mierne odlišné:

    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]

Tu vidíme, že Power Query vytvára podvýber, kde je ContactTitle filtrovaný na 'Sales representative' a potom zoskupený podľa krajiny na tomto podvýbere. Všetky naše operácie zanikli.

Pomocou Query Diagnostics môžeme skúmať, aké operácie boli ukončené – v budúcnosti dúfame, že túto schopnosť sprístupníme jednoduchšie.