Del via


Spørringsdelegering på opprinnelige spørringer

I Power Query kan du definere en native spørring og kjøre den mot datakilden din. Artikkelen Import data from a database using native database forklarer hvordan man gjør denne prosessen med flere datakilder. Men ved å bruke prosessen beskrevet i artikkelen, utnytter ikke søket ditt noen spørringsfolding fra påfølgende spørringssteg.

Denne artikkelen viser en alternativ metode for å lage native spørringer mot datakilden din ved å bruke funksjonen Value.NativeQuery og holde spørringsfoldingsmekanismen aktiv for påfølgende steg i spørringen.

Note

Vi anbefaler at du leser dokumentasjonen om query folding og query folding indikatorene for å bedre forstå konseptene som brukes i denne artikkelen.

Støttede datakoblinger

Metoden beskrevet i de neste seksjonene gjelder for følgende datakoblinger:

Koble til målet fra datakilden

Note

For å illustrere denne prosessen bruker denne artikkelen SQL Server-koblingen og eksempeldatabasen AdventureWorks2019. Erfaringen kan variere fra kobling til kontakt, men denne artikkelen viser grunnprinsippene for hvordan man kan aktivere spørringsfolding fremfor native spørringer for de støttede koblingene.

Når du kobler til datakilden, er det viktig at du kobler til noden eller nivået hvor du vil kjøre din native spørring. For eksempelet i denne artikkelen er den noden databasenivået inne i serveren.

Skjermbilde av tilkoblingsinnstillingsdialogen for tilkoblingen til AdventureWorks2019-databasen på en lokal instans av SQL Server.

Etter at du har definert tilkoblingsinnstillingene og oppgitt legitimasjonen for tilkoblingen din, åpnes navigasjonsdialogen for datakilden din. Navigasjonsdialogen inneholder alle tilgjengelige objekter du kan koble til.

Fra denne listen må du velge objektet der den native spørringen kjøres (også kjent som målet). For dette eksempelet er objektet databasenivå.

I navigatørvinduet i Power Query, velg og hold (eller høyreklikk) databasenoden i navigatørvinduet og velg alternativet Transform Data . Ved å velge dette alternativet opprettes en ny spørring av den overordnede visningen av databasen din, som er målet du trenger for å kjøre din native spørring.

Skjermbilde av valgdata hvor brukeren høyreklikket på databasenoden i navigatøren, med vekt på Transform Data.

Når spørringen din havner i Power Query-editoren, skal kun Kilde-steget vises i panelet Anvendte trinn. Dette steget inneholder en tabell med alle tilgjengelige objekter i databasen din, på samme måte som de ble vist i Navigator-vinduet.

Skjermbilde av spørringen med kun kildesteget.

Bruk Value.NativeQuery-funksjonen

Målet med denne prosessen er å kjøre følgende SQL-kode, og å anvende flere transformasjoner med Power Query som kan brettes tilbake til kildekoden.

SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'

Første steg var å definere riktig mål, som i dette tilfellet er databasen hvor SQL-koden kjøres. Når et steg har riktig mål, kan du velge det steget – i dette tilfellet Kilde i anvendte steg – og deretter velge fx-knappen i formellinjen for å legge til et egendefinert steg. I dette eksempelet, erstatt formelen Source med følgende formel:

Value.NativeQuery(Source, "SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'  ", null, [EnableFolding = true])

Den viktigste komponenten i denne formelen er bruken av den valgfrie posten for den fjerde parameteren i funksjonen som har EnableFolding-postfeltet satt til true.

Skjermbilde av den nye egendefinerte stegformelen med bruk av Value.NativeQuery-funksjonen og den eksplisitte SQL-spørringen.

Note

Du kan lese mer om Value.NativeQuery-funksjonen i den offisielle dokumentasjonsartikkelen.

Etter at du taster inn formelen, vises en advarsel som krever at du aktiverer native spørringer for ditt spesifikke steg. Velg fortsett for at dette steget skal evalueres.

Denne SQL-setningen gir en tabell med bare tre rader og to kolonner.

Skjermbilde med resultatene fra den native spørringen evaluert mot måldatabasen.

Test spørringsfolding

For å teste spørringsfoldingen av spørringen din, kan du prøve å bruke et filter på hvilken som helst av kolonnene dine og se om spørringsfoldingsindikatoren i delen for anvendte steg viser steget som foldet. I dette tilfellet kan du filtrere kolonnen DepartmentID for å få verdier som ikke er lik to.

Skjermbilde som viser hvordan man filtrerer kolonnen DepartmentID slik at den kun har verdier som ikke er lik to.

Etter å ha lagt til dette filteret, kan du sjekke at indikatorene for spørringsfolding fortsatt viser at spørringsfolding skjer på dette nye trinnet.

Filtersteget vist som foldet tilbake til datakilden i avsnittet om anvendte trinn.

For å ytterligere validere hvilken spørring som sendes til datakilden, kan du velge og holde inne (eller høyreklikke) steget Filtrerte rader og velge alternativet Vis spørringsplan for å sjekke spørringsplanen for det steget.

I spørringsplanvisningen kan du se at en node med navnet Value.NativeQuery som har en hyperkobling til View Details . Du kan velge denne hyperkoblingen for å se den eksakte spørringen som sendes til SQL Server-databasen.

Den native spørringen pakkes rundt en annen SELECT-setning for å lage en underspørring av originalen. Power Query gjør sitt beste for å lage den mest optimale spørringen gitt transformasjonene som brukes og den opprinnelige spørringen som tilbys.

Skjermbilde av spørringsplanen for steget Filtrerte rader.

Tips

For situasjoner der du får feil fordi spørringsfolding ikke var mulig, anbefaler vi at du prøver å validere stegene dine som en underspørring av din opprinnelige native spørring for å sjekke om det kan være noen syntaks- eller kontekstkonflikter.