Richtlijnen voor het vouwen van query's in Power BI Desktop

Dit artikel is bedoeld voor gegevensmodelleerders die modellen ontwikkelen in Power BI Desktop. Het biedt best practice richtlijnen voor wanneer en hoe u Power Query-query's kunt vouwen.

Query folding is de mogelijkheid voor een Power Query-query om één query-instructie te genereren waarmee brongegevens worden opgehaald en getransformeerd. Zie Het vouwen van Power Query-query's voor meer informatie.

Begeleiding

Richtlijnen voor het vouwen van query's verschillen op basis van de modelmodus.

Voor een DirectQuery - of Dual-opslagmodustabel moet de Power Query-query query's vouwen.

Voor een importtabel is het mogelijk om query folding te bereiken. Wanneer de query is gebaseerd op een relationele bron en als één SELECT-instructie kan worden samengesteld, kunt u de beste prestaties voor het vernieuwen van gegevens behalen door ervoor te zorgen dat query folding plaatsvindt. Als de Mashup-engine van Power Query nog steeds vereist is om transformaties te verwerken, moet u ernaar streven om het werk te minimaliseren dat nodig is, met name voor grote semantische modellen (voorheen gegevenssets genoemd).

De volgende lijst met opsommingstekens bevat specifieke richtlijnen.

  • Delegeer zoveel mogelijk verwerking naar de gegevensbron: wanneer alle stappen van een Power Query-query niet kunnen worden gevouwen, detecteert u de stap die het vouwen van query's voorkomt. Verplaats, indien mogelijk, latere stappen eerder in volgorde, zodat ze kunnen worden meegenomen in het vouwen van query's. Houd er rekening mee dat de Mashup-engine van Power Query slim genoeg is om de volgorde van uw querystappen te wijzigen wanneer de bronquery wordt gegenereerd.

    Als voor een relationele gegevensbron de stap die het vouwen van query's voorkomt, kan worden uitgevoerd in één SELECT-instructie, of in de procedurelogica van een opgeslagen procedure, kunt u overwegen een systeemeigen SQL-query te gebruiken, zoals hierna wordt beschreven.

  • Gebruik een systeemeigen SQL-query: wanneer een Power Query-query gegevens ophaalt uit een relationele bron, is het mogelijk dat sommige bronnen een systeemeigen SQL-query gebruiken. De query kan in feite elke geldige instructie zijn, inclusief een opgeslagen procedure-uitvoering. Als de instructie meerdere resultatensets produceert, wordt alleen de eerste geretourneerd. Parameters kunnen worden gedeclareerd in de instructie en we raden u aan de functie Value.NativeQuery M te gebruiken. Deze functie is ontworpen om veilig en gemakkelijk parameterwaarden door te geven. Het is belangrijk om te begrijpen dat de Mashup-engine van Power Query latere querystappen niet kan vouwen. Daarom moet u alle of net zoveel transformatielogica opnemen in de systeemeigen query-instructie.

    Er zijn twee belangrijke overwegingen waarmee u rekening moet houden bij het gebruik van systeemeigen SQL-query's:

    • Voor een DirectQuery-modeltabel moet de query een SELECT-instructie zijn en kan deze geen CTE's (Common Table Expressions) of een opgeslagen procedure gebruiken.
    • Incrementeel vernieuwen kan geen systeemeigen SQL-query gebruiken. Hierdoor dwingt u de Mashup-engine van Power Query af om alle bronrijen op te halen en vervolgens filters toe te passen om incrementele wijzigingen te bepalen.

    Belangrijk

    Een systeemeigen SQL-query kan mogelijk meer doen dan gegevens ophalen. Elke geldige instructie kan worden uitgevoerd (en mogelijk meerdere keren), inclusief een instructie waarmee gegevens worden gewijzigd of verwijderd. Het is belangrijk dat u het principe van minimale bevoegdheden toepast om ervoor te zorgen dat het account dat wordt gebruikt voor toegang tot de database alleen leesmachtigingen heeft voor de vereiste gegevens.

  • Gegevens in de bron voorbereiden en transformeren: wanneer u vaststelt dat bepaalde Power Query-querystappen niet kunnen worden gevouwen, is het mogelijk om de transformaties in de gegevensbron toe te passen. De transformaties kunnen worden bereikt door een databaseweergave te schrijven waarmee brongegevens logisch worden getransformeerd. Of door gegevens fysiek voor te bereiden en te materialiseren voordat Power BI er query's op uitvoert. Een relationeel datawarehouse is een uitstekend voorbeeld van voorbereide gegevens, meestal bestaande uit vooraf geïntegreerde bronnen van organisatorische gegevens.

Raadpleeg de volgende bronnen voor meer informatie over dit artikel: