Sdílet prostřednictvím


Řešení potíží s modely DirectQuery v Power BI Desktopu

Tento článek vám pomůže diagnostikovat problémy s výkonem datových modelů Power BI DirectQuery, které vyvíjíte v Power BI Desktopu nebo služba Power BI. Článek také popisuje, jak získat podrobné informace, které vám pomůžou optimalizovat sestavy.

V Power BI Desktopu byste měli spustit jakoukoli diagnostiku problémů s výkonem, a ne v služba Power BI nebo Server sestav Power BI. Problémy s výkonem často závisejí na úrovni výkonu podkladového zdroje dat. Tyto problémy můžete snadněji identifikovat a diagnostikovat v izolovaném prostředí Power BI Desktopu, aniž byste museli zahrnovat komponenty, jako je místní brána.

Pokud v Power BI Desktopu nenajdete problémy s výkonem, můžete se zaměřit na specifika sestavy v služba Power BI.

Než se podíváte na mnoho vizuálů na stránce, měli byste se také pokusit izolovat problémy s jednotlivými vizuály.

Analyzátor výkonu

Analyzátor výkonu je užitečný nástroj pro identifikaci problémů s výkonem v průběhu procesu řešení potíží. Pokud můžete identifikovat jeden pomalý vizuál na stránce v Power BI Desktopu, můžete pomocí Analyzátor výkonu určit, jaké dotazy Power BI Desktop odesílá do podkladového zdroje.

Můžete také zobrazit trasování a diagnostické informace, které podkladové zdroje dat generují. Takové trasování může obsahovat užitečné informace o podrobnostech o tom, jak se dotaz spustil a jak ho vylepšit.

I bez trasování ze zdroje můžete zobrazit dotazy, které Power BI odeslal, spolu s jejich dobami provádění.

Poznámka:

U zdrojů založených na SQL DirectQuery Analyzátor výkonu zobrazí dotazy pouze pro zdroje dat SQL Server, Oracle a Teradata.

Trasovací soubor

Power BI Desktop ve výchozím nastavení protokoluje události během dané relace do trasovacího souboru s názvem FlightRecorderCurrent.trc. Trasovací soubor pro aktuální relaci najdete ve složce AppData aktuálního uživatele na adrese <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces.

Následující zdroje dat DirectQuery zapisují všechny dotazy, které Power BI odešle do trasovacího souboru. Protokol může v budoucnu podporovat další zdroje DirectQuery.

  • SQL Server
  • Azure SQL Database
  • Azure Synapse Analytics (dříve SQL Data Warehouse)
  • Oracle
  • Teradata
  • SAP HANA

Pokud se chcete v Power BI Desktopu snadno dostat ke složce trasovacího souboru, vyberte Možnosti souboru>a nastavení>Možnosti a pak vyberte Diagnostika.

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

V části Shromažďování výpisu stavu systému vyberte odkaz Otevřít složku výpisu stavu systému nebo trasování a otevřete <složku User>\AppData\Local\Microsoft\Power BI Desktop\Traces.

Přejděte do nadřazené složky této složky a otevřete složku AnalysisServicesWorkspaces , která obsahuje jednu podsložku pracovního prostoru pro každou otevřenou instanci Power BI Desktopu. Názvy podsložek mají celočíselné přípony, například AnalysisServicesWorkspace2058279583.

Každá složka AnalysisServicesWorkspace obsahuje podsložku Data , která obsahuje trasovací soubor FlightRecorderCurrent.trc pro aktuální relaci Power BI. Tato složka zmizí, když skončí přidružená relace Power BI Desktopu.

Trasovací soubory můžete otevřít pomocí nástroje SQL Server Profiler, který můžete získat jako součást bezplatného stažení aplikace SQL Server Management Studio (SSMS). Po stažení a instalaci aplikace SQL Server Management Studio otevřete SQL Server Profiler.

Screenshot of SQL Server Profiler window with no highlighted traces.

Otevření trasovacího souboru:

  1. V SQL Server Profileru vyberte >Soubor Otevřít>trasovací soubor.

  2. Přejděte nebo zadejte cestu k trasovacímu souboru pro aktuální relaci Power BI, například <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data a otevřete FlightRecorderCurrent.trc.

SQL Server Profiler zobrazí všechny události z aktuální relace. Následující snímek obrazovky zvýrazní skupinu událostí dotazu. Každá skupina dotazů má následující události:

  • A Query Begin a Query End událost, která představuje začátek a konec dotazu DAX vygenerovaného změnou vizuálu nebo filtru v uživatelském rozhraní Power BI nebo filtrováním nebo transformací dat v Editor Power Query.

  • Jedna nebo více dvojic DirectQuery Begin a DirectQuery End událostí, které představují dotazy odeslané do podkladového zdroje dat jako součást vyhodnocení dotazu DAX.

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

Paralelně může běžet několik dotazů DAX, takže události z různých skupin můžou prokládání. Hodnotu objektu ActivityID můžete použít k určení, které události patří do stejné skupiny.

Zajímají se také následující sloupce:

  • TextData: Textové podrobnosti události. Podrobnosti pro Query Begin a Query End události jsou dotazem DAX. DirectQuery End Podrobnosti DirectQuery Begin a události jsou dotazEM SQL odesílaný do podkladového zdroje. Hodnota TextData pro aktuálně vybranou událost se také zobrazí v podokně v dolní části obrazovky.
  • EndTime: Čas dokončení události.
  • Doba trvání: Doba trvání v milisekundách trvala spuštění dotazu DAX nebo SQL.
  • Chyba: Zda došlo k chybě, v takovém případě se událost zobrazuje červeně.

Předchozí obrázek zúží některé méně zajímavé sloupce, abyste viděli zajímavější sloupce snadněji.

Pomocí tohoto přístupu zachyťte trasování, které vám pomůže diagnostikovat potenciální problém s výkonem:

  1. Otevřete jednu relaci Power BI Desktopu, abyste se vyhnuli nejasnostem více složek pracovního prostoru.

  2. Proveďte sadu akcí, které jsou v Power BI Desktopu zajímavé. Zahrňte několik dalších akcí, abyste měli jistotu, že události zájmu vyprázdní do trasovacího souboru.

  3. Otevřete SQL Server Profiler a prozkoumejte trasování. Nezapomeňte, že zavření Power BI Desktopu odstraní trasovací soubor. Další akce v Power BI Desktopu se také okamžitě nezobrazí. Abyste viděli nové události, musíte trasovací soubor zavřít a znovu otevřít.

Udržujte jednotlivé relace přiměřeně malé, možná 10 sekund akcí, ne stovky. Tento přístup usnadňuje interpretaci trasovacího souboru. Existuje také omezení velikosti trasovacího souboru, takže u dlouhých relací existuje šance, že se události vyřadí.

Formát dotazu a poddotazů

Obecným formátem dotazů Power BI Desktopu je použití poddotazů pro každou tabulku modelu, na které odkazují dotazy. Dotaz Editor Power Query definuje dílčí výběr dotazů. Předpokládejme například, že máte v relační databázi SQL Serveru následující tabulky TPC-DS :

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

Ve vizuálu Power BI definuje SalesAmount následující výraz míru:


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

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

Aktualizace vizuálu vytvoří dotaz T-SQL na následujícím obrázku. Existují tři poddotazy pro Web_Salestabulky , Itema Date_dim model tabulky. Každý dotaz vrátí všechny sloupce tabulky modelu, i když vizuál odkazuje pouze na čtyři sloupce.

Tyto stínované poddotazy představují přesnou definici dotazů Power Query. Toto použití poddotazů nemá vliv na výkon pro zdroje dat, které DirectQuery podporuje. Zdroje dat, jako je SQL Server, optimalizují odkazy na ostatní sloupce.

Jedním z důvodů, proč Power BI tento vzor používá, je, abyste mohli definovat dotaz Power Query tak, aby používal konkrétní příkaz dotazu. Power BI použije dotaz podle potřeby bez pokusu o jeho přepsání. Tento vzor omezuje použití příkazů dotazu, které používají common Table Expressions (CTE) a uložené procedury. Tyto příkazy nemůžete použít v poddotazech.

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

Výkon brány

Informace o řešení potíží s výkonem brány najdete v tématu Řešení potíží s bránami – Power BI.

Další informace o DirectQuery najdete v následujících zdrojích informací:

Otázky? Zkuste se zeptat Komunita Power BI