Dela via


Referera till Power Query-frågor

Den här artikeln riktar sig till dig som datamodellerare som arbetar med Power BI Desktop. Det ger dig vägledning när du definierar Power Query-frågor som refererar till andra frågor.

Låt oss vara tydliga med vad detta innebär: När en fråga refererar till en andra fråga är det som om stegen i den andra frågan kombineras med och körs före stegen i den första frågan.

Överväg flera frågor: Fråga1 källor data från en webbtjänst och dess belastning är inaktiverad. Query2, Query3 och Query4 refererar alla till Query1 och deras utdata läses in till datamodellen.

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

När datamodellen uppdateras antas det ofta att Power Query hämtar Query1-resultatet och att det återanvänds av refererade frågor. Det här tänkandet är felaktigt. Power Query kör i själva verket Query2, Query3 och Query4 separat.

Du kan tro att Query2 har inbäddade Query1-steg . Det gäller även för Query3 och Query4. I följande diagram visas en tydligare bild av hur frågorna körs.

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

Query1 körs tre gånger. De flera körningarna kan leda till långsam datauppdatering och negativ inverkan på datakällan.

Användningen av funktionen Table.Buffer i Query1 eliminerar inte ytterligare datahämtning. Den här funktionen buffrar en tabell till minnet och den buffrade tabellen kan bara användas inom samma frågekörning. I exemplet kan du alltså inte använda buffrade data när Query3 och Query4 körs om Query1 buffrade data körs när fråga 2 körs. De själva buffar data två gånger till. (Det här resultatet kan i själva verket förvärra den negativa prestandan eftersom tabellen buffras av varje refererande fråga.)

Kommentar

Cachelagringsarkitekturen för Power Query är komplex och den är inte i fokus för den här artikeln. Power Query kan cachelagras data som hämtats från en datakälla. Men när den kör en fråga kan den hämta data från datakällan mer än en gång.

Rekommendationer

I allmänhet rekommenderar vi att du refererar till frågor för att undvika duplicering av logik i dina frågor. Enligt beskrivningen i den här artikeln kan den här designmetoden dock bidra till långsamma datauppdateringar och överbelastade datakällor.

Vi rekommenderar att du skapar ett dataflöde i stället. Om du använder ett dataflöde kan du förbättra datauppdateringstiden och minska påverkan på dina datakällor.

Du kan utforma dataflödet för att kapsla in källdata och transformeringar. Eftersom dataflödet är ett beständiga datalager i Power BI-tjänst är datahämtningen snabb. Så även när du refererar till frågor resulterar i flera begäranden för dataflödet kan datauppdateringstiderna förbättras.

Om Query1 i exemplet omdesignas som en dataflödesentitet kan Query2, Query3 och Query4 använda den som datakälla. Med den här designen utvärderas entiteten som hämtas av Query1 bara en gång.

Mer information om den här artikeln finns i följande resurser: