Forstå foldning ved at bruge forespørgselsdiagnostik

En af de mest almindelige grunde til at bruge Query Diagnostics er for bedre at forstå, hvilke operationer Power Query sender ned til backend-datakilden for at udføre. Denne proces kaldes også foldning. For at se, hvilke operationer der foldes, skal du kigge på den mest specifikke forespørgsel eller forespørgsler, som Power Query sender til backend-datakilden. Du kan undersøge denne proces for både ODATA og SQL.

Operationen beskrevet i Registrering af forespørgselsdiagnostik i Power BI udfører fire trin:

  • Forbinder til datakilden
  • Henter kundetabellen
  • Filtrerer kunde-ID-rollen til Sales Representative
  • Grupper efter Country

Da ODATA-connectoren i øjeblikket ikke understøtter foldning af COUNT() til endepunktet, og da dette endepunkt også er begrænset i sine operationer, forventer vi ikke, at det sidste trin folder sig. På den anden side er filtrering relativt trivielt. Det er præcis, hvad vi ser, hvis vi ser på den mest specifikke forespørgsel, der udsendes:

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

Vi kan se, at vi filtrerer tabellen for ContactTitle , der er Sales Representativelig , og vi returnerer kun to kolonner: Customer ID og Country. Country er nødvendig for grupperingsoperationen, som skal udføres lokalt, fordi den ikke udføres af ODATA-endpointet. Vi kan konkludere, hvad der foldes og ikke foldes her.

På samme måde, hvis vi ser på den specifikke og endelige forespørgsel i SQL-diagnostikken, ser vi noget lidt anderledes:

    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]

Du kan se, at Power Query opretter en undermarkering, hvor ContactTitle filtreres til Sales Representative, og derefter grupperes efter Country på denne underudvalg. Alle vores operationer lukkede.

Ved hjælp af Query Diagnostics kan vi undersøge, hvilke slags operationer der foldede. I fremtiden håber vi at gøre denne funktion lettere at bruge.