Del via


Om foldning med forespørgselsdiagnosticering

En af de mest almindelige grunde til at bruge forespørgselsdiagnostik er at få en bedre forståelse af, hvilke operationer Power Query 'skubbede ned' for at blive udført af backend-datakilden, hvilket også kaldes 'folding'. Hvis vi vil se, hvad der foldede, kan vi se på, hvad der er den 'mest specifikke' forespørgsel eller forespørgsler, der sendes til back-end datakilden. Vi kan se på dette for både ODATA og SQL.

Operationen, der blev beskrevet i artiklen om Recording Diagnostics, gør i det væsentlige fire ting:

  • Forbinder til datakilden
  • Griber kundebordet
  • Filtrerer kunde-ID-rollen til 'Salgsrepræsentant'
  • Grupper efter 'Land'

Da ODATA-connectoren i øjeblikket ikke understøtter foldning af COUNT() til endepunktet, og da dette endepunkt også er noget 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 ovenfor:

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 KontaktTitel, der svarer til 'Salgsrepræsentant', og vi returnerer kun to kolonner – Kunde-ID og Land. Land er naturligvis nødvendigt for grupperingsoperationen, som da den ikke udføres af ODATA-endpointet, skal udføres lokalt. 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]

Her kan vi se, at Power Query opretter et underudvalg, hvor ContactTitle filtreres til 'Sales Representative', og derefter grupperes efter land på dette 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.