Om foldning med forespørgselsdiagnosticering
En af de mest almindelige årsager til at bruge Forespørgselsdiagnosticering er at have en bedre forståelse af, hvilke handlinger der blev 'skubbet ned' af Power Query, der skal udføres af back end-datakilden, som også kaldes 'foldning'. Hvis vi vil se, hvad der er foldet, 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.
Den handling, der blev beskrevet i artiklen om optagelse af diagnosticering, gør grundlæggende fire ting:
- Forbind til datakilden
- Henter kundetabellen
- Filtrerer rollen Kunde-id til 'Salgsrepræsentant'
- Grupperer efter 'Land'
Da ODATA-connectoren i øjeblikket ikke understøtter foldning af COUNT() til slutpunktet, og da dette slutpunkt også er noget begrænset i sine handlinger, forventer vi ikke, at det sidste trin foldes. På den anden side er filtrering relativt triviel. Dette er præcis, hvad vi ser, hvis vi ser på den mest specifikke forespørgsel, der udsendes 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 ContactTitle, der svarer til 'Sales Representative', og vi returnerer kun to kolonner – Kunde-id og Land. Country er naturligvis nødvendig for grupperingshandlingen, som da den ikke udføres af ODATA-slutpunktet, skal udføres lokalt. Vi kan konkludere, hvilke foldninger der ikke foldes her.
Hvis vi på samme måde ser på den specifikke og endelige forespørgsel, der udsendes i SQL-diagnosticering, 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 en undersektion, hvor ContactTitle filtreres til 'Salgsrepræsentant', og grupperer derefter efter land i denne undersektion. Alle vores operationer er foldet.
Ved hjælp af Forespørgselsdiagnosticering kan vi undersøge, hvilken type handlinger der er foldet – i fremtiden håber vi at gøre denne funktion nemmere at bruge.