Del via


Spørringsdelegering på opprinnelige spørringer

I Power Query kan du definere en opprinnelig spørring og kjøre den mot datakilden. Importer data fra en database ved hjelp av den opprinnelige databasespørringsartikkelen forklarer hvordan du gjør denne prosessen med flere datakilder. Men ved å bruke prosessen som er beskrevet i denne artikkelen, drar ikke spørringen nytte av noen spørringsdelegering fra etterfølgende spørringstrinn.

Denne artikkelen viser en alternativ metode for å opprette opprinnelige spørringer mot datakilden ved hjelp av Value.NativeQuery-funksjonen og holde spørringsdelegeringsmekanismen aktiv for påfølgende trinn i spørringen.

Merk

Vi anbefaler at du leser dokumentasjonen om spørringsdelegering og spørringsdelegeringsindikatorene for bedre å forstå begrepene som brukes i denne artikkelen.

Støttede datakoblinger

Metoden som er beskrevet i de neste inndelingene, gjelder for følgende datakoblinger:

Koble til mål fra datakilde

Merk

Denne artikkelen bruker SQL Server-koblingen og eksempeldatabasen AdventureWorks2019 for å vise frem denne prosessen. Opplevelsen kan variere fra kobling til kobling, men denne artikkelen viser det grunnleggende om hvordan du aktiverer spørringsdelegeringsfunksjoner over opprinnelige spørringer for de støttede koblingene.

Når du kobler til datakilden, er det viktig at du kobler til noden eller nivået der du vil kjøre den opprinnelige spørringen. I denne artikkelen er denne noden databasenivået i serveren.

Skjermbilde av dialogboksen for tilkoblingsinnstillinger for tilkoblingen til AdventureWorks2019-databasen på en lokal forekomst av SQL Server.

Når du har definert tilkoblingsinnstillingene og angitt legitimasjonen for tilkoblingen, åpnes navigasjonsdialogboksen for datakilden. Navigasjonsdialogboksen inneholder alle tilgjengelige objekter du kan koble til.

Fra denne listen må du velge objektet der den opprinnelige spørringen kjøres (også kalt målet). I dette eksemplet er dette objektet databasenivået.

Velg og hold (eller høyreklikk) databasenoden i navigatørvinduet i navigasjonsvinduet i Power Query, og velg alternativet Transformer data . Hvis du velger dette alternativet, opprettes det en ny spørring i den generelle visningen av databasen, som er målet du trenger for å kjøre den opprinnelige spørringen.

Skjermbilde av velg data der brukeren høyreklikket på databasenoden i navigatøren, med Uthevet transformeringsdata.

Når spørringen lander i redigeringsprogrammet for Power Query, skal bare kildetrinnet vises i ruten Brukte trinn. Dette trinnet inneholder en tabell med alle tilgjengelige objekter i databasen, på samme måte som de ble vist i Navigator-vinduet.

Skjermbilde av spørringen med bare kildetrinnet.

Bruk Value.NativeQuery (funksjon)

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

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

Det første trinnet var å definere det riktige målet, som i dette tilfellet er databasen der SQL-koden kjøres. Når et trinn har riktig mål, kan du velge dette trinnet – i dette tilfellet Kilde i brukte trinn – og deretter velge fx-knappen på formellinjen for å legge til et egendefinert trinn. I dette eksemplet erstatter Source du formelen 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 for funksjonen som har enableFolding-postfeltet satt til sann.

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

Merk

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

Når du har skrevet inn formelen, vises en advarsel som krever at du aktiverer opprinnelige spørringer for å kjøre for det bestemte trinnet. Velg fortsett for at dette trinnet skal evalueres.

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

Skjermbilde med resultatene av den opprinnelige spørringen evaluert mot måldatabasen.

Test spørringsdelegering

Hvis du vil teste spørringsdelegering av spørringen, kan du prøve å bruke et filter på en av kolonnene og se om spørringsdelegeringsindikatoren i delen brukte trinn viser trinnet som brettet. I dette tilfellet kan du filtrere DepartmentID-kolonnen slik at den har verdier som ikke er lik to.

Skjermbilde som viser hvordan du filtrerer DepartmentID-kolonnen slik at den bare har verdiene som ikke er lik to.

Når du har lagt til dette filteret, kan du kontrollere at spørringsdelegeringsindikatorene fremdeles viser spørringsdelegeringen som skjer i dette nye trinnet.

Filtertrinn vist som brettet tilbake til datakilden i delen brukte trinn.

Hvis du vil validere spørringen som sendes til datakilden ytterligere, kan du velge og holde (eller høyreklikke) trinnet Filtrerte rader og velge alternativet Vis spørringsplan for å kontrollere spørringsplanen for dette trinnet.

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

Den opprinnelige spørringen er pakket rundt en annen SELECT-setning for å opprette en delspørring av originalen. Power Query gjør sitt beste for å opprette den mest optimale spørringen gitt transformeringene som brukes, og den opprinnelige spørringen som er angitt.

Skjermbilde av spørringsplanen for trinnet Filtrerte rader.

Tips

For scenarioer der du får feil fordi spørringsdelegering ikke var mulig, anbefaler vi at du prøver å validere trinnene som en delspørring av den opprinnelige opprinnelige spørringen for å kontrollere om det kan være noen syntaks eller kontekstkonflikter.