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.
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.
Een traceringsbestand openen:
Selecteer in SQL Server Profiler het traceringsbestand>>openen.
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
enQuery 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
enDirectQuery End
gebeurtenissen, die query's vertegenwoordigen die naar de onderliggende gegevensbron worden verzonden als onderdeel van het evalueren van de DAX-query.
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
enQuery End
gebeurtenissen is de details de DAX-query. VoorDirectQuery Begin
enDirectQuery 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:
Open één Power BI Desktop-sessie om verwarring in meerdere werkruimtemappen te voorkomen.
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.
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:
In de Power BI-visual definieert de volgende expressie de SalesAmount
meting:
SalesAmount = SUMX(Web_Sales, [ws_sales_price] * [ws_quantity])
Als u de visual vernieuwt, wordt de T-SQL-query in de volgende afbeelding gegenereerd. Er zijn drie subquery's voor de Web_Sales
tabellen , Item
en 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.
Gatewayprestaties
Zie Problemen met gateways oplossen - Power BI voor informatie over het oplossen van problemen met gatewayprestaties.
Gerelateerde inhoud
Raadpleeg de volgende bronnen voor meer informatie over DirectQuery:
- DirectQuery gebruiken in Power BI Desktop
- Gegevensbronnen die worden ondersteund door DirectQuery
- DirectQuery-modellen in Power BI Desktop
- Richtlijnen voor DirectQuery-modellen in Power BI Desktop
Vragen? Vraag het Power BI-community