Ř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.
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.
Otevření trasovacího souboru:
V SQL Server Profileru vyberte >Soubor Otevřít>trasovací soubor.
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
aQuery 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
aDirectQuery End
událostí, které představují dotazy odeslané do podkladového zdroje dat jako součást vyhodnocení dotazu DAX.
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
aQuery End
události jsou dotazem DAX.DirectQuery End
PodrobnostiDirectQuery 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:
Otevřete jednu relaci Power BI Desktopu, abyste se vyhnuli nejasnostem více složek pracovního prostoru.
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.
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 :
Ve vizuálu Power BI definuje SalesAmount
následující výraz míru:
SalesAmount = SUMX(Web_Sales, [ws_sales_price] * [ws_quantity])
Aktualizace vizuálu vytvoří dotaz T-SQL na následujícím obrázku. Existují tři poddotazy pro Web_Sales
tabulky , Item
a 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.
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.
Související obsah
Další informace o DirectQuery najdete v následujících zdrojích informací: