Frågedelegering i Power Query

Den här artikeln riktar sig till datamodellerare som utvecklar modeller Power Pivot eller Power BI Desktop. Den beskriver vad Power Query frågedekning är och varför det är viktigt i din datamodelldesign. Den här artikeln beskriver också de datakällor och transformningar som kan uppnå frågedekning och hur du fastställer att dina Power Query-frågor kan viktas – helt eller delvis.

Frågedekning är möjligheten för en Power Query att generera en enda frågesats för att hämta och transformera källdata. Den Power Query kombinationsmotorn strävar efter att uppnå frågedekning när det är möjligt av effektivitetsskäl.

Frågedelegering är ett viktigt ämne inom datamodellering av flera anledningar:

  • Importera modelltabeller: Datauppdateringen sker effektivt för importmodelltabeller (Power Pivot eller Power BI Desktop), vad gäller resursanvändning och uppdateringstid.
  • DirectQuery- och dubbellagringslägestabeller: Varje DirectQuery- och tabell med dubbelt lagringsläge (endast Power BI) måste baseras på en Power Query fråga som kan viktas.
  • Inkrementell uppdatering: Inkrementell datauppdatering (endast Power BI) är effektiv när det gäller resursanvändning och uppdateringstid. Konfigurationsfönstret för Power BI uppdatering meddelar dig i själva verket om en varning om det inte går att uppnå frågedekning för tabellen. Om det inte går att uppnå kommer målet med inkrementell uppdatering att motverkas. Kombinationsmotorn skulle då behöva hämta alla källrader och sedan använda filter för att fastställa de inkrementella ändringarna.

Frågedelegering kan ske för en hel Power Query-fråga eller för en delmängd av stegen. När frågedekning inte kan uppnås, antingen delvis eller helt, Power Query kombinationsmotorn kompensera genom att bearbeta själva datatransformationerna. Den här processen kan innebära att hämta frågeresultat från källan, vilket för stora datamängder är mycket resurskrävande och långsamt.

Vi rekommenderar att du strävar efter att uppnå effektivitet i din modelldesign genom att säkerställa att frågedekning sker när det är möjligt.

Källor som stöder vikning

De flesta data källor som du kan använda frågespråk för har stöd för frågedelegering. De här datakällorna kan vara relationsdatabaser, OData-flöden (som SharePoint-listor), Exchange och Active Directory. Datakällor som flata filer, blobar och webbinnehåll har normalt inte det här stödet.

Omvandlingar som kan uppnå vikning

De transformationer i relationsdatakällan som kan delegeras är de som kan skrivas som en enda SELECT-instruktion. En SELECT-instruktion kan konstrueras med lämpliga WHERE-, GROUP BY- och JOIN-satser. De kan också innehålla kolumnuttryck (beräkningar) med vanliga inbyggda funktioner som stöds i SQL-databaser.

I allmänhet beskriver följande lista omvandlingar som kan frågas ihop.

  • Ta bort kolumner.

  • Byta namn på kolumner (SELECT-kolumnalias).

  • Filtrera rader, med statiska värden Power Query parametrar (WHERE-satsen predikat).

  • Gruppering och sammanfattning (GROUP BY-sats).

  • Expandera postkolumner (käll-främmande nyckelkolumner) för att uppnå en koppling av två källtabeller (JOIN-sats).

  • Icke-fuzzy-sammanslagning av vikningsbara frågor baserat på samma källa (JOIN-sats).

  • Lägga till de vilande frågor baserade på samma källa (UNION ALL-operatorn).

  • Lägga till anpassade kolumner med enkel logik (SELECT kolumnuttryck). Enkel logik innebär komplicerade åtgärder, inklusive användning av M-funktioner som har motsvarande funktioner i SQL-datakällan, till exempel matematik- eller textmanipuleringsfunktioner. Följande uttryck returnerar till exempel årskomponenten för kolumnvärdet OrderDate (för att returnera ett numeriskt värde).

    Date.Year([OrderDate])
    
  • Pivotering och avpivotering (pivot- och UNPIVOT-operatorer).

Omvandlingar som förhindrar vikning

I allmänhet beskriver följande lista omvandlingar som förhindrar frågedekning. Den här listan är inte avsedd att vara en fullständig lista.

  • Slå ihop frågor baserat på olika källor.

  • Förslag på (union-ing) frågor baserat på olika källor.

  • Lägga till anpassade kolumner med komplicerad logik. Komplicerad logik avser användning av M-funktioner som inte har några motsvarande funktioner i datakällan. Följande uttryck formaterar till exempel kolumnvärdet OrderDate (för att returnera ett textvärde).

    Date.ToText([OrderDate], "yyyy")
    
  • Lägga till indexkolumner.

  • Ändra en kolumndatatyp.

När en Power Query-fråga omfattar flera datakällor och datakällornas sekretessnivåer är inkompatibla så kan detta förhindra frågedelegering. Mer information finns i artikeln Power BI Desktop sekretessnivåer.

Avgöra när en fråga kan delegeras

I Power Query editor-fönstret kan du avgöra när en Power Query fråga kan viktas. När du högerklickar på det senaste tillämpade steget i fönstret Fråga Inställningar alternativet Visa intern fråga är aktiverat (inte nedtonat) kan hela frågan viktas.

Exempel på att fastställa att Power Query kan uppnå frågedekning i Power BI Desktop.

Anteckning

Alternativet Visa intern fråga är endast tillgängligt för vissa relations-DB/SQL genererar anslutningsappar. Det fungerar inte för OData-baserade anslutningsappar, till exempel även om det sker vikning på backend-sidan. Funktionen Frågediagnostik är det bästa sättet att se vilken vikning som har skett för icke-SQL-anslutningsappar (även om stegen som viker inte uttryckligen anges ser du bara den resulterande URL:en som — genererades).

Om du vill visa den vikta frågan väljer du alternativet Visa intern fråga. Du får sedan se den interna fråga som Power Query ska använda för källdata.

Exempel på en intern fråga i Power BI Desktop.

Om alternativet Visa intern fråga inte är aktiverat (nedtonat) är det bevis på att inte alla frågesteg kan viktas. Det kan dock vara så att en delmängd av stegen fortfarande kan delegeras. Om du arbetar bakåt från det sista steget kan du kontrollera varje steg för att se om alternativet Visa intern fråga är aktiverat. I så fall har du lärt dig var frågedekning inte längre kunde uppnås i sekvensen med steg.

Exempel på att fastställa att Power Query inte kan uppnå frågedekning i Power BI Desktop.

Nästa steg

Mer information om frågedekning och relaterade artiklar finns i följande resurser: