Foretag fejlfinding af DirectQuery-modeller i Power BI Desktop

Denne artikel hjælper dig med at diagnosticere problemer med ydeevnen med Power BI DirectQuery-datamodeller, som du udvikler i Power BI Desktop eller Power BI-tjeneste. I artiklen beskrives det også, hvordan du får detaljerede oplysninger, der kan hjælpe dig med at optimere rapporter.

Du bør starte en hvilken som helst diagnosticering af problemer med ydeevnen i Power BI Desktop i stedet for i Power BI-tjeneste eller Power BI-rapportserver. Problemer med ydeevnen afhænger ofte af ydeevnen for den underliggende datakilde. Du kan nemmere identificere og diagnosticere disse problemer i det isolerede Power BI Desktop-miljø uden at involvere komponenter som en gateway i det lokale miljø.

Hvis du ikke kan finde problemer med ydeevnen i Power BI Desktop, kan du fokusere din undersøgelse på de specifikke oplysninger om rapporten i Power BI-tjeneste.

Du bør også forsøge at isolere problemer til en individuel visualisering, før du ser på mange visualiseringer på en side.

Effektivitetsanalyse

Effektivitetsanalyse er et nyttigt værktøj til at identificere problemer med ydeevnen under fejlfindingsprocessen. Hvis du kan identificere en enkelt langsom visualisering på en side i Power BI Desktop, kan du bruge Effektivitetsanalyse til at bestemme, hvilke forespørgsler Power BI Desktop sender til den underliggende kilde.

Du kan muligvis også få vist sporings- og diagnosticeringsoplysninger, som de underliggende datakilder udsender. Sådanne sporinger kan indeholde nyttige oplysninger om, hvordan forespørgslen blev udført, og hvordan den kan forbedres.

Selv uden sporinger fra kilden kan du få vist de forespørgsler, Power BI har sendt, sammen med deres udførelsestider.

Bemærk

For DirectQuery SQL-baserede kilder viser Effektivitetsanalyse kun forespørgsler for SQL Server-, Oracle- og Teradata-datakilder.

Sporingsfil

Power BI Desktop logfører som standard hændelser i en given session til en sporingsfil med navnet FlightRecorderCurrent.trc. Du kan finde sporingsfilen for den aktuelle session i mappen AppData for den aktuelle bruger på< User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces.

Følgende DirectQuery-datakilder skriver alle de forespørgsler, som Power BI sender til sporingsfilen. Logfilen understøtter muligvis andre DirectQuery-kilder i fremtiden.

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

Hvis du nemt vil have adgang til mappen med sporingsfiler i Power BI Desktop, skal du vælge Filindstillinger>>Indstillinger og derefter vælge Diagnosticering.

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

Under Samling af nedbrudsdump skal du vælge linket Åbn crashdump/sporingsmappe for at åbne mappen <User>\AppData\Local\Microsoft\Power BI Desktop\Traces .

Gå til mappens overordnede mappe, og åbn derefter mappen AnalysisServicesWorkspaces , som indeholder én undermappe til arbejdsområdet for hver åbne forekomst af Power BI Desktop. Navne på undermapper har heltalssuffikser, f.eks . AnalysisServicesWorkspace2058279583.

Hver AnalysisServicesWorkspace-mappe indeholder en dataundermappe , der indeholder sporingsfilen FlightRecorderCurrent.trc for den aktuelle Power BI-session. Denne mappe forsvinder, når den tilknyttede Power BI Desktop-session slutter.

Du kan åbne sporingsfilerne ved hjælp af værktøjet SQL Server Profiler, som du kan få som en del af den gratis download af SQL Server Management Studio (SSMS). Når du har downloadet og installeret SQL Server Management Studio, skal du åbne SQL Server Profiler.

Screenshot of SQL Server Profiler window with no highlighted traces.

Sådan åbner du en sporingsfil:

  1. I SQL Server Profiler skal du vælge Filer>Åbn>sporingsfil.

  2. Gå til eller angiv stien til sporingsfilen for den aktuelle Power BI-session, f.eks <. User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data, og åbn FlightRecorderCurrent.trc.

SQL Server Profiler viser alle hændelser fra den aktuelle session. På følgende skærmbillede fremhæves en gruppe af hændelser for en forespørgsel. Hver forespørgselsgruppe har følgende hændelser:

  • En Query Begin og Query End -hændelse, der repræsenterer starten og slutningen af en DAX-forespørgsel, der genereres ved at ændre en visualisering eller et filter i Brugergrænsefladen i Power BI eller fra at filtrere eller transformere data i Power Query-editor.

  • Et eller flere par af DirectQuery Begin hændelserne og DirectQuery End , som repræsenterer forespørgsler, der er sendt til den underliggende datakilde som en del af evalueringen af DAX-forespørgslen.

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

Flere DAX-forespørgsler kan køre parallelt, så hændelser fra forskellige grupper kan flettes. Du kan bruge værdien for ActivityID til at bestemme, hvilke hændelser der tilhører den samme gruppe.

Følgende kolonner er også interessante:

  • TextData: Hændelsens tekstdetaljer. For Query Begin og Query End -hændelser er detaljerne DAX-forespørgslen. For DirectQuery Begin og DirectQuery End -hændelser er detaljen den SQL-forespørgsel, der sendes til den underliggende kilde. Værdien TextData for den aktuelt valgte hændelse vises også i ruden nederst på skærmen.
  • EndTime: Det tidspunkt, hvor hændelsen blev fuldført.
  • Varighed: I millisekunder tog det at køre DAX- eller SQL-forespørgslen.
  • Fejl: Om der opstod en fejl, og i så fald vises hændelsen også med rødt.

Det foregående billede indsnævrer nogle af de mindre interessante kolonner, så du nemmere kan se de mere interessante kolonner.

Følg denne fremgangsmåde for at registrere en sporing for at hjælpe med at diagnosticere et potentielt problem med ydeevnen:

  1. Åbn en enkelt Power BI Desktop-session for at undgå forvirring i forbindelse med flere arbejdsområdemapper.

  2. Gør det sæt handlinger, der er interessante i Power BI Desktop. Medtag nogle flere handlinger for at sikre, at de interessante hændelser ryddes ind i sporingsfilen.

  3. Åbn SQL Server Profiler, og undersøg sporingen. Husk, at hvis du lukker Power BI Desktop, slettes sporingsfilen. Desuden vises yderligere handlinger i Power BI Desktop ikke med det samme. Du skal lukke sporingsfilen og åbne den igen for at få vist nye hændelser.

Bevar individuelle sessioner, der er rimeligt små, måske 10 sekunders handlinger, ikke hundredvis. Denne fremgangsmåde gør det nemmere at fortolke sporingsfilen. Der er også en grænse for størrelsen på sporingsfilen, så for lange sessioner er der risiko for, at tidlige hændelser falder.

Forespørgsels- og underforespørgselsformat

Det generelle format for Power BI Desktop-forespørgsler er at bruge underforespørgsler for hver modeltabel, som forespørgselsreferencen henviser til. Forespørgslen Power Query-editor definerer undermarkeringsforespørgslerne. Antag f.eks., at du har følgende TPC-DS-tabeller i en SQL Server-relationsdatabase:

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

I Power BI-visualiseringen definerer følgende udtryk målingen SalesAmount :


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

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

Opdatering af visualiseringen opretter T-SQL-forespørgslen på følgende billede. Der er tre underforespørgsler for modeltabellerne Web_Sales, Itemog Date_dim . Hver forespørgsel returnerer alle kolonner i modeltabellen, selvom visualiseringen kun refererer til fire kolonner.

Disse skyggelagte underforespørgsler er den nøjagtige definition af Power Query-forespørgslerne. Denne brug af underforespørgsler påvirker ikke ydeevnen for de datakilder, som DirectQuery understøtter. Datakilder som SQL Server optimerer henvisningerne til de andre kolonner væk.

En af grundene til, at Power BI bruger dette mønster, er, at du kan definere en Power Query-forespørgsel for at bruge en bestemt forespørgselssætning. Power BI bruger forespørgslen som angivet uden et forsøg på at omskrive den. Dette mønster begrænser brugen af forespørgselssætninger, der bruger CTE'er (Common Table Expressions) og lagrede procedurer. Du kan ikke bruge disse sætninger i underforespørgsler.

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

Gatewayydeevne

Du kan finde oplysninger om fejlfinding af gatewayens ydeevne under Fejlfinding af gateways – Power BI.

Du kan finde flere oplysninger om DirectQuery i følgende ressourcer:

Spørgsmål? Prøv at spørge Power BI-community'et