Del via


Vejledning til forespørgselsdelegering i Power BI Desktop

Denne artikel henvender sig til dataudviklere, der udvikler modeller i Power BI Desktop. Den indeholder bedste praksisvejledning til, hvornår – og hvordan – du kan opnå Power Query-forespørgselsdelegering.

Forespørgselsdelegering er muligheden for, at en Power Query-forespørgsel genererer en enkelt forespørgselssætning, der henter og transformerer kildedata. Du kan få flere oplysninger under Forespørgselsdelegering i Power Query.

Vejledning

Vejledningen til forespørgselsdelegering varierer afhængigt af modeltilstanden.

I forbindelse med en DirectQuery - eller Dual-lagringstilstandstabel skal Power Query-forespørgslen opnå forespørgselsdelegering.

For en importtabel kan det være muligt at opnå forespørgselsdelegering. Når forespørgslen er baseret på en relationskilde – og hvis der kan oprettes en enkelt SELECT-sætning – opnår du den bedste ydeevne for opdatering af data ved at sikre, at forespørgselsdelegering finder sted. Hvis Power Query-miksprogrammet stadig er påkrævet for at behandle transformationer, skal du bestræbe dig på at minimere det arbejde, der skal udføres, især for store semantiske modeller.

Følgende punktopstilling indeholder en specifik vejledning.

  • Deleger så meget behandling til datakilden som muligt: Når alle trin i en Power Query-forespørgsel ikke kan delegeres, skal du finde det trin, der forhindrer forespørgselsdelegering. Når det er muligt, skal du flytte senere trin tidligere i sekvensen, så de kan indregnes i forespørgselsdelegeringen. Bemærk, at Power Query-miksprogrammet kan være smart nok til at omarrangere dine forespørgselstrin, når kildeforespørgslen genereres.

    Hvis det trin, der forhindrer forespørgselsdelegering, kan opnås i en enkelt SELECT-sætning – eller i den proceduremæssige logik i en lagret procedure – kan du for en relationsdatakilde overveje at bruge en oprindelig SQL-forespørgsel som beskrevet næste.

  • Brug en oprindelig SQL-forespørgsel: Når en Power Query-forespørgsel henter data fra en relationskilde, er det muligt for nogle kilder at bruge en oprindelig SQL-forespørgsel. Forespørgslen kan faktisk være en hvilken som helst gyldig sætning, herunder en kørsel af en lagret procedure. Hvis sætningen producerer flere resultatsæt, returneres kun den første. Parametre kan deklareres i sætningen, og vi anbefaler, at du bruger M-funktionen Value.NativeQuery . Denne funktion er udviklet til sikkert og bekvemt at overføre parameterværdier. Det er vigtigt at forstå, at Power Query-miksprogrammet ikke kan delegere senere forespørgselstrin, og derfor skal du inkludere al - eller så meget - transformationslogik i den oprindelige forespørgselssætning.

    Der er to vigtige overvejelser, du skal være opmærksom på, når du bruger oprindelige SQL-forespørgsler:

    • For en DirectQuery-modeltabel skal forespørgslen være en SELECT-sætning, og den kan ikke bruge CTE'er (Common Table Expressions) eller en lagret procedure.
    • Trinvis opdatering kan ikke bruge en oprindelig SQL-forespørgsel. Så det ville tvinge Power Query-miksprogrammet til at hente alle kilderækker og derefter anvende filtre for at bestemme trinvise ændringer.

    Vigtigt

    En oprindelig SQL-forespørgsel kan potentielt gøre mere end at hente data. En gyldig sætning kan udføres (og muligvis flere gange), herunder en, der ændrer eller sletter data. Det er vigtigt, at du anvender princippet om færrest mulige rettigheder for at sikre, at den konto, der bruges til at få adgang til databasen, kun har læsetilladelse til påkrævede data.

  • Forbered og transformér data i kilden: Når du identificerer, at visse Power Query-forespørgselstrin ikke kan foldes, kan det være muligt at anvende transformationerne i datakilden. Transformationerne kan opnås ved at skrive en databasevisning, der logisk transformerer kildedata. Eller ved fysisk at forberede og materialisere data, før Power BI forespørger dem. Et relationsdata warehouse er et fremragende eksempel på forberedte data, der normalt består af forudintegrerede kilder til organisationsdata.

Du kan få flere oplysninger om denne artikel i følgende ressourcer: