Meer inzicht in vouwen met Querydiagnose

Een van de meest voorkomende redenen om Query Diagnostics te gebruiken, is om een beter inzicht te krijgen in welke bewerkingen door Power Query naar beneden zijn gep pushd om te worden uitgevoerd door de back-endgegevensbron, die ook wel vouwen wordt genoemd. Als we willen zien wat er is gevouwen, kunnen we kijken wat de meest specifieke query is, of query's, 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 Recording Diagnostics doet in feite vier dingen:

  • Verbinding maken met de gegevensbron
  • De klanttabel pakken
  • Filtert de rol Klant-id op Verkoopmedewerker
  • Groepen op 'Land'

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

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 voor ContactTitle op dezelfde manier filteren als 'Verkoopmedewerker', en we retourneren slechts twee kolommen: Klant-id en Land. Land is natuurlijk nodig voor de groeperingsbewerking, die niet wordt uitgevoerd door het ODATA-eindpunt lokaal moet worden uitgevoerd. We kunnen concluderen wat hier wel en niet wordt gevouwen.

En als we kijken naar de specifieke en laatste query die is SQL diagnostische gegevens, 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 ziet u dat Power Query subselectie maakt waarbij ContactTitle wordt gefilterd op Verkoopmedewerker en vervolgens op Land in deze subselectie wordt gefilterd. Al onze bewerkingen zijn gevouwen.

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