Delen via


Informatie over vouwen met Query Diagnostics

Een van de meest voorkomende redenen voor het gebruik van querydiagnose is om beter inzicht te krijgen in de bewerkingen die door Power Query zijn gepusht om te worden uitgevoerd door de back-endgegevensbron, ook wel 'folding' genoemd. Als we willen zien wat er is gevouwen, kunnen we kijken wat de 'meest specifieke' query of query's zijn die naar de back-endgegevensbron worden verzonden. We kunnen dit bekijken voor zowel ODATA als SQL.

De bewerking die is beschreven in het artikel over opnamediagnose doet in feite vier dingen:

  • Verbinding maken s naar de gegevensbron
  • Haalt de klanttabel op
  • Hiermee filtert u de rol Klant-id naar 'Verkoopvertegenwoordiger'
  • Groepen op 'Land'

Omdat de ODATA-connector momenteel geen ondersteuning biedt voor folding COUNT() naar het eindpunt en omdat dit eindpunt ook enigszins beperkt is in de bewerkingen, verwachten we niet dat die laatste stap moet worden gevouwen. Aan de andere kant is filteren relatief triviaal. Dit is precies wat we zien als we kijken naar de meest specifieke query die hierboven is verzonden:

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

We kunnen zien dat we de tabel filteren op ContactTitle die gelijk is aan 'Verkoopvertegenwoordiger', en we retourneren alleen twee kolommen: klant-id en land. Land is natuurlijk nodig voor de groeperingsbewerking, die omdat het niet wordt uitgevoerd door het ODATA-eindpunt lokaal moet worden uitgevoerd. We kunnen concluderen welke vouwen en niet hier worden gevouwen.

Als we ook kijken naar de specifieke en uiteindelijke query die wordt verzonden in de SQL-diagnose, zien we iets anders:

    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]

Hier zien we dat Power Query een subselectie maakt waarbij ContactTitle wordt gefilterd op 'Verkoopvertegenwoordiger', en vervolgens groepeert op Land op deze subselectie. Al onze activiteiten zijn gevouwen.

Met querydiagnose kunnen we onderzoeken wat voor soort bewerkingen er in de toekomst zijn gevouwen. We hopen dat deze mogelijkheid gemakkelijker te gebruiken is.