Delen via


Problemen met DirectQuery-modellen in Power BI Desktop oplossen

Dit artikel helpt u bij het vaststellen van prestatieproblemen met Power BI DirectQuery-gegevensmodellen die u ontwikkelt in Power BI Desktop of de Power BI-service. In het artikel wordt ook beschreven hoe u gedetailleerde informatie krijgt om u te helpen rapporten te optimaliseren.

U moet een diagnose van prestatieproblemen in Power BI Desktop starten in plaats van in de Power BI-service of Power BI Report Server. Prestatieproblemen zijn vaak afhankelijk van het prestatieniveau van de onderliggende gegevensbron. U kunt deze problemen gemakkelijker identificeren en diagnosticeren in de geïsoleerde Power BI Desktop-omgeving, zonder dat hiervoor onderdelen nodig zijn, zoals een on-premises gateway.

Als u de prestatieproblemen in Power BI Desktop niet vindt, kunt u zich richten op de details van het rapport in de Power BI-service.

U moet ook proberen problemen te isoleren voor een afzonderlijke visual voordat u veel visuals op een pagina bekijkt.

Performance Analyzer

Performance Analyzer is een handig hulpmiddel voor het identificeren van prestatieproblemen tijdens het probleemoplossingsproces. Als u één traag visueel element op een pagina in Power BI Desktop kunt identificeren, kunt u Performance Analyzer gebruiken om te bepalen welke query's Power BI Desktop naar de onderliggende bron verzendt.

Mogelijk kunt u ook traceringen en diagnostische gegevens bekijken die door de onderliggende gegevensbronnen worden verzonden. Dergelijke traceringen kunnen nuttige informatie bevatten over de details van hoe de query wordt uitgevoerd en hoe u deze kunt verbeteren.

Zelfs zonder traceringen uit de bron kunt u de query's bekijken die door Power BI zijn verzonden, samen met de uitvoeringstijden.

Notitie

Voor DirectQuery SQL-bronnen toont Performance Analyzer alleen query's voor SQL Server-, Oracle- en Teradata-gegevensbronnen.

Traceringsbestand

Standaard registreert Power BI Desktop gebeurtenissen tijdens een bepaalde sessie naar een traceringsbestand met de naam FlightRecorderCurrent.trc. U vindt het traceringsbestand voor de huidige sessie in de map AppData voor de huidige gebruiker op <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces.

Met de volgende DirectQuery-gegevensbronnen worden alle query's geschreven die door Power BI naar het traceringsbestand worden verzonden. Het logboek ondersteunt in de toekomst mogelijk andere DirectQuery-bronnen.

  • SQL Server
  • Azure SQL Database
  • Azure Synapse Analytics (voorheen Azure SQL Data Warehouse)
  • Oracle
  • Teradata
  • SAP HANA

Als u eenvoudig naar de map traceringsbestand in Power BI Desktop wilt gaan, selecteert u Bestandsopties>en instellingenopties> en selecteert u vervolgens Diagnostische gegevens.

Screenshot of the Diagnostics section of the Power BI Desktop Options screen with the link to open the crash dump/traces folder.

Selecteer onder CrashDumpverzameling de map Openen crashdump/traceringen om de <map User>\AppData\Local\Microsoft\Power BI Desktop\Traces te openen.

Navigeer naar de bovenliggende map van die map en open vervolgens de map AnalysisServicesWorkspaces , die één werkruimtesubmap bevat voor elk geopend exemplaar van Power BI Desktop. De namen van de submappen hebben achtervoegsels voor gehele getallen, zoals AnalysisServicesWorkspace2058279583.

Elke map AnalysisServicesWorkspace bevat een gegevenssubmap die het traceringsbestand FlightRecorderCurrent.trc voor de huidige Power BI-sessie bevat. Deze map verdwijnt wanneer de bijbehorende Power BI Desktop-sessie wordt beëindigd.

U kunt de traceringsbestanden openen met behulp van het hulpprogramma SQL Server Profiler, dat u kunt krijgen als onderdeel van de gratis SSMS-download (SQL Server Management Studio). Nadat u SQL Server Management Studio hebt gedownload en geïnstalleerd, opent u SQL Server Profiler.

Screenshot of SQL Server Profiler window with no highlighted traces.

Een traceringsbestand openen:

  1. Selecteer in SQL Server Profiler het traceringsbestand>>openen.

  2. Navigeer naar of voer het pad in naar het traceringsbestand voor de huidige Power BI-sessie, zoals <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data, en open FlightRecorderCurrent.trc.

SQL Server Profiler geeft alle gebeurtenissen uit de huidige sessie weer. In de volgende schermopname ziet u een groep gebeurtenissen voor een query. Elke querygroep heeft de volgende gebeurtenissen:

  • A Query Begin en Query End gebeurtenis, die het begin en einde van een DAX-query vertegenwoordigen die worden gegenereerd door een visual of filter in de Power BI-gebruikersinterface te wijzigen, of gegevens te filteren of transformeren in de Power Query-editor.

  • Een of meer paren DirectQuery Begin en DirectQuery End gebeurtenissen, die query's vertegenwoordigen die naar de onderliggende gegevensbron worden verzonden als onderdeel van het evalueren van de DAX-query.

Screenshot of SQL Server Profiler with highlighted Query Begin and Query End events.

Meerdere DAX-query's kunnen parallel worden uitgevoerd, zodat gebeurtenissen van verschillende groepen kunnen worden opgeslagen. U kunt de waarde van de ActivityID groep gebruiken om te bepalen welke gebeurtenissen deel uitmaken van dezelfde groep.

De volgende kolommen zijn ook van belang:

  • TextData: de tekstdetails van de gebeurtenis. Voor Query Begin en Query End gebeurtenissen is de details de DAX-query. Voor DirectQuery Begin en DirectQuery End gebeurtenissen is de details de SQL-query die naar de onderliggende bron wordt verzonden. De TextData-waarde voor de geselecteerde gebeurtenis wordt ook weergegeven in het deelvenster onder aan het scherm.
  • EndTime: het tijdstip waarop de gebeurtenis is voltooid.
  • Duur: De duur, in milliseconden, duurde om de DAX- of SQL-query uit te voeren.
  • Fout: Of er een fout is opgetreden, in welk geval de gebeurtenis ook rood wordt weergegeven.

De voorgaande afbeelding beperkt enkele van de minder interessante kolommen, zodat u de interessantere kolommen gemakkelijker kunt zien.

Volg deze methode om een trace vast te leggen om een mogelijk prestatieprobleem vast te stellen:

  1. Open één Power BI Desktop-sessie om verwarring in meerdere werkruimtemappen te voorkomen.

  2. Voer de reeks acties uit die van belang zijn in Power BI Desktop. Voeg nog enkele acties toe om ervoor te zorgen dat de gebeurtenissen van belang in het traceringsbestand worden leeggemaakt.

  3. Open SQL Server Profiler en bekijk de tracering. Houd er rekening mee dat als u Power BI Desktop sluit, het traceringsbestand wordt verwijderd. Ook worden verdere acties in Power BI Desktop niet onmiddellijk weergegeven. U moet het traceringsbestand sluiten en opnieuw openen om nieuwe gebeurtenissen te kunnen zien.

Houd afzonderlijke sessies redelijk klein, misschien 10 seconden aan acties, niet honderden. Deze methode maakt het gemakkelijker om het traceringsbestand te interpreteren. Er is ook een limiet voor de grootte van het traceringsbestand, dus voor lange sessies is er een kans dat vroege gebeurtenissen worden verwijderd.

Query- en subquery-indeling

De algemene indeling van Power BI Desktop-query's is het gebruik van subquery's voor elke modeltabel waarnaar de query's verwijzen. De Power Query-editor query definieert de subselectiequery's. Stel dat u de volgende TPC-DS-tabellen hebt in een relationele SQL Server-database:

Screenshot of a Power BI Desktop model view diagram that shows the related Item, Web_Sales, Customer and Date-dim TPC-DS tables.

In de Power BI-visual definieert de volgende expressie de SalesAmount meting:


SalesAmount = SUMX(Web_Sales, [ws_sales_price] * [ws_quantity])

Screenshot of a Power BI Desktop stacked column chart that displays sales amount by category.

Als u de visual vernieuwt, wordt de T-SQL-query in de volgende afbeelding gegenereerd. Er zijn drie subquery's voor de Web_Salestabellen , Itemen Date_dim modeltabellen. Elke query retourneert alle modeltabelkolommen, ook al verwijst de visual slechts naar vier kolommen.

Deze gearceerde subquery's zijn de exacte definitie van de Power Query-query's. Dit gebruik van subquery's heeft geen invloed op de prestaties voor de DirectQuery-gegevensbronnen. Gegevensbronnen zoals SQL Server optimaliseren de verwijzingen naar de andere kolommen.

Een van de redenen waarom Power BI dit patroon gebruikt, is dat u een Power Query-query kunt definiëren om een specifieke query-instructie te gebruiken. Power BI maakt gebruik van de query zoals opgegeven, zonder dat u deze opnieuw wilt schrijven. Dit patroon beperkt het gebruik van query-instructies die CTE's (Common Table Expressions) en opgeslagen procedures gebruiken. U kunt deze instructies niet gebruiken in subquery's.

Screenshot of a T-SQL query that shows embedded subqueries, one for each model table.

Gatewayprestaties

Zie Problemen met gateways oplossen - Power BI voor informatie over het oplossen van problemen met gatewayprestaties.

Raadpleeg de volgende bronnen voor meer informatie over DirectQuery:

Vragen? Vraag het Power BI-community