Referer til Power Query-forespørgsler

Denne artikel henvender sig til dig som datamodel, der arbejder med Power BI Desktop. Den indeholder en vejledning, når du definerer Power Query-forespørgsler, der refererer til andre forespørgsler.

Lad os gøre det helt klart, hvad det betyder: Når en forespørgsel refererer til en anden forespørgsel, er det, som om trinnene i den anden forespørgsel kombineres med og kører før trinnene i den første forespørgsel.

Overvej flere forespørgsler: Forespørgsel1 henter data fra en webtjeneste, og indlæsningen er deaktiveret. Forespørgsel2, Forespørgsel3 og Forespørgsel4 refererer alle til Forespørgsel1, og deres output indlæses i datamodellen.

Diagram showing the Query Dependencies view, displaying queries described in the previous paragraph.

Når datamodellen opdateres, antages det ofte, at Power Query henter forespørgselsresultatet1, og at den genbruges af forespørgsler, der refereres til. Denne tankegang er forkert. Power Query udfører faktisk Forespørgsel2, Forespørgsel3 og Forespørgsel4 separat.

Du kan tro, at Forespørgsel2 har trinnene i Forespørgsel1 integreret i den. Det er også tilfældet for Forespørgsel3 og Forespørgsel4. I følgende diagram vises et tydeligere billede af, hvordan forespørgslerne udføres.

Diagram showing a modified version of the Query Dependencies view, displaying Query 2, Query 3, and Query 4.

Query1 udføres tre gange. De flere udførelser kan resultere i langsom opdatering af data og have negativ indvirkning på datakilden.

Brugen af funktionen Table.Buffer i Query1 fjerner ikke yderligere datahentning. Denne funktion gemmer en tabel i buffer i hukommelsen, og den tabel, der er lagret i buffer, kan kun bruges i den samme forespørgselskørsel. Så hvis Query1 i eksemplet gemmes i buffer, når Query2 udføres, kan de data, der er gemt i buffer, ikke bruges, når Forespørgsel3 og Forespørgsel4 udføres. De vil selv buffer dataene to gange mere. (Dette resultat kan faktisk forværre den negative ydeevne, fordi tabellen bufferlagres af hver refererende forespørgsel).

Bemærk

Cachelagringsarkitekturen i Power Query er kompleks, og den er ikke i fokus i denne artikel. Power Query kan cachelagre data, der er hentet fra en datakilde. Men når den udfører en forespørgsel, kan den hente dataene fra datakilden mere end én gang.

Anbefalinger

Generelt anbefaler vi, at du refererer til forespørgsler for at undgå duplikering af logik på tværs af dine forespørgsler. Som beskrevet i denne artikel kan denne designtilgang dog bidrage til langsomme dataopdateringer og overbelastet datakilder.

Vi anbefaler, at du opretter et dataflow i stedet. Brug af et dataflow kan forbedre dataopdateringstiden og reducere indvirkningen på dine datakilder.

Du kan designe dataflowet for at indkapsle kildedataene og transformationerne. Da dataflowet er et permanent lager af data i Power BI-tjeneste, er datahentning hurtig. Så selvom referencering af forespørgsler resulterer i flere anmodninger for dataflowet, kan opdateringstider for data forbedres.

Hvis Query1 i eksemplet er redesignet som et dataflowobjekt, kan Forespørgsel2, Forespørgsel3 og Forespørgsel4 bruge det som en datakilde. Med dette design evalueres det objekt, der stammer fra Query1 , kun én gang.

Du kan få flere oplysninger, der er relateret til denne artikel, i følgende ressourcer: