Del via


Forstå folding med spørringsdiagnose

En av de vanligste grunnene til å bruke spørringsdiagnose er å få en bedre forståelse av hvilke operasjoner som ble «presset ned» av Power Query, som skal utføres av serverdeldatakilden, som også kalles «folding». Hvis vi vil se hva som er brettet, kan vi se på hva som er den mest spesifikke spørringen, eller spørringer, som sendes til serverdeldatakilden. Vi kan se på dette for både ODATA og SQL.

Operasjonen som ble beskrevet i artikkelen om opptaksdiagnose, gjør i hovedsak fire ting:

  • Koble til til datakilden
  • Henter kundetabellen
  • Filtrerer kunde-ID-rollen til Salgsrepresentant
  • Grupper etter land

Siden ODATA-koblingen for øyeblikket ikke støtter folding av ANTALL() til endepunktet, og siden dette endepunktet også er noe begrenset i operasjonene, forventer vi ikke at det siste trinnet skal brettes. På den annen side er filtrering relativt trivielt. Dette er akkurat det vi ser hvis vi ser på den mest spesifikke spørringen som sendes ut 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 som er lik Salgsrepresentant, og vi returnerer bare to kolonner – Kunde-ID og Land. Land er selvfølgelig nødvendig for grupperingsoperasjonen, som siden det ikke utføres av ODATA-endepunktet, må utføres lokalt. Vi kan konkludere med hvilke folder og ikke brette her.

På samme måte, hvis vi ser på den spesifikke og endelige spørringen som sendes ut i SQL-diagnostikken, ser vi noe litt annerledes:

    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 oppretter et undervalg der ContactTitle er filtrert til Salgsrepresentant, og deretter grupperer etter land på denne undervalget. Alle våre operasjoner foldet.

Ved hjelp av spørringsdiagnose kan vi undersøke hva slags operasjoner som er brettet – i fremtiden håper vi å gjøre denne funksjonen enklere å bruke.