Informace o použití DirectQuery v Power BIAbout using DirectQuery in Power BI

Když používáte Power BI Desktop nebo službu Power BI, můžete se připojit ke všem možným druhům zdrojů dat a různými způsoby tato datová připojení vytvářet.You can connect to all sorts of different data sources when using Power BI Desktop or the Power BI service, and make those data connections in different ways. Do Power BI můžete data importovat, což je nejběžnější způsob, jak získat data. K datům v původním zdrojovém úložišti se také můžete připojit přímo. Tento způsob se označuje jako DirectQuery.You can import data to Power BI, which is the most common way to get data, or connect directly to data in the original source repository, which is known as DirectQuery. V tomto článku jsou popsané funkce DirectQuery:This article describes DirectQuery capabilities:

  • Různé možnosti připojení DirectQueryDifferent connectivity options for DirectQuery
  • Pokyny, kdy zvážit použití DirectQuery místo importování.Guidance for when you should consider using DirectQuery rather than import
  • Nevýhody použití DirectQueryDrawbacks of using DirectQuery
  • Osvědčené postupy při používání DirectQueryBest practices for using DirectQuery

Osvědčené postupy použijte při rozhodování, jestli použít import nebo DirectQuery:Follow best practices for using import versus DirectQuery:

  • Kdykoli je to možné, měli byste data do Power BI importovat.You should import data to Power BI wherever possible. Při importu se využívá výkonný dotazovací modul Power BI, který nabízí interaktivní prostředí s řadou funkcí.Importing takes advantage of the high performance query engine of Power BI, and provides a highly interactive and fully featured experience.
  • Pokud import dat není pro vaše účely vhodný, zvažte použití DirectQuery.If your goals can't be met by importing data, consider using DirectQuery. Například pokud se data často mění a sestavy musí odpovídat nejnovějším datům, může být DirectQuery vhodnější volbou.For example, if the data is changing frequently and reports must reflect the latest data, DirectQuery may be best. Režim DirectQuery je vhodný, jen pokud související zdroj dat dokáže zpracovat interaktivní dotazy za méně než 5 sekund (v případě typického agregovaného dotazu) a zvládne zatížení, které takový dotaz vygeneruje.However, using DirectQuery is only feasible when the underlying data source can provide interactive queries, less than 5 seconds for the typical aggregate query, and can handle the query load that will be generated. Dále je potřeba pečlivě zvážit seznam omezení, který se týká použití DirectQuery.Additionally, the list of limitations for the use of DirectQuery should be considered carefully.

Sada funkcí, kterou Power BI nabízí pro import a DirectQuery se postupně vyvíjí.The set of capabilities offered by Power BI for import and DirectQuery evolve over time. Změny se týkají flexibilnějšího používání importovaných dat, aby bylo možné import používat ve více případech, a vyloučení některých nevýhod při používání DirectQuery.Changes will include providing more flexibility when using imported data, such that import can be used in more cases and eliminating some of the drawbacks of using DirectQuery. Bez ohledu na tato vylepšení platí, že při používání DirectQuery je rozhodující výkon souvisejícího zdroje dat.Regardless of improvements, when using DirectQuery, the performance of the underlying data source always remains a major consideration. U pomalého zdroje dat nebude použití DirectQuery reálné.If that underlying data source is slow, using DirectQuery for that source will remain unfeasible.

Tento článek se zabývá DirectQuery s Power BI, nikoli se službou SQL Server Analysis Services.This article covers DirectQuery with Power BI, and not SQL Server Analysis Services. DirectQuery je také funkcí služby SQL Server Analysis Services.DirectQuery is also a feature of SQL Server Analysis Services. Proto řada podrobností popisovaných v tomto článku platí i pro tuto funkci.Many of the details described in this article apply to that feature. Nicméně jsou zde také důležité rozdíly.There are also important differences. Informace o použití DirectQuery se službou SQL Server Analysis Services najdete v článku DirectQuery ve službě SQL Server 2016 Analysis Services.For information about using DirectQuery with SQL Server Analysis Services, see DirectQuery in SQL Server 2016 Analysis Services.

Tento článek se zaměřuje na doporučený pracovní postup použití DirectQuery, při kterém se sestava vytváří v Power BI Desktopu. Ale vysvětluje také postup přímého připojení ve službě Power BI.This article focuses on the recommended workflow for DirectQuery, where the report is created in Power BI Desktop, but also covers connecting directly in the Power BI service.

Režimy připojení Power BIPower BI connectivity modes

Power BI se může připojit k množství různých zdrojů dat, mezi které patří:Power BI connects to a large number of varied data sources, encompassing:

  • Online služby (Salesforce, Dynamics 365 a jiné)Online services (Salesforce, Dynamics 365, others)
  • Databáze (SQL Server, Access, Amazon Redshift a jiné)Databases (SQL Server, Access, Amazon Redshift, others)
  • Jednoduché soubory (Excel, JSON a jiné)Simple files (Excel, JSON, others)
  • Jiné zdroje dat (Spark, webové stránky, Microsoft Exchange a jiné)Other data sources (Spark, Web sites, Microsoft Exchange, others)

U těchto zdrojů je možné data do Power BI importovat.For these sources, it's possible to import the data to Power BI. K některým se také můžete připojit pomocí DirectQuery.For some, it's also possible to connect using DirectQuery. Souhrnné informace o zdrojích, které podporují DirectQuery, najdete v tématu Zdroje dat podporované metodou DirectQuery.For a summary of the sources that support DirectQuery, see Data Sources supported by DirectQuery. Do budoucna plánujeme u DirectQuery přidat podporu dalších zdrojů dat. Zaměřujeme se hlavně na zdroje, u kterých je možné v rámci interaktivních dotazů očekávat poskytnutí dobrého výkonu.More sources will be DirectQuery enabled in the future, focusing primarily on sources that can be expected to deliver good interactive query performance.

Služba SQL Server Analysis Services je zvláštní případ.SQL Server Analysis Services is a special case. Když se připojujete k SQL Server Analysis Services, můžete zvolit import dat nebo použít živé připojení.When connecting to SQL Server Analysis Services, you can choose to import the data or use a live connection. Živé připojení se podobá DirectQuery.Using a live connection is similar to DirectQuery. Žádná data se neimportují a do souvisejícího zdroje dat se vždy posílá dotaz, který aktualizuje vizuál.No data is imported and the underlying data source is always queried to refresh a visual. Živé připojení se v řadě věcí liší, a proto se používá výraz živé připojení, aby se odlišilo od DirectQuery.A live connection is different in many other regards, so a different term, live connection versus DirectQuery, is used.

Existují tři možnosti připojení dat: import, DirectQueryživé připojení.These three options for connecting to data: import, DirectQuery, and live connection.

Připojení importuImport connections

Když při importu použijete v Power BI Desktopu příkaz Získat data, kterým se připojíte ke zdroji dat, třeba k SQL Serveru, chová se připojení následovně:For import, when using Get Data in Power BI Desktop to connect to a data source like SQL Server, the behavior of that connection is as follows:

  • Na začátku provedení příkazu Get Data se pro každou sadu vybraných tabulek definuje dotaz, který vrátí sadu dat.During the initial Get Data experience, the set of tables selected each define a query that will return a set of data. Tyto dotazy je možné před načtením dat upravit. Můžete třeba použít filtry, agregovat data nebo spojit různé tabulky.Those queries can be edited before loading the data, for example, to apply filters, or aggregate the data, or join different tables.
  • Při načítání se všechna data definovaná těmito dotazy naimportují do mezipaměti Power BI.Upon load, all of the data defined by those queries will be imported into the Power BI cache.
  • Při vytvoření vizuálu v Power BI Desktopu se zadá dotaz do importovaných dat.Upon building a visual within Power BI Desktop, the imported data will be queried. Díky uložení do Power BI proběhne dotaz rychle.The Power BI store ensures the query will be fast. Všechny změny vizuálu se promítnou ihned.All changes to the visual are reflected immediately.
  • Změny souvisejících dat se do vizuálů nepromítnou.Any changes to the underlying data aren't reflected in any visuals. Je potřeba data aktualizovat, aby znovu proběhl import.It's necessary to Refresh to reimport data.
  • Při publikování sestavy do souboru .pbix služby Power BI se vytvoří datová sada, která se nahraje do služby Power BI.Upon publishing the report as a .pbix file to the Power BI service, a dataset is created and uploaded to the Power BI service. Importovaná data jsou této datové sady součástí.The imported data is included with that dataset. Pak je možné naplánovat aktualizaci těchto dat, například jejich každodenní import.It's then possible to schedule refresh of that data, for example, to reimport the data every day. V závislosti na umístění původního zdroje dat bude možná potřeba nakonfigurovat místní bránu dat.Depending upon the location of the original data source, it might be necessary to configure an on-premises data gateway.
  • Když ve službě Power BI otevíráte existující sestavu nebo vytváříte novou sestavu, znovu se kvůli zachování interaktivity provede dotaz do importovaných dat.When opening an existing report in the Power BI service, or authoring a new report, the imported data is queried again, ensuring interactivity.
  • Vizuály nebo celé stránky sestav je možné připnout jako dlaždice řídicího panelu.Visuals, or entire report pages, can be pinned as dashboard tiles. Dlaždice se aktualizují automaticky při každé aktualizaci datové sady.The tiles automatically refresh whenever the underlying dataset refreshes.

Připojení DirectQueryDirectQuery connections

Když při připojení DirectQuery použijete v Power BI Desktopu příkaz Získat data, abyste se připojili ke zdroji dat, chová se připojení následovně:For DirectQuery, when using Get Data in Power BI Desktop to connect to a data source, the behavior of that connection is as follows:

  • V počáteční fázi příkazu Získat data se vybere zdroj.During the initial Get Data experience, the source is selected. U relačních zdrojů se vybere sada tabulek. Každá z nich stále definuje dotaz, který logicky vrátí sadu dat.For relational sources, a set of tables are selected and each still define a query that logically returns a set of data. U multidimenzionálních zdrojů jako SAP BW se vybere pouze zdroj.For multidimensional sources, like SAP BW, only the source is selected.
  • Při načtení se do úložiště Power BI ale neimportují žádná data.However, upon load, no data is imported into the Power BI store. Místo toho se při vytvoření vizuálu v Power BI dotazy odešlou do souvisejícího zdroje dat, aby se načetla potřebná data.Instead, upon building a visual within Power BI Desktop, queries are sent to the underlying data source to retrieve the necessary data. Doba aktualizace vizuálu závisí na výkonu souvisejícího zdroje dat.The time taken to refresh the visual depends on the performance of the underlying data source.
  • Změny souvisejících dat se do stávajících vizuálů hned nepromítnou.Any changes to the underlying data aren't immediately reflected in any existing visuals. Stále je potřeba provést aktualizaci.It's still necessary to refresh. Dotazy potřebné pro každý vizuál se odesílají znovu a vizuál se podle potřeby aktualizuje.The necessary queries are resent for each visual, and the visual is updated as necessary.
  • Při publikování sestavy do služby Power BI se ve službě Power BI znovu vytvoří datová sada – stejně jako při importu.Upon publishing the report to the Power BI service, it will again result in a dataset in the Power BI service, the same as for import. Součástí této datové sady ale nejsou žádná data.However, no data is included with that dataset.
  • Při otevření stávající sestavy ve službě Power BI nebo při vytváření nové sestavy se do souvisejícího zdroje dat znovu odešle dotaz, který načte potřebná data.When opening an existing report in the Power BI service, or authoring a new one, the underlying data source is again queried to retrieve the necessary data. V závislosti na umístění původního zdroje dat možná bude potřeba nakonfigurovat místní bránu dat. Je to stejné jako při aktualizaci dat v režimu importu.Depending upon the location of the original data source, it might be necessary to configure an on-premises data gateway, as is needed for import mode if the data is refreshed.
  • Vizuály nebo celé stránky sestav je možné připnout jako dlaždice řídicího panelu.Visuals, or entire report pages, can be pinned as Dashboard tiles. Aby bylo otevření řídicího panelu rychlé, aktualizují se dlaždice automaticky podle plánu, třeba každou hodinu.To ensure that opening a dashboard is fast, the tiles are automatically refreshed on a schedule, for example, every hour. Frekvenci aktualizace můžete řídit, aby odpovídala četnosti změn dat a potřebě vidět nejnovější data.The frequency of this refresh can be controlled, to reflect how frequently the data is changing, and how important it's to see the latest data. Při otevření řídicího panelu odpovídají dlaždice datům v okamžiku poslední aktualizace, nikoliv nejnovějším změnám souvisejícího zdroje.When opening a dashboard, the tiles reflect the data at the time of the last refresh, and not necessarily the latest changes made to the underlying source. Otevřený řídicí panel můžete aktualizovat, abyste měli jistotu, že je aktuální.You can refresh an open dashboard to ensure it's current.

Živá připojeníLive connections

Při připojení k SQL Server Analysis Services buď můžete data z vybraného datového modelu importovat, nebo se k němu můžete připojit živě.When connecting to SQL Server Analysis Services, there's an option to either import data from or connect live to, the selected data model. Pokud použijete import, definujete dotaz do externího zdroje služby SQL Server Analysis Services a data se importují obvyklým způsobem.If you use import, you define a query against that external SQL Server Analysis Services source, and the data is imported as normal. Pokud použijete živé připojení, nedefinujete dotaz, protože se v seznamu polí zobrazí celý externí model.If you use connect live, there's no query defined, and the entire external model is shown in the field list.

Situace popsaná v předchozím odstavci platí i pro připojování k následujícím zdrojům s tím rozdílem, že neexistuje možnost importu dat:The situation described in the previous paragraph applies to connecting to the following sources as well, except that there's no option to import the data:

  • Datové sady Power BI, například při připojení k datové sadě Power BI, která byla ve službě vytvořena a publikována už dříve, a teď z ní chcete vytvořit novou sestavu.Power BI datasets, for example, when connecting to a Power BI dataset that has previously been created and published to the service, to author a new report over it.
  • Common Data Services.Common Data Services.

Sestavy využívající SQL Server Analysis Services se při publikování do služby Power BI chovají podobným způsobem jako sestavy v režimu DirectQuery. V čem jsou si podobné:The behavior of reports over SQL Server Analysis Services, upon publishing to the Power BI service, is similar to DirectQuery reports in the following ways:

  • Když ve službě Power BI otevíráte stávající sestavu nebo vytváříte sestavu novou, provede se dotaz do souvisejícího zdroje služby SQL Server Analysis Services. Pravděpodobně bude vyžadovat místní bránu dat.When opening an existing report in the Power BI service or authoring a new report, the underlying SQL Server Analysis Services source is queried, possibly requiring an on-premises data gateway.
  • Dlaždice řídicího panelu se aktualizují automaticky podle plánu, třeba každou hodinu.Dashboard tiles are automatically refreshed on a schedule, such as every hour.

Také jsou zde důležité rozdíly.There are also important differences. Při živém připojení se například souvisejícímu zdroji služby SQL Server Analysis Services vždy předává identita uživatele, který otevírá sestavu.For instance, for live connections, the identity of the user opening the report is always passed to the underlying SQL Server Analysis Services source.

Porovnali jsme různé způsoby připojení. Ve zbývající části tohoto článku se zaměříme výhradně na DirectQuery.With these comparisons out of the way, let's focus solely on DirectQuery for the rest of this article.

Kdy je DirectQuery užitečné?When is DirectQuery useful?

V následující tabulce jsou popsané scénáře, ve kterých je připojení v režimu DirectQuery zvlášť užitečné.The following table describes scenarios where connecting with DirectQuery could be especially useful. Tabulka obsahuje také případy, kdy se za výhodnější považuje nechat data v původním zdroji.It includes cases where leaving the data in the original source would be considered beneficial. Popis obsahuje diskusi o tom, zda je daný scénář k dispozici v Power BI.The description includes a discussion about whether the specified scenario is available in Power BI.

OmezeníLimitation PopisDescription
Data se často mění a sestavy je potřeba generovat téměř v reálném čase.Data is changing frequently, and near real-time reporting is needed Modely s importovanými daty je možné aktualizovat nejvýš jednou za hodinu (častější aktualizace je možná u předplatných Power BI Pro a Power BI Premium).Models with imported data can be refreshed at most once per hour (more frequently with Power BI Pro or Power BI Premium subscriptions). Pokud se data stále mění a je potřeba, aby sestavy zobrazovaly nejnovější data. Import s plánovanými aktualizacemi nemusí v takových případech stačit.Tf the data is continually changing, and it's necessary for reports to show the latest data, using import with scheduled refresh might not meet those needs. Data můžete do Power BI přímo streamovat, i když v takovém případě existují omezení týkající se podporovaných objemů dat.You can stream data directly into Power BI, though there are limits on the data volumes supported for this case.

Naproti tomu použití DirectQuery znamená, že při otevření nebo aktualizaci sestavy nebo řídicího panelu se vždy zobrazí nejnovější data ze zdroje.Using DirectQuery, by contrast, means that opening or refreshing a report or dashboard always shows the latest data in the source. Navíc dlaždice řídicího panelu je možné aktualizovat častěji, třeba každých 15 minut.Additionally, the dashboard tiles can be updated more frequently, as often as every 15 minutes.
Data jsou velmi objemná.Data is very large Pokud jsou data velmi rozsáhlá, není import všech dat proveditelný.If the data is very large, it wouldn't be feasible to import it all. DirectQuery naopak objemné přenosy dat nevyžaduje, protože dotazy se provádějí na místě.DirectQuery, by contrast, requires no large transfer of data, because it's queried in place.

Ale při velkých objemech dat se také může stát, že výkon dotazů do souvisejícího zdroje bude příliš pomalý, jak jsme si řekli v části Důsledky vyplývající z používání DirectQuery.However, large data might also imply that the performance of the queries against that underlying source is too slow, as discussed in Implications of using DirectQuery. Pokaždé nemusíte importovat všechna podrobná data.You don't always have to import the full detailed data. Místo toho můžete data během importu předem agregovat.Instead, the data can be pre-aggregated during import. Předběžnou agregaci dat při importu usnadňuje Editor dotazů.The Query Editor makes it easy to pre-aggregate during import. V krajních případech by bylo možné importovat konkrétní agregovaná data potřebná pro jednotlivé vizuály.In the extreme, it would be possible to import exactly the aggregate data needed for each visual. DirectQuery sice nabízí nejjednodušší přístup k rozsáhlým datům, ale import agregovaných dat může být vhodnějším řešením, zejména pokud je související zdroj příliš pomalý.While DirectQuery is the simplest approach to large data, importing aggregate data might offer a solution if the underlying source is too slow.
Pravidla zabezpečení jsou definovaná v podkladovém zdroji.Security rules are defined in the underlying source Při importu dat se Power BI připojí ke zdroji dat pod přihlašovacími údaji aktuálního uživatele Power BI Desktopu. Nebo použije přihlašovací údaje definované při konfiguraci plánovaných aktualizací ve službě Power BI.When the data is imported, Power BI connects to the data source using the current user's credentials from Power BI Desktop, or the credentials defined as part of configuring scheduled refresh from the Power BI service. Při publikování a sdílení sestavy dbejte na to, abyste ji sdíleli jenom s těmi uživateli, kteří smí vidět stejná data, nebo v datové sadě definujte zabezpečení na úrovni řádků.In publishing and sharing such a report, be careful to only share with users allowed to see the same data, or to define row-level security as part of the dataset.

Ideálně byste při této konfiguraci mohli použít jakékoli zabezpečení daného zdroje, protože DirectQuery se vždy dotazuje do souvisejícího zdroje.Ideally, because DirectQuery always queries the underlying source, this configuration would allow any security in that underlying source to be applied. V současnosti se ale Power BI vždy připojuje k souvisejícímu zdroji pod stejnými přihlašovacími údaji jako při importu.However, currently Power BI always connects to the underlying source using the same credentials as would be used for import.

Dokud Power BI umožňuje předat identitu uživatele sestavy souvisejícímu zdroji, nenabízí DirectQuery z hlediska zabezpečení zdroje dat žádné výhody.Until Power BI allows for the identity of the report consumer to pass through to the underlying source, DirectQuery offers no advantages for data source security.
Použití omezení datové suverenityData sovereignty restrictions apply V některých organizacích platí zásada suverenity dat, která znamená, že data nesmí opustit sídlo organizace.Some organizations have policies around data sovereignty, meaning that data can't leave the organization premises. Řešení na základě importování by tedy zjevně bylo problematické.A solution based on import would clearly present issues. Naopak při použití DirectQuery tato data zůstanou v podkladovém zdroji.By contrast, with DirectQuery that data remains in the underlying source.

Ale i DirectQuery uchovává některé mezipaměti dat na úrovni vizuálů ve službě Power BI. Je to kvůli plánovaným aktualizacím dlaždic.However, even with DirectQuery, some caches of data at the visual level are kept in the Power BI service because of scheduled refresh of tiles.
Podkladovým zdrojem dat je zdroj OLAP obsahující míry.Underlying data source is an OLAP source, containing measures Pokud podkladový zdroj dat obsahuje míry, jako například SAP HANA nebo SAP Business Warehouse, nepřináší import dat další problémy.If the underlying data source contains measures, such as SAP HANA or SAP Business Warehouse, then importing the data brings other issues. Znamená to, že importovaná data mají určitou úroveň agregace, která je definovaná dotazem.It means that the data imported is at a particular level of aggregation, as defined by the query. Jsou to například míry TotalSales (ProdejCelkem) za Class (Třída), Year (Rok) a City (Město).For example, measures TotalSales by Class, Year, and City. Pokud je vizuál vytvořený tak, že se zeptá na data s vyšší úrovní agregace, třeba na TotalSales (ProdejCelkem) za Year (Rok), dále agreguje již agregované hodnoty.Then if a visual is built asking for data at a higher-level aggregate, such as TotalSales by Year, it's further aggregating the aggregate value. U součtových měr, jako je Sum nebo Min je tato agregace v pořádku, ale u nesoučtových měr, jako je Average (Průměr) nebo DistinctCount (PočetJedinečných), je problematická.This aggregation is fine for additive measures, such as Sum and Min, but it's an issue for non-additive measures, such as Average, DistinctCount.

Abychom mohli přímo ze zdroje jednoduše získat správná agregovaná data, která potřebujeme do určitého vizuálu, museli bychom posílat dotazy za vizuál jako v DirectQuery.To make it easy to get the correct aggregate data, as needed for the particular visual, directly from the source, it would be necessary to send queries per visual, as in DirectQuery.

Když se připojujete k SAP Business Warehouse (BW), zvolení DirectQuery toto zpracování měr umožňuje.When connecting to SAP Business Warehouse (BW), choosing DirectQuery allows for this treatment of measures. Informace o SAP BW najdete v tématu DirectQuery a SAP BW.For information about SAP BW, see DirectQuery and SAP BW.

V současnosti se ale DirectQuery zachází se systémem SAP HANA stejně jako s relačním zdrojem, a proto se chová při importu podobně.However, currently DirectQuery over SAP HANA treats it the same as a relational source, and provides similar behavior to import. Tento přístup je podrobněji popsán v tématu DirectQuery a SAP HANA.This approach is covered further in DirectQuery and SAP HANA.

Můžeme to shrnout tak, že vzhledem k aktuálním možnostem DirectQuery v Power BI nabízí DirectQuery výhody v následujících scénářích:In summary, given the current capabilities of DirectQuery in Power BI, it offers the benefits in the following scenarios:

  • Data se často mění a sestavy je potřeba generovat téměř v reálném čase.Data is changing frequently, and near real-time reporting is needed.
  • Zpracování velmi rozsáhlých dat bez nutnosti jejich předběžné agregace.Handling very large data, without the need to pre-aggregate.
  • Platí omezení týkající se suverenity dat.Data sovereignty restrictions apply.
  • Zdroj je multidimenzionální a obsahuje míry, například SAP BW.The source is a multidimensional source containing measures, such as SAP BW.

Podrobnosti v předchozím seznamu se týkají pouze použití Power BI.The details in the previous list relate to the use of Power BI alone. K importu dat byste také mohli použít externí model služby SQL Server Analysis Services nebo služby Azure Analysis Services.Instead, you could use an external SQL Server Analysis Services or Azure Analysis Services model to import data. Pak můžete pro připojení k tomuto modelu použít Power BI.Then use Power BI to connect to that model. Tento přístup sice vyžaduje další konfiguraci, ale nabízí větší flexibilitu.While that approach would require additional configuration, it does provide greater flexibility. Umožňuje importovat mnohem větší objemy dat.Much larger volumes of data can be imported. Omezena není ani frekvence aktualizace dat.There's no restriction on how frequently the data can be refreshed.

Důsledky vyplývající z používání DirectQueryImplications of using DirectQuery

Použití DirectQuery může mít i negativní důsledky, které jsou popsané v tomto oddílu.Use of DirectQuery does have potentially negative implications, as detailed in this section. Některá z těchto omezení se mírně liší v závislosti na konkrétním použitém zdroji.Some of those limitations are slightly different depending upon the exact source that is being used. Omezeními se zabýváme jen tam, kde je to potřeba. Zcela odlišným zdrojům se věnujeme v samostatných článcích.We address limitations where applicable, and separate articles cover those sources that are substantially different.

Výkon a zatížení podkladového zdrojePerformance and load on the underlying source

Při použití DirectQuery závisí celkový výsledek do značné míry na výkonu souvisejícího zdroje dat.When using DirectQuery, the overall experience depends very much on the performance of the underlying data source. Pokud například po změně hodnoty průřezu trvá aktualizace vizuálu několik sekund (obvykle méně než pět sekund), je chování prostředí přiměřené.If refreshing each visual, for example, after changing a slicer value, takes a few seconds, usually less than 5 seconds, the experience would be reasonable. V porovnání s okamžitou odezvou při importu dat do Power BI se prostředí může zdát pomalejší.The experience might feel sluggish compared to the immediate response when importing the data to Power BI. Pokud kvůli pomalému zdroji trvají jednotlivé vizuály déle než deset sekund, je takové prostředí zcela nevyhovující.If the slowness of the source causes individual visuals to take longer than tens of seconds, the experience becomes extremely poor. Dotazům může dokonce vypršet časový limit.Queries may even time out.

Kromě výkonu souvisejícího zdroje je potřeba věnovat pozornost zatížení zdroje.Along with the performance of the underlying source, pay attention to the load placed upon the source. Zatížení má vliv na výkon.Load impacts performance. Každý uživatel, který otevře sdílenou sestavu, a každá dlaždice řídicího panelu, která se aktualizuje, odešle do výchozího zdroje aspoň jeden dotaz ke každému vizuálu.Each user who opens a shared report, and each dashboard tile that refreshes, sends at least one query per visual to the underlying source. To vyžaduje, aby zdroj takové zatížení zvládl a současně si zachoval přiměřený výkon.This fact requires that the source can handle such a query load, while still maintaining reasonable performance.

Dopady sloučení zdrojů dat na zabezpečeníSecurity implications when combining data sources

V modelu DirectQuery je možné stejně jako při importu dat používat více zdrojů dat, a to uplatněním složených modelů.It's possible to use multiple data sources in a DirectQuery model, just as when you import data, by using the Composite models feature. Pokud používáte různé zdroje dat, je důležité vědět, jak se data mezi nimi přesouvají a jaké to má dopady na zabezpečení.When you use multiple data sources, it's important to understand how data is moved back and forth between the underlying data sources, and the security implications it brings.

Omezené transformace datLimited data transformations

Podobná omezení platí i pro transformace dat, které je možné použít v Editoru dotazů.Similarly, there are limitations in the data transformations that can be applied within Query Editor. U importovaných dat se dá jednoduše použít sofistikovaná sada transformací, která data vyčistí a nově zformuje, než se použijí k vytvoření vizuálů (například analýza dokumentů JSON nebo změna orientace dat ze sloupců na řádky).With imported data, a sophisticated set of transformations can easily be applied to clean and reshape the data before using it to create visuals, such as parsing JSON documents, or pivoting data from a column to a row form. Tyto transformace jsou v DirectQuery limitovanější.Those transformations are more limited in DirectQuery.

Když se připojujete ke zdroji OLAP, jako je SAP Business Warehouse, není možné definovat žádné transformace a celý externí model se přebírá ze zdroje.First, when connecting to an OLAP source like SAP Business Warehouse, no transformations can be defined at all, and the entire external model is taken from the source. U relačních zdrojů, jako je SQL Server, přesto můžete v dotazu definovat sadu transformací, které jsou ale kvůli zachování výkonu omezené.For relational sources, like SQL Server, it's still possible to define a set of transformations per query, but those transformations are limited for performance reasons.

Veškeré transformace bude nutné použít při každém dotazu do souvisejícího zdroje, nikoliv jenom jednou při aktualizaci dat. Transformace jsou tedy omezené na ty, které je možné přiměřeným způsobem přeložit do jediného nativního dotazu.Any such transformation will need to be applied on every query to the underlying source, rather than once on data refresh, so they're limited to those transformations that can reasonably be translated into a single native query. Pokud je použitá transformace příliš složitá, zobrazí se chyba, že transformaci musíte odstranit nebo model přepnout na import.If you use a transformation that is too complex, you receive an error that either it must be deleted or the model switched to import.

Dotaz pocházející z dialogového okna Získat data nebo z Editoru dotazů se navíc použije v dílčím výběru ve vygenerovaných a odeslaných dotazech, které načtou potřebná data pro vizuál.Additionally, the query that results from the Get Data dialog or Query Editor will be used in a subselect within the queries generated and sent to retrieve the necessary data for a visual. Dotaz definovaný v Editoru dotazů proto musí být v tomto kontextu platný.The query defined in Query Editor must be valid within this context. Zejména není možné použít dotaz, který využívá běžné tabulkové výrazy, ani dotaz, který volá uložené procedury.In particular, it's not possible to use a query using Common Table Expressions, nor one that invokes Stored Procedures.

Omezení modelováníModeling limitations

Termín modelování v tomto kontextu označuje vylepšení a obohacení nezpracovaných dat při vytváření sestavy, která data používá.The term modeling in this context means the act of refining and enriching the raw data, as part of authoring a report using it. Mezi příklady patří:Examples include:

  • Definování relací mezi tabulkamiDefining relationships between tables
  • Přidání nových výpočtů (počítané sloupce a míry)Adding new calculations (calculated columns and measures)
  • Přejmenování a skrytí sloupců a měrRenaming and hiding columns and measures
  • Definování hierarchiíDefining hierarchies
  • Definování formátování, výchozího shrnutí a řazení sloupcůDefining the formatting, default summarization and sort order for a column
  • Seskupení nebo clustering hodnotGrouping or clustering values

I v DirectQuery můžete řadu těchto vylepšení modelu stále provádět a samozřejmě také platí princip, že se rozšiřují nezpracovaná data., aby se zlepšilo jejich další použití.When using DirectQuery, many of these model enrichments can still be made, and certainly there's still the principle that the raw data is being enriched, so as to improve later consumption. Nicméně některé možnosti modelování nejsou při použití DirectQuery dostupné nebo jsou omezené.However, there are some modeling capabilities that aren't available, or are limited, when using DirectQuery. Tato omezení se obecně používají, aby se předešlo problémům s výkonem.The limitations are generally applied to avoid performance issues. Uvádíme zde seznam omezení, která jsou společná pro všechny zdroje DirectQuery.The set of limitations that are common to all DirectQuery sources are listed here. Další omezení, která můžou platit pro jednotlivé zdroje, jsou popsaná v části Další kroky.Additional limitations might apply to individual sources, as described in Next steps.

  • Žádná předdefinovaná hierarchie dat: Při importu dat bude mít každý sloupec s datem nebo datem a časem automaticky také integrovanou hierarchii dat.No built-in date hierarchy: When importing data, every date/datetime column will also have a built-in date hierarchy available by default. Když například importujete tabulku prodejních objednávek, ve které je sloupec OrderDate (DatumObjednávky), budete si moct při výběru možnosti OrderDate ve vizuálu zvolit, jakou úroveň (rok, měsíc, den) chcete použít.For example, if importing a table of sales orders including a column OrderDate, then upon using OrderDate in a visual, it will be possible to choose the appropriate level (year, month, day) to use. Tato integrovaná hierarchie kalendářních dat není při používání DirectQuery k dispozici.This built-in date hierarchy isn't available when using DirectQuery. Pokud ale je v souvisejícím zdroji k dispozici tabulka Date (Datum), což je v mnoha datových skladech obvyklé, můžete používat funkce časového měřítka DAX obvyklým způsobem.If there's a Date table available in the underlying source, as is common in many data warehouses, then the DAX Time Intelligence functions can be used as normal.
  • Podpora data a času pouze na úrovni sekund: Když v datové sadě používáte sloupce pro čas, Power BI vydává dotazy na podkladový zdroj na úrovni sekund.Date/time support only to second accuracy: When using time columns in your dataset, Power BI only issues queries to the underlying source to a level of detail of seconds. Dotazy na milisekundy se do zdroje DirectQuery neposílají.Queries aren't sent to the DirectQuery source for milliseconds. Proto můžete tuto část časů ze zdrojových sloupců odebrat.Remove this part of the times from your source columns.
  • Omezení v počítaných sloupcích: Počítané sloupce jsou omezené na vnitřní řady; bez použití agregačních funkcí mohou odkazovat pouze na hodnoty jiných sloupců stejné tabulky.Limitations in calculated columns: Calculated columns are limited to being intra-row, as in, they can only refer to values of other columns of the same table, without the use of any aggregate functions. Navíc platí, že povolené skalární funkce DAX, jako je například LEFT(), jsou omezené pouze na ty funkce, které můžete dát do souvisejícího zdroje.Additionally, the DAX scalar functions, such as LEFT(), that are allowed, are limited to those functions that can be pushed to the underlying source. Tyto funkce se liší podle přesných funkcí zdroje.The functions vary depending upon the exact capabilities of the source. Nepodporované funkce nejsou uvedené v automatickém dokončování při psaní funkcí DAX pro počítaný sloupec a jejich případné použití vrátí chybu.Functions that aren't supported aren't listed in autocomplete when authoring the DAX for a calculated column, and would result in an error if used.
  • Žádná podpora pro funkce nadřízený-podřízený jazyka DAX: Pokud jste v režimu DirectQuery, nemůžete používat skupinu funkcí DAX PATH(), které se obvykle používají ke zpracování struktur typu nadřízený-podřízený, jako je účtová osnova nebo hierarchie zaměstnanců.No support for parent-child DAX functions: When in DirectQuery mode, it's not possible to use the family of DAX PATH() functions that generally handle Parent-Child structures, such as chart of accounts, or employee hierarchies.
  • Počítané tabulky nejsou podporované: V režimu DirectQuery není podporovaná možnost definovat počítanou tabulku výrazy DAX.Calculated tables aren't supported: The ability to define a calculated table using a DAX expression isn't supported in DirectQuery mode.
  • Filtrování relací: Informace o obousměrném filtrování najdete v tématu Obousměrné křížové filtrování.Relationship filtering: For information about bi-directional filtering, see Bidirectional cross-filtering. Ukázky v tomto dokumentu white paper se týkají služby SQL Server Analysis Services.This whitepaper presents examples in the context of SQL Server Analysis Services. Základní body platí stejně i pro Power BI.The fundamental points apply equally to Power BI.
  • Žádný clustering: Když používáte DirectQuery, nemůžete k automatickému vyhledávání skupin použít funkce clusteringu.No Clustering: When using DirectQuery, it's not possible to use the Clustering capability, to automatically find groups.

Omezení generování sestavReporting limitations

Modely DirectQuery podporují téměř všechny možnosti generování sestav,Almost all reporting capabilities are supported for DirectQuery models. a dokud podkladový zdroj dokáže poskytnout dostačující úroveň výkonu, je možné použít stejnou sadu vizualizací.As such, so long as the underlying source offers a suitable level of performance, the same set of visualizations can be used. Existuje několik důležitých omezení týkajících se některých dalších funkcí, které služba Power BI nabízí po publikování sestavy:There are some important limitations in some of the other capabilities offered in the Power BI service after a report is published:

  • Nejsou podporované rychlé přehledy: Rychlé přehledy Power BI prohledávají různé podmnožiny datové sady a pomocí sady sofistikovaných algoritmů vytváří přehledy, které by vás mohly zajímat.Quick Insights isn't supported: Power BI Quick Insights searches different subsets of your dataset while applying a set of sophisticated algorithms to discover potentially interesting insights. Vzhledem k vysokým nárokům dotazů na výkon není tato funkce u datových sad používajících DirectQuery k dispozici.Given the need for very high performance queries, this capability isn't available on datasets using DirectQuery.
  • Není podporovaná funkce Q&A: Power BI Q&A vám umožňuje zkoumat data pomocí intuitivních funkcí přirozeného jazyka a získávat odpovědi v podobě grafů.Q&A isn't supported: Power BI Q&A enables you to explore your data using intuitive, natural language capabilities and receive answers in the form of charts and graphs. V současnosti tato funkce ale není podporovaná u datových sad, které používají DirectQuery.However, it's currently not supported on datasets using DirectQuery.
  • Použití funkce Explore in Excel (Prozkoumat v Excelu) pravděpodobně bude mít za následek horší výkon: Ke zkoumání dat v datové sadě můžete použít funkci „Explore in Excel“ (Prozkoumat v Excelu).Using Explore in Excel will likely result in poorer performance: You can explore your data by using the Explore in Excel capability on a dataset. Tímto způsobem můžete v Excelu vytvářet kontingenční tabulky a grafy.This approach allows Pivot Tables and Pivot Charts to be created in Excel. I když je tato funkce u datových sad používajících DirectQuery podporovaná, výkon je většinou pomalejší než při vytváření vizuálů v Power BI. Pokud je ve vašich scénářích používání Excelu důležité, měli byste při rozhodování o použití DirectQuery vzít tuto skutečnost v úvahu.While this capability is supported on datasets using DirectQuery, the performance is generally slower than creating visuals in Power BI, and therefore if the use of Excel is important for your scenarios, this fact should be accounted for in your decision to use DirectQuery.

ZabezpečeníSecurity

V tomto článku jsme si řekli, že sestava DirectQuery po publikování do služby Power BI používá k připojení k souvisejícímu datovém zdroji vždy stejné, pevné přihlašovací údaje.As discussed earlier in this article, a report in DirectQuery always uses the same fixed credentials to connect to the underlying data source, after it's published to the Power BI service. Toto chování platí pro DirectQuery, ale ne pro živá připojení ke službě SQL Server Analysis Services, kde je to jinak.This behavior applies to DirectQuery, not to live connections to SQL Server Analysis Services, which is different in this respect. Ihned po publikování sestavy DirectQuery je potřeba nakonfigurovat přihlašovací údaje uživatele, které se použijí.Immediately after publish of a DirectQuery report, it's necessary to configure the credentials of the user that will be used. Dokud tyto přihlašovací údaje nenakonfigurujete, způsobí to při otevření sestavy ve službě Power BI chybu.Until you configure the credentials, opening the report on the Power BI service would result in an error.

Jakmile poskytnete přihlašovací údaje uživatele, použijí se pro každého uživatele, který sestavu otevře.Once the user credentials are provided, then those credentials will be used whichever user who opens the report. Po této stránce je to úplně stejné jako při importu dat.In this way, it's exactly like imported data. Každý uživatel uvidí stejná data, pokud v sestavě nenadefinujete zabezpečení na úrovni řádků.Every user sees the same data, unless row-level security has been defined as part of the report. Stejnou pozornost je potřeba věnovat i sdílení sestavy, pokud jsou v souvisejícím zdroji definovaná pravidla zabezpečení.The same attention must be paid to sharing the report, if there are any security rules defined in the underlying source.

Chování ve službě Power BIBehavior in the Power BI service

Tato část popisuje chování sestavy DirectQuery ve službě Power BI, abyste porozuměli stupni zatížení, kterému bude back-endový zdroj dat vystaven. Tato zátěž závisí na počtu uživatelů, se kterými budete sestavu a řídící panel sdílet, na složitosti sestavy a také na tom, jestli je v sestavě definované zabezpečení na úrovni řádků.This section describes the behavior of a DirectQuery report in the Power BI service, to explain the degree of load that will be placed on the back-end data source, given the number of users that the report and dashboard will be shared with, the complexity of the report, and whether row-level security has been defined in the report.

Sestavy – otevření, práce s nimi, úpravyReports – opening, interacting with, editing

Při otevření sestavy se aktualizují všechny vizuály aktuálně zobrazené stránky.When a report is opened, all the visuals on the currently visible page refresh. Každý vizuál obvykle vyžaduje aspoň jeden dotaz do souvisejícího zdroje dat.Each visual generally requires at least one query to the underlying data source. Některé vizuály můžou vyžadovat několik dotazů.Some visuals might require more than one query. Například pokud vizuál zobrazuje agregované hodnoty ze dvou různých tabulek faktů nebo obsahuje složitější míry či součty nesčitatelných měr, jako je Count Distinct.For example, a visual might show aggregate values from two different fact tables, or contain a more complex measure, or contain totals of a non-additive measure like Count Distinct. Při přechodu na novou stránku se tyto vizuály aktualizují.Moving to a new page refreshes those visuals. Při aktualizaci se do souvisejícího zdroje odešle nová sada dotazů.Refreshing sends a new set of queries to the underlying source.

Každá interakce uživatele se sestavou může způsobit aktualizaci vizuálů.Every user interaction on the report might result in visuals being refreshed. Například výběr jiné hodnoty v průřezu vyžaduje odeslání nové sady dotazů, aby se aktualizovaly všechny dotčené vizuály.For example, selecting a different value on a slicer requires sending a new set of queries to refresh all of the affected visuals. Totéž platí pro kliknutí na vizuál, aby se zobrazilo křížové zvýraznění ostatních vizuálů, nebo změnu filtru.The same is true for clicking on a visual to cross-highlight other visuals, or changing a filter.

Podobně platí, že při úpravě nové sestavy se vyžaduje, aby se dotazy odesílaly pro každý krok cesty tvořící konečný vizuál.Similarly, editing a new report requires queries to be sent for each step on the path to produce the final visual.

Některé výsledky se také ukládají do mezipaměti.There's some caching of results. Pokud byly nedávno získány úplně stejné výsledky, aktualizuje se vizuál okamžitě.The refresh of a visual is instantaneous if the exact same results have recently been obtained. Pokud je definované zabezpečení na úrovni řádků, mezipaměti se mezi uživateli nesdílejí.If row-level security is defined, such caches aren't shared across users.

Aktualizace řídicího paneluDashboard Refresh

Jednotlivé vizuály nebo celé stránky je možné připnout na řídicí panel jako dlaždice.Individual visuals, or entire pages, can be pinned to dashboard as tiles. Dlaždice založené na datových sadách DirectQuery se aktualizují automaticky podle plánu.Tiles based on DirectQuery datasets refresh automatically according to a schedule. Dlaždice posílají dotazy do back-endového zdroje dat.Tiles send queries to the back-end data source. Ve výchozím nastavení se datové sady aktualizují každou hodinu, ale v nastavení datové sady je možné aktualizace nakonfigurovat v intervalu od 15 minut do týdne.By default, datasets refresh every hour, but can be configured as part of dataset settings to be between weekly and every 15 minutes.

Pokud v modelu není definované zabezpečení na úrovni řádků, aktualizuje se každá dlaždice jednou a výsledky se sdílejí se všemi uživateli.If no row-level security is defined in the model, each tile is refreshed once, and the results shared across all users. Jinak by mohlo dojít k mnohonásobnému opakování.Otherwise, there can be a large multiplier effect. Každá dlaždice totiž vyžaduje, aby se do souvisejícího zdroje odesílaly za každého uživatele samostatné dotazy.Each tile requires separate queries per user to be sent to the underlying source.

Pokud má řídicí panel 10 dlaždic, sdílí ho 100 uživatelů, je vytvořený na datové sadě využívající DirectQuery se zabezpečením na úrovni řádků a má nakonfigurovanou aktualizaci každých 15 minut, znamená to, že se do back-endového zdroje nakonec odesílá každých 15 minut nejméně 1000 dotazů.A dashboard with 10 tiles, shared with 100 users, created on a dataset using DirectQuery with row-level security, and configured to refresh every 15 minutes, would result in at least 1000 queries being sent every 15 minutes to the back-end source.

Proto je potřeba pečlivě zvážit jak zabezpečení na úrovni řádků, tak plán aktualizací.Pay careful consideration to the use of row-level security, and the configuring of the refresh schedule.

Časové limityTime-outs

Pro jednotlivé dotazy ve službě Power BI platí čtyřminutový časový limit.A time-out of four minutes is applied to individual queries in the Power BI service. Dotazy, které trvají déle, nebudou úspěšné.Queries taking longer than that will fail. Zdůrazňovali jsme, že DirectQuery doporučujeme používat u zdrojů, kde je výkon dotazů téměř interaktivní.As stressed earlier, we recommend that you use DirectQuery for sources that provide near interactive query performance. Tento limit má za cíl zabránit problémům s příliš dlouhou dobou spuštění.This limit is intended to prevent issues from overly long execution times.

Ostatní důsledkyOther implications

Tady jsou některé další obecné důsledky používání DirectQuery:Some other general implications of using DirectQuery are as follows:

  • Pokud se data mění, je potřeba je aktualizovat, aby se zobrazovala jen ta nejnovější: Protože se používají mezipaměti, nedá se zaručit, že vizuál bude vždy zobrazovat nejnovější data.If data is changing, it's necessary to refresh to ensure the latest data is shown: Given the use of caches, there's no guarantee that the visual is always showing the latest data. Vizuál může například zobrazovat transakce za poslední den.For example, a visual might show the transactions in the last day. Protože se změnil průřez, bude pravděpodobně nutné vizuál aktualizovat, aby zobrazoval transakce za poslední dva dny.Because of a slicer being changed, it might refresh to show the transactions for the last two days. Do těchto transakcí můžou patřit nedávné, nově přijaté transakce.The transactions could include recent, newly arrived transactions. Při vrácení průřezu na původní hodnotu se znovu zobrazí dříve získaná hodnota uložená v mezipaměti.Returning the slicer to its original value would result in it again showing the cached value previously obtained.

    Když vyberete Aktualizovat, všechny mezipaměti se vyčistí a aktualizují se všechny vizuály na stránce, aby zobrazovaly nejnovější data.Selecting Refresh clears any caches and refreshes all the visuals on the page to show the latest data.

  • Pokud se data změní, neexistuje žádná záruka konzistence vizuálů: Různé vizuály, ať už na stejné či jiné stránce, se mohou aktualizovat v jinou dobu.If data is changing, there's no guarantee of consistency between visuals: Different visuals, whether on the same page or on different pages, might be refreshed at different times. Pokud se data v souvisejícím zdroji změní, neexistuje záruka, že bude každý vizuál zobrazovat data v úplně stejném okamžiku.If the data in the underlying source is changing, there's no guarantee that each visual shows the data at the exact same point of time. Vzhledem k tomu, že někdy vizuál vyžaduje více než jeden dotaz, například k získání podrobností a součtů, není zaručena konzistence dokonce ani v rámci jednoho vizuálu.Indeed, given that sometimes more than one query is required for a single visual, for example, to obtain the details and the totals, then consistency even within a single visual isn't guaranteed. Pokud byste chtěli zaručit konzistenci, vyžadovalo by to náročnou aktualizaci všech vizuálů, kdykoli se libovolný vizuál aktualizuje, a současně použití nákladných funkcí v souvisejícím zdroji dat, jako je izolace snímku.To guarantee this consistency would require the overhead of refreshing all visuals whenever any visual refreshed, in tandem with the use of costly features like Snapshot Isolation in the underlying data source.

    Tento problém můžete do značné míry omezit tak, že znovu vyberete možnost Aktualizovat, abyste aktualizovali všechny vizuály na stránce.This issue can be mitigated to a large extent by again selecting Refresh to refresh all of the visuals on the page. I když používáte režim importu, existuje obdobný problém se zaručením konzistence, pokud importujete data z více než jedné tabulky.Even if using import mode, there's a similar problem of guaranteeing consistency while importing data from more than one table.

  • Pokud potřebujete promítnout změny metadat, je potřeba provést aktualizaci v Power BI Desktopu: Když po publikování sestavy vyberete možnost Aktualizovat, aktualizují se vizuály v sestavě.Refresh in Power BI Desktop is needed to reflect any metadata changes: After a report is published, Refresh will refresh the visuals in the report. I když se změní schéma souvisejícího zdroje, nepoužijí se tyto změny k automatické změně dostupných polí v seznamu polí.If the schema of the underlying source has changed, then those changes aren't automatically applied to change the available fields in the field list. Pokud došlo k odebrání tabulek nebo sloupců ze souvisejícího zdroje, může to při aktualizaci způsobit chybu dotazu.If tables or columns have been removed from the underlying source, it might result in query failure upon refresh. Když otevřete sestavu v Power BI Desktopu a vyberte Aktualizovat, aktualizují se pole modelu, aby odrážely změny.Opening the report in Power BI Desktop, and choosing Refresh updates the fields in the model to reflect the changes.

  • Limit milionu řádků vrácených na libovolný dotaz: Pro počet řádků vrácených na jediný dotaz do souvisejícího zdroje platí pevný limit jednoho milionu řádků.Limit of 1 million rows returned on any query: There's a fixed limit of 1 million rows placed on the number of rows that can be returned in any single query to the underlying source. Tento limit obvykle nemá žádné praktické důsledky, protože samotné vizuály tolik bodů nezobrazují.This limit generally has no practical implications, and visuals themselves aren't going to display that many points. Tohoto limitu ale můžete dosáhnout v případě, že Power BI plně neoptimalizuje odesílané dotazy a vyskytne se požadavek na přechodný výsledek, který tento limit překročí.However, the limit can occur in cases where Power BI isn't fully optimizing the queries sent, and there's some intermediate result being requested that exceeds the limit. Limitu také můžete dosáhnout při vytváření vizuálu, když se snažíte ho dostat do přijatelného konečného stavu.It can also occur while building a visual, on the path to a more reasonable final state. Třeba při zahrnutí položek Customer (Zákazník) a TotalSalesQuantity (CelkovýObjemProdeje) můžete tohoto limitu dosáhnout, pokud by existovalo více než milion zákazníků a nepoužil se žádný filtr.For example, including Customer and TotalSalesQuantity would hit this limit if there were more than 1 million customers, until some filter were applied.

    Zobrazená chyba by vypadala takto: „Sada výsledků dotazu na externí zdroj dat překročila maximální povolenou velikost řádků 1000000.“The error that would be returned would be: "The resultset of a query to external data source has exceeded the maximum allowed size of '1000000' rows."

  • Mezi režimy importu a DirectQuery není možné přecházet: Je sice možné přepnout model z režimu DirectQuery do režimu importu, ale všechna potřebná data se musí importovat.Can't change from import to DirectQuery mode: While it's possible to switch a model from DirectQuery mode to use import mode, all the necessary data must be imported. Navíc potom není možné se přepnout zpátky – hlavně kvůli sadě funkcí, které režim DirectQuery nepodporuje.It's also not possible to switch back, primarily because of the set of features not supported in DirectQuery mode. Přepnout z DirectQuery na import nejdou ani modely DirectQuery, které pracují s vícerozměrnými zdroji, jako je SAP BW. Je to způsobeno různým zacházením s externími mírami.DirectQuery models over multidimensional sources, like SAP BW, also can't be switched from DirectQuery to import, because of the different treatment of external measures.

DirectQuery ve službě Power BIDirectQuery in the Power BI service

Power BI Desktop podporuje všechny zdroje.All sources are supported from Power BI Desktop. Některé zdroje jsou také dostupné přímo ze služby Power BI.Some sources are also available directly from within the Power BI service. Firemní uživatel může například použít Power BI, aby se připojil k datům v řešení Salesforce a získal okamžitě přístup k řídicímu panelu, aniž by použil Power BI Desktop.For example, it's possible for a business user to use Power BI to connect to their data in Salesforce, and immediately get a dashboard, without use of Power BI Desktop.

Přímo v této službě jsou k dispozici pouze dva zdroje podporující DirectQuery:Only two of the DirectQuery enabled-sources are available directly in the service:

  • SparkSpark
  • Azure SQL Data WarehouseAzure SQL Data Warehouse

Doporučujeme spouštět DirectQuery s těmito dvěma zdroji z Power BI Desktopu.However, we recommend that any use of DirectQuery over those two sources start within Power BI Desktop. Důvodem je, že pokud navážete počáteční spojení ve službě Power BI, bude platit řada klíčových omezení.The reason is that when the connection is initially made in the Power BI service, many key limitations will apply. I když byl výchozí bod jednoduchý, pokud začnete ve službě Power BI, platí omezení týkající se dalšího vylepšování výsledné sestavy.While the start point was easy, starting in the Power BI service, there are limitations on enhancing the resulting report any further. Nemůžete například vytvářet výpočty, používat analytické funkce ani aktualizovat metadata, aby odpovídala změnám souvisejícího schématu.For example, it's not possible then to create any calculations, or use many analytical features, or even refresh the metadata to reflect any changes to the underlying schema.

Pokyny pro úspěšné používání DirectQueryGuidance for using DirectQuery successfully

Pokud se chystáte používat DirectQuery, najdete v této části souhrnné pokyny, jak dosáhnout úspěchu.If you're going to use DirectQuery, this section provides you with some high-level guidance on how to ensure success. Pokyny v této části vyplývají z výše popsaných důsledků používání DirectQuery.The guidance in this section is derived from the implications of using DirectQuery that have been described in this article.

Výkon back-endového zdroje datBack-end data source performance

Ověřte, že aktualizace jednoduchých vizuálů trvá přiměřeně dlouho.Validate that simple visuals refresh in a reasonable time. Přiměřená doba aktualizace interaktivního prostředí je do pěti sekund.A refresh time should be within 5 seconds to have a reasonable interactive experience. Pokud se vizuály načítají déle než 30 vteřin, je vysoce pravděpodobné, že po publikování sestavy se objeví další problémy.If visuals are taking longer than 30 seconds, it's highly likely that further issues will occur following publication of the report. Kvůli těmto problémům může být řešení nefunkční.These issues can make the solution unworkable.

Pokud jsou pomalé dotazy, zkontrolujte ty, které se odesílají do souvisejícího zdroje, a zjistěte důvod jejich pomalého výkonu.If queries are slow, examine the queries being sent to the underlying source, and the reason for the query performance. Tento článek se nezabývá nejrůznějšími osvědčenými postupy optimalizace databází pro celou řadu možných souvisejících zdrojů.This article doesn't cover the wide range of database optimization best practices across the full set of potential underlying sources. Článek se zabývá jenom standardními databázovými postupy, které platí ve většině situací:This article does cover the standard database practices that apply to most situations:

  • Relace založené na celočíselných sloupcích jsou obvykle výkonnější než spojení sloupců jiných typů dat.Relationships based on integer columns generally perform better than joins on columns of other data types.
  • Je potřeba vytvořit vhodné indexy.The appropriate indexes should be created. Tvorba indexu obecně znamená, že použijete indexy úložiště sloupce v těch zdrojích, které ho podporují, například v SQL Serveru.Index creation generally means the use of column store indexes in those sources that support them, for example, SQL Server.
  • Měly by se aktualizovat všechny potřebné statistické údaje ve zdroji.Any necessary statistics in the source should be updated.

Pokyny pro návrh modeluModel Design Guidance

Při definování modelu vezměte v potaz tyto pokyny:When defining the model, consider following this guidance:

  • Vyhněte se v Editoru dotazů složitým dotazům.Avoid complex queries in Query Editor. Editor dotazů přeloží složitý dotaz do jediného dotazu SQL.Query Editor translates a complex query into a single SQL query. Tento jediný dotaz se objeví v dílčím výběru každého dotazu odesílaného do dané tabulky.The single query appears in the subselect of every query sent to that table. Kdyby byl tento dotaz složitý, může dojít k problémům s výkonem při každém jeho odeslání.If that query is complex, it might result in performance issues on every query sent. Skutečný dotaz SQL pro sadu kroků je možné získat výběrem posledního kroku v Editoru dotazů a zvolením možnosti Zobrazit nativní dotaz v kontextové nabídce.The actual SQL query for a set of steps can be obtained by selecting the last step in Query Editor, and choosing View Native Query from the context menu.

  • Používejte jednoduché míry.Keep measures simple. Alespoň na začátku doporučujeme omezit míry na jednoduché agregace.At least initially, we recommend limiting measures to simple aggregates. Teprve pokud míry fungují uspokojivě, je možné definovat složitější míry, ale stále je potřeba věnovat pozornost výkonu každé z nich.Then if the measures operate in a satisfactory manner, more complex measures can be defined, but paying attention to the performance for each.

  • Nepoužívejte relace u počítaných sloupců.Avoid relationships on calculated columns. Tento pokyn se týká databází, ve kterých potřebujete, aby byla spojení založená na více sloupcích.This guidance is relevant to databases where you need to do multi-column joins. Power BI dnes nedovoluje relace založené na více sloupcích, jako jsou cizí nebo primární klíče (FK/PK).Power BI today doesn't allow a relationship to be based on multiple columns as the FK/PK. Běžným alternativním řešením je zřetězit sloupce dohromady pomocí počítaného sloupce a založit spojení na tomto sloupci.The common workaround is to concatenate the columns together using a calculated column, and base the join on that column. Toto alternativní řešení je vhodné u importovaných dat, ale v DirectQuery povede ke spojení výrazu.While this workaround is reasonable for imported data, for DirectQuery, it results in a join on an expression. Takový výsledek často brání použití indexů a povede k horšímu výkonu.That result commonly prevents use of any indexes, and leads to poor performance. Jediným alternativním řešením je v podkladové databázi sloučit několik sloupců do jednoho.The only workaround is to actually materialize the multiple columns into a single column in the underlying database.

  • Nepoužívejte relace u sloupců uniqueidentifier.Avoid relationships on uniqueidentifier columns. Power BI nativně nepodporuje datový typ uniqueidentifier.Power BI doesn't natively support a datatype of uniqueidentifier. Pokud definujete relaci mezi sloupci typu uniqueidentifier, výsledkem bude dotaz se spojením, jehož součástí je přetypování.Defining a relationship between columns of type uniqueidentifier column results in a query with a join involving a cast. Znovu platí, že tento přístup většinou povede k horšímu výkonu.Again, this approach commonly leads to poor performance. Dokud tento konkrétní případ nebude optimalizován, jediným alternativním řešením je sloupce alternativního typu v podkladové databázi sloučit.Until this case is specifically optimized, the only workaround is to materialize columns of an alternative type in the underlying database.

  • Skryjte cílový sloupec relace.Hide the to column on relationships. Cílový sloupec relace je často primárním klíčem cílové tabulky.The to column on relationships is commonly the primary key on the to table. Tento sloupec by měl být skrytý.That column should be hidden. Pokud je skrytý, nezobrazuje se v seznamu polí a nedá se použít ve vizuálech.If hidden, it doesn't appear in the field list and can't be used in visuals. Často platí, že sloupce, na kterých jsou relace založené, jsou ve skutečnosti systémovými sloupci, například náhradní klíče v datovém skladu.Often the columns on which relationships are based are in fact system columns, for example, surrogate keys in a data warehouse. Doporučený postup je tyto sloupce raději skrýt.It's good practice to hide such columns anyway. Pokud sloupec má význam, zaveďte viditelný počítaný sloupec s jednoduchým výrazem, který bude stejný jako primární klíč. Je to vidět na následujícím příkladu:If the column does have meaning, then introduce a calculated column that is visible, and that has a simple expression of being equal to the primary key, as in the following example:

        ProductKey_PK   (Destination of a relationship, hidden)
        ProductKey (= [ProductKey_PK],   visible)
        ProductName
        ...
    
  • Zkontrolujte všechna použití počítaných sloupců a změny datových typů.Examine all uses of calculated columns and data type changes. Použití těchto funkcí nemusí být nutně škodlivé.Use of these capabilities aren't necessarily harmful. Ale způsobují odesílání dotazů do souvisejícího zdroje, které místo jednoduchých odkazů na sloupce obsahují výrazy.They do result in the queries sent to the underlying source containing expressions rather than simple references to columns. To může způsobit, že se nepoužijí indexy.That again might result in indexes not being used.

  • Nepoužívejte u relací obousměrné křížové filtrování.Avoid use of the bi-directional cross filtering on relationships. Použití obousměrného křížového filtrování může vést k příkazům dotazů, které nebudou dobře fungovat.Use of bi-directional cross filtering can lead to query statements that don't perform well.

  • Experimentujte s nastavením Předpokládat referenční integritu.Experiment with setting Assume referential integrity. Nastavení Předpokládat referenční integritu u relací umožňuje používat v dotazech příkazy INNER JOIN místo příkazů OUTER JOIN.The Assume Referential Integrity setting on relationships enables queries to use INNER JOIN statements rather than OUTER JOIN. Tento pokyn obvykle zlepší výkon dotazu, i když záleží na specifikách konkrétního zdroje dat.This guidance generally improves query performance, though it does depend on the specifics of the data source.

  • V Editoru dotazů nepoužívejte filtrování relativních dat.Don't use the relative data filtering in Query Editor. V Editoru dotazů je možné definovat filtrování relativních dat.It's possible to define relative date filtering in Query Editor. Například můžete filtrovat řady obsahující datum z posledních 14 dnů.For example, to filter to the rows where the date is in the last 14 days.

    Filtrování řádků za posledních 14 dní

    Ale tento filtr se přeloží do filtru založeného na pevném datu v okamžiku vytvoření dotazu.However, this filter is translated into a filter based on the fixed date, as at the time the query was authored. Tento výsledek si můžete prohlédnout ze zobrazení nativního dotazu.This result can be seen from viewing the native query.

    Filtrování řádků v nativním dotazu SQL

    Tento výsledek jste pravděpodobně nechtěli.This result is probably not what you wanted. Pokud chcete mít jistotu, že se filtr použije na základě data v okamžiku spuštění sestavy, použijte ho raději v sestavě jako filtr sestavy.To ensure the filter is applied based on the date at the time the report runs, instead apply the filter in the report as a Report Filter. Teď to uděláte tak, že vytvoříte počítaný sloupec, ve kterém funkcí DAX DATE() vypočítáte počet uplynulých dnů, a pak tento počítaný sloupec použijete ve filtru.Currently, this approach would be done by creating a calculated column calculating the number of days ago, using the DAX DATE() function, and then using that calculated column in a filter.

Pokyny pro návrh sestavyReport Design Guidance

Při vytváření sestavy s připojením DirectQuery dodržujte tyto pokyny:When creating a report using a DirectQuery connection, follow this guidance:

  • Zvažte použití možností Snížení počtu dotazů: Power BI umožňuje sestavě posílat méně dotazů a zakázat určité interakce, které by vedly ke snížení výkonu, pokud by výsledné dotazy běžely příliš dlouho.Consider use of Query Reduction options: Power BI provides options in the report to send fewer queries, and to disable certain interactions that would result in a poor experience if the resulting queries take a long time to run. Pokud chcete tyto možnosti otevřít v Power BI Desktopu, přejděte na Soubor > Možnosti a nastavení > Možnosti a vyberte Snížení počtu dotazů.To access these options in Power BI Desktop, go to File > Options and settings > Options and select Query reduction.

    Možnosti snížení počtu dotazů

    Zaškrtnutím políček u možnosti Snížení počtu dotazů můžete zakázat křížové zvýrazňování v rámci celé sestavy.Checking box selections on the Query reduction let you disable cross-highlighting throughout your entire report. Na průřezech nebo ve výběrech filtru také můžete zobrazit tlačítko Použít.You can also show an Apply button to slicers or filter selections. Umožní vám to vybírat různé průřezy a filtry ještě předtím, než je použijete.This approach lets you then make many slicer and filter selections before applying them. Dokud na průřezu nevyberete tlačítko Použít, neodešlou se žádné dotazy.No queries are sent until you select the Apply button on the slicer. Váš výběr se pak může použít k filtrování dat.Your selections can then be used to filter the data.

    Tyto možnosti platí při práci se sestavou v Power BI Desktopu.These options apply to your report while you interact with it in Power BI Desktop. Platí také pro uživatele, kteří sestavu používají ve službě Power BI.These options also apply when your users consume the report in the Power BI service.

  • Nejprve použijte filtry: Vizuál vždy začněte vytvářet použitím všech vhodných filtrů.Apply filters first: Always apply any applicable filters at the start of building a visual. Například než přetáhnete položky TotalSalesAmount (CelkovýObjemProdeje) a ProductName (NázevProduktu) a pak vyfiltrujete určitý rok, použijte filtr Year (Rok) hned na začátku.For example, rather than drag in TotalSalesAmount and ProductName, then filter to a particular year, apply the filter on Year at the very start. V každém kroku vytváření vizuálu se odesílá dotaz.Each step of building a visual sends a query. I když je možné před dokončením prvního dotazu provést další změnu, zbytečně to zatěžuje související zdroj.Although it's possible to then make another change before the first query has completed, this approach still leaves unnecessary load on the underlying source. Když filtry použijete už v rané fázi, budou tyto přechodné dotazy méně nákladnější.By applying filters early, it generally makes those intermediate queries less costly. Pokud filtry nepoužijete včas, může se stát, že dosáhnete limitu jednoho milionu řádků.Also, failing to apply filters early can result in hitting the 1 million row limit.

  • Omezte počet vizuálů na stránce: Když otevřete stránku nebo změníte průřez nebo filtr stránky, aktualizují se všechny vizuály na stránce.Limit the number of visuals on a page: When you open a page or change a page level slicer or filter, all of the visuals on a page are refreshed. Existuje také limit počtu souběžně posílaných dotazů.There's also a limit on the number of queries that are sent in parallel. Jak roste počet vizuálů, budou se některé vizuály aktualizovat sériově, což zvýší dobu potřebnou k aktualizaci celé stránky.As the number of visuals increases, some of the visuals will be refreshed in a serial manner, increasing the time taken to refresh the entire page. Proto se doporučuje omezit počet vizuálů na jedné stránce a raději mít několik jednodušších stránek.For this reason, we recommend that you limit the number of visuals on a single page, and instead have more, simpler pages.

  • Zvažte vypnutí interakcí mezi vizuály: Ve výchozím nastavení je možné použít vizualizace na stránce sestavy ke křížovému filtrování a křížovému zvýraznění ostatních vizualizací na stránce.Consider switching off interaction between visuals: By default, visualizations on a report page can be used to cross-filter and cross-highlight the other visualizations on the page. Pokud například na výsečovém grafu vyberete rok 1999, zvýrazní se související sloupcový graf, ve kterém se zobrazí tržby v roce 1999 podle kategorií.For example, having selected 1999 on the pie chart, the column chart is cross highlighted to show the sales by category for 1999.

    Několik křížově filtrovaných a zvýrazněných vizuálů

    Křížové filtrování a křížové zvýraznění v DirectQuery vyžaduje odeslání dotazů do souvisejícího zdroje.Cross-filtering and cross-highlighting in DirectQuery require queries to be submitted to the underlying source. Pokud je odezva na výběr možností uživatelem nepřiměřeně dlouhá, měli byste interakci raději vypnout.The interaction should be switched off if the time taken to respond to users' selections would be unreasonably long. Tuto interakci můžete vypnout.You can switch off this interaction. Můžete ji vypnout buď pro celou sestavu (viz popis v předchozí části o možnostech snižování počtu dotazů), nebo případ od případu.Switch off the interaction for either the entire report, as described earlier for query reduction options, or on a case-by-case basis. Podrobnosti najdete v tématu Jak se vizuály v sestavě Power BI vzájemně křížově filtrují.For more information, see How visuals cross-filter each other in a Power BI report.

Problémy s výkonem můžou, kromě předchozích návrhů, také způsobovat všechny následující funkce sestav:In addition to the previous suggestions, each of the following reporting capabilities can cause performance issues:

  • Filtry měr: Vizuály, ve kterých jsou míry neboli agregace sloupců, můžou mít v těchto mírách filtry.Measure filters: Visuals containing measures, or aggregates of columns, can contain filters in those measures. Na následujícím obrázku je například SalesAmount (VýšeTržeb) podle Category (Kategorie), ale zahrnuté jsou jen kategorie s tržbami nad 20 milionů.For example, the following graphic shows SalesAmount by Category, but only including those categories with more than 20M of sales.

    Vizuál zobrazující míry, které obsahují filtry

    Výsledkem tohoto přístupu je, že se do souvisejícího zdroje odešlou dva dotazy:This approach results in two queries being sent to the underlying source:

    • První dotaz načte kategorie, které splňují podmínku, že SalesAmount (VýšeTržeb) je větší než 20 milionů.The first query retrieves the Categories meeting the condition, SalesAmount greater than 20 million.
    • Druhý dotaz pak načte potřebná data pro vizuál, včetně kategorií, které splní podmínku klauzule WHERE.The second query then retrieves the necessary data for the visual, including the categories that met the condition in the WHERE clause.

    Tento přístup většinou funguje dobře, pokud jsou kategorií stovky nebo tisíce jako v tomto příkladu.This approach generally works well if there are hundreds or thousands of categories, as in this example. Pokud je počet kategorií ještě větší, může se výkon zhoršit.Performance can degrade if the number of categories is much larger. Pokud je kategorií, které vyhovují podmínce, více než milion, dotaz selže.The query fails for more than a million categories meeting the condition. Je to kvůli limitu jednoho milionu řádků, o kterém jsme už mluvili.The 1 million row limit was discussed earlier.

  • Filtry prvních n hodnot: Rozšířené filtry můžete definovat tak, aby filtrovaly jenom prvních nebo posledních N hodnot seřazených podle míry.TopN filters: Advanced filters can be defined to filter on only the top or bottom N values ranked by some measure. Filtry můžou obsahovat třeba prvních 10 kategorií předchozího vizuálu.For example, filters can include the top 10 categories in the previous visual. Tímto způsobem se do souvisejícího zdroje opět odešlou dva dotazy.This approach again results in two queries being sent to the underlying source. První dotaz ale z podkladového zdroje vrátí všechny kategorie a prvních n hodnot se určí až na základě vrácených výsledků.However, the first query will return all categories from the underlying source, and then the TopN are determined based on the returned results. Tento přístup může vést k problémům s výkonem nebo k selhání dotazu kvůli dosažení limitu jednoho milionu řádků, ale záleží na kardinalitě dotyčných sloupců.Depending on the cardinality of the column involved, this approach can lead to performance issues or query failures because of the 1 million row limit.

  • Medián: Obecně platí, že každá agregace, například Sum nebo Count Distinct, se odesílá do souvisejícího zdroje.Median: Generally, any aggregation, such as Sum or Count Distinct, is pushed to the underlying source. Ale neplatí to pro medián, protože související zdroj tuto agregační funkci většinou nepodporuje.However, this fact isn't true for median, which this aggregate is generally not supported by the underlying source. V takových případech se podrobná data načtou ze souvisejícího zdroje a medián se vypočítá až z vrácených výsledků.In such cases, the detail data is retrieved from the underlying source, and the median calculated from the returned results. Tento přístup je vhodný, pokud se medián počítá z relativně malého počtu výsledků.This approach is reasonable when the median is to be calculated over a relatively small number of results. V případě velké kardinality můžou nastat problémy s výkonem nebo může dotaz selhat kvůli dosažení limitu jednoho milionu řádků.Performance issues or query failures because of the 1 million row limit occur if the cardinality is large. Například medián počtu obyvatel země může být přijatelný, ale medián prodejních cen už ne.For example, Median Country Population might be reasonable, but Median Sales Price might not be.

  • Pokročilé textové filtry (obsahuje a podobné): Když filtrujete textový sloupec, pokročilé filtrování umožňuje použít filtry jako obsahuje, začíná na a další.Advanced text filters (contains and similar): When filtering on a text column, the advanced filtering allows filters like contains and begins with and so on. Tyto filtry mohou u některých zdrojů dat způsobit snížení výkonu.These filters can certainly result in degraded performance for some data sources. Zvlášť výchozí filtr obsahuje by se neměl používat, pokud požadujete přesnou shodu.In particular, the default contains filter shouldn't be used if what is required is an exact match. Výsledky sice můžou být stejné, ale výkon může být kvůli indexům úplně jiný – záleží na skutečných datech.Although the results might be the same, depending on the actual data, the performance might be drastically different because of indexes.

  • Vícenásobné průřezy: Ve výchozím nastavení průřezy umožňují pouze jeden výběr.Multi select slicers: By default, slicers only allow a single selection to be made. Pokud ve filtrech povolíte vícenásobný výběr, může dojít k problémům s výkonem, protože uživatel v průřezu vybere sadu položek.Allowing multi-selection in filters can cause some performance issues, because the user selects a set of items in the slicer. Pokud uživatel vybere třeba deset produktů, které ho zajímají, znamená to, že výsledkem každého nového výběru bude odeslání dotazů do zdroje.For example, if the user selects the 10 products of interest, each new selection results in queries being sent to the source. Uživatel sice může vybrat další položku před dokončením dotazu, ale stejně má tento přístup za následek další zatížení souvisejícího zdroje.Although the user can select the next item before the query completes, this approach results in extra load on the underlying source.

  • Zvažte vypnutí součtů u vizuálů: V tabulkách a maticích se standardně zobrazují součty a mezisoučty.Consider switching off totals on visuals: By default, tables and matrices display totals and subtotals. V mnoha případech se podkladovému zdroji musí kvůli získání hodnot těchto součtů posílat samostatné dotazy.In many cases, separate queries must be sent to the underlying source to obtain the values for such totals. Tato skutečnost platí při každém použití agregace DistinctCount a ve všech případech použití DirectQuery se systémy SAP BW nebo SAP HANA.This fact applies whenever using DistinctCount aggregation, or in all cases when using DirectQuery over SAP BW or SAP HANA. Tyto součty byste měli vypnout v podokně Formát.Such totals should be switched off by using the Format pane.

Možnost Maximální počet připojení pro DirectQueryMaximum number of connections option for DirectQuery

Pro každý související zdroj dat můžete nastavit maximální počet připojení, která DirectQuery smí otevřít. Tím řídíte počet dotazů, které se současně posílají do každého zdroje dat.You can set the maximum number of connections DirectQuery opens for each underlying data source, which controls the number of queries concurrently sent to each data source.

Ve výchozím nastavení DirectQuery otevře maximálně 10 souběžných připojení.DirectQuery opens a default maximum number of 10 concurrent connections. Pro aktuální soubor můžete maximální počet změnit v Power BI Desktopu.You can change the maximum number for the current file in Power BI Desktop. Přejděte na Soubor > Možnosti a nastavení > Možnosti.Go to File > Options and Settings > Options. V levém podokně v oddílu Aktuální soubor vyberte DirectQuery.In the Current File section in the left pane, select DirectQuery.

Nastavení maximálního počtu připojení DirectQuery

Nastavení se povolí, pouze pokud aktuální sestava obsahuje alespoň jeden zdroj DirectQuery.The setting is only enabled when there's at least one DirectQuery source in the current report. Hodnota platí pro všechny zdroje DirectQuery a pro všechny nové zdroje DirectQuery přidané do stejné sestavy.The value applies to all DirectQuery sources, and to any new DirectQuery sources added to the same report.

Když zvýšíte maximální počet připojení na zdroj dat, umožníte do souvisejícího zdroje dat odesílat více dotazů, a to až do zadaného maximálního počtu.Increasing Maximum connections per data source ensures more queries, up to the maximum number specified, can be sent to the underlying data source. Tento přístup je praktický, pokud máte je na jedné straně mnoho vizuálů nebo sestavu současně otevírá mnoho uživatelů najednou.This approach is useful when many visuals are on a single page, or many users access a report at the same time. Po dosažení maximálního počtu připojení se další dotazy zařadí do fronty, kde počkají na uvolnění připojení.Once the maximum number of connections is reached, further queries are queued until a connection becomes available. Zvýšením tohoto limitu zvýšíte i zatížení podkladového zdroje dat, a proto není možné zaručit, že toto nastavení zlepší celkový výkon.Increasing this limit does result in more load on the underlying source, so the setting isn't guaranteed to improve overall performance.

Jakmile je sestava publikovaná, závisí maximální počet souběžných dotazů odesílaných do souvisejícího zdroj dat také na pevných limitech.Once a report is published, the maximum number of concurrent queries sent to the underlying data source also depend upon fixed limits. Tyto limity se liší podle cílového prostředí, ve kterém je sestava publikovaná.The limits depend on the target environment to which the report is published. Různá prostředí, jako je Power BI, Power BI Premium nebo Server sestav Power BI, můžou mít různé limity.Different environments, such as Power BI, Power BI Premium, or Power BI Report Server, can impose different limits.

Diagnostika problémů s výkonemDiagnosing performance issues

Tato část popisuje, jak diagnostikovat problémy s výkonem a jak získat podrobnější informace, které umožní sestavy optimalizovat.This section describes how to diagnose performance issues, or how to get more detailed information to allow the reports to be optimized.

Doporučujeme začít diagnostikovat problémy s výkonem raději v Power BI Desktopu než ve službě Power BI.We recommended that you start diagnosis of performance issues in Power BI Desktop, rather than in the Power BI service. Problémy s výkonem často vycházejí z výkonu souvisejícího zdroje.Performance issues are often based on the performance of the underlying source. Problémy můžete snadněji identifikovat a diagnostikovat v izolovanějším prostředí Power BI Desktopu.You can more easily identify and diagnose issues in the more isolated environment of Power BI Desktop. Tímto přístupem hned na začátku vyloučíte určité komponenty, jako je brána Power BI.This approach initially eliminates certain components, such as the Power BI gateway. Pokud se problémy s výkonem v Power BI Desktopu nevyskytují, prozkoumejte specifika sestavy ve službě Power BI.If the performance issues are absent from Power BI Desktop, investigate the specifics of the report in the Power BI service. Analyzátor výkonu je užitečný nástroj pro identifikaci problémů v celém tomto procesu.The performance analyzer is a useful tool for identifying issues throughout this process.

Podobně doporučujeme, abyste se napřed pokusili oddělit problémy jednoho vizuálu, místo mnoha vizuálů na stránce.Similarly, we recommend to first try to isolate any issues to an individual visual, rather than many visuals on a page.

Řekněme, že jste provedli kroky popsané v předchozích odstavcích tohoto oddílu.Let's say the steps in the previous paragraphs in this section have been taken. Teď máme na stránce v Power BI Desktopu jeden vizuál, který je stále pomalý.We now have a single visual on a page in Power BI Desktop that is still sluggish. Pokud chcete zjistit, jaké dotazy Power BI Desktop posílá do souvisejícího zdroje, použijte analyzátor výkonu.Use the performance analyzer to determine the queries that Power BI Desktop sends to the underlying source. Můžete si také prohlédnout trasovací a diagnostické informace, které může generovat související zdroj dat.It's also possible to view traces and diagnostic information that might be emitted by the underlying data source. Trasování může také obsahovat užitečné podrobnosti o spuštění dotazu a možnostech jeho zlepšení.Traces might also contain useful details of how the query was executed, and how it can be improved.

I když trasování ve zdroji chybí, můžete si zobrazit dotazy, které odesílá Power BI, s dobou jejich spuštění. Popis najdete v další části.Further, even in the absence of such traces from the source, it's possible to view the queries sent by Power BI, along with their execution times, as described in the next section.

Určení dotazů odeslaných pomocí Power BI DesktopuDetermining the queries sent by Power BI Desktop

Ve výchozím nastavení Power BI Desktop protokoluje události během dané relace do trasovacího souboru s názvem FlightRecorderCurrent.trc.By default, Power BI Desktop logs events during a given session to a trace file called FlightRecorderCurrent.trc.

U některých zdrojů DirectQuery jsou v tomto protokolu všechny dotazy odeslané do souvisejícího zdroje dat.For some DirectQuery sources, this log includes all queries sent to the underlying data source. Zbývající zdroje DirectQuery budou zahrnuty v budoucnosti.The remaining DirectQuery sources will be included in the future. Dotazy do protokolu odesílají následující zdroje:The following sources send queries to the log:

  • SQL ServerSQL Server
  • Azure SQL DatabaseAzure SQL Database
  • Azure SQL Data WarehouseAzure SQL Data warehouse
  • OracleOracle
  • TeradataTeradata
  • SAP HANASAP HANA

Trasovací soubor najdete ve složce AppData aktuálního uživatele:The trace file can be found in the AppData folder for the current user:

<User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces<User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces

Do této složky se dostanete, když v Power BI Desktopu vyberete Soubor > Možnosti a nastavení > Možnosti a pak vyberete Diagnostika.To get to this folder, in Power BI Desktop, select File > Options and settings > Options, and then select Diagnostics. Zobrazí se následující dialogové okno:The following dialog appears:

Odkaz na otevřenou složku tras

Když v části Diagnostické možnosti vyberete Otevřít složku výpisu stavu systému/stop, otevře se následující složka: <User>\AppData\Local\Microsoft\Power BI Desktop\Traces.When you select Open crash dump/traces folder, under Diagnostic Options, the following folder opens: <User>\AppData\Local\Microsoft\Power BI Desktop\Traces.

Když přejdete do nadřazené složky, zobrazí se složka AnalysisServicesWorkspaces, která bude pro každou otevřenou instanci Power BI Desktopu obsahovat jednu složku pracovního prostoru.Navigating to that folder's parent folder displays the folder containing AnalysisServicesWorkspaces, which will contain one workspace folder for every open instance of Power BI Desktop. Tyto složky mají v názvu číselnou příponu, například AnalysisServicesWorkspace2058279583.These folders are named with an integer suffix, such as AnalysisServicesWorkspace2058279583.

Uvnitř této složky je složka \Data.Inside that folder is a \Data folder. Obsahuje trasovací soubor FlightRecorderCurrent.trc pro aktuální relaci Power BI.It contains the trace file FlightRecorderCurrent.trc for the current Power BI session. Odpovídající složka pracovního prostoru související s relací Power BI Desktopu se po ukončení odstraní.The corresponding workspace folder is deleted when the associated Power BI Desktop session ends.

Ke čtení trasovacích souborů můžete použít nástroj SQL Server Profiler.The trace files can be read using the SQL Server Profiler tool. Je zdarma ke stažení jako součást aplikace SQL Server Management Studio.Get it as part of the free download SQL Server Management Studio.

Jakmile si stáhnete a nainstalujete SQL Server Management Studio, spusťte SQL Server Profiler.Once you download and install SQL Server Management Studio, run SQL Server Profiler.

SQL Server Profiler

Trasovací soubor otevřete následujícím postupem:To open the trace file, take the following steps:

  1. V SQL Server Profileru vyberte File (Soubor) > Open (Otevřít) > Trace file (Trasovací soubor).In SQL Server Profiler, select File > Open > Trace file.

  2. Zadejte cestu k trasovacímu souboru aktuálně otevřené relace Power BI, například: C:\Users<user>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data.Enter the path to the trace file for the currently open Power BI session, such as: C:\Users<user>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data.

  3. Otevřete soubor FlightRecorderCurrent.trc.Open FlightRecorderCurrent.trc.

Zobrazí se všechny události aktuální relace.All events from the current session are displayed. Tady je příklad s poznámkami a zvýrazněnými skupinami událostí.An annotated example is shown here, which highlights groups of events. V každé skupině jsou následující události:Each group has the following events:

  • Události Query Begin a Query End představují začátek a konec dotazu v jazyce DAX vygenerovaného uživatelským rozhraním, například vizuálem nebo získané doplněním seznamu hodnot do uživatelského rozhraní filtru.A Query Begin and Query End event, which represent the start and end of a DAX query generated by the UI, for example, from a visual, or from populating a list of values in the filter UI.
  • Jedna nebo více dvojic událostí DirectQuery Begin a DirectQuery End, které představují dotaz odeslaný do souvisejícího zdroje dat v rámci vyhodnocení dotazu DAX.One or more pairs of DirectQuery Begin and DirectQuery End events, which represent a query sent to the underlying data source, as part of evaluating the DAX query.

Současně může běžet několik dotazů DAX, takže je možné události z různých skupin prokládat.Multiple DAX queries can run in parallel, so events from different groups can be interleaved. Hodnotu ActivityID můžete použít, když chcete určit, jaké události patří do stejné skupiny.The value of the ActivityID can be used to determine which events belong to the same group.

SQL Server Profiler s událostmi Query Begin a Query End

Další sloupce, které by vás mohly zajímat:Other columns of interest are as follows:

  • TextData: Textové podrobnosti události.TextData: The textual detail of the event. U událostí Query Begin/End je v podrobnostech dotaz DAX.For Query Begin/End events, the detail is the DAX query. U událostí DirectQuery Begin/End je v podrobnostech dotaz SQL odeslaný do souvisejícího zdroje.For DirectQuery Begin/End events, the detail is the SQL query sent to the underlying source. V dolní části se také zobrazuje obsah sloupce TextData aktuálně vybrané události.The TextData for the currently selected event is also displayed in the region at the bottom.
  • EndTime: Čas dokončení události.EndTime: The time when the event completed.
  • Duration: Doba, jakou trvalo provedení dotazu jazyka DAX nebo SQLDuration: The duration, in milliseconds, taken to execute the DAX or SQL query.
  • Error: Signalizuje, že došlo k chybě. V takovém případě se událost zobrazí červeně.Error: Indicates if an error occurred, in which case the event is also displayed in red.

Na předchozím obrázku jsou některé méně zajímavé sloupce zúžené, aby byly lépe vidět ostatní sloupce.In the image above, some of the less interesting columns have been narrowed, to allow other columns to be seen more easily.

Při záznamu trasování doporučujeme následující postup, který vám pomůže diagnostikovat možné problémy s výkonem:We recommend the following approach to capturing a trace to help diagnose a potential performance issue:

  • Otevřete jen jednu relaci Power BI Desktopu, abyste se vyhnuli nepřehlednému zobrazení více složek pracovního prostoru.Open a single Power BI Desktop session, to avoid the confusion of multiple workspace folders.
  • V Power BI Desktopu proveďte sadu akcí, které vás zajímají.Do the set of actions of interest in Power BI Desktop. Přidejte pár dalších akcí, abyste měli jistotu, že se akce, o které se zajímáte, dostanou do trasovacího souboru.Include a few additional actions, to ensure that the events of interest are flushed into the trace file.
  • Otevřete SQL Server Profiler a prohlédněte si trasování podle předchozího popisu.Open SQL Server Profiler and examine the trace, as described previously. Pamatujte si, že pokud zavřete Power BI Desktop, odstraníte trasovací soubor.Remember that closing Power BI Desktop deletes the trace file. Také další akce Power BI Desktopu se hned nezobrazí.Also, further actions in Power BI Desktop don't immediately appear. Trasovací soubor byste měli zavřít a znovu otevřít, aby byly vidět nové události.The trace file should be closed and reopened to see the new events.
  • Snažte se, aby jednotlivé relace byly přiměřeně krátké, třeba 10 sekund akcí, nikoli stovky.Keep individual sessions reasonably small, perhaps 10 seconds of actions, not hundreds. Tímto způsobem budete moci trasovací soubor snáz interpretovat.This approach makes it easier to interpret the trace file. Existuje také limit velikosti trasovacího souboru.There's also a limit on the size of the trace file. Při dlouhých relacích může dojít k vynechání počátečních událostí.For long sessions, there's a chance of early events being dropped.

Princip formátu dotazu odeslaného Power BI DesktopemUnderstanding the form of query sent by Power BI Desktop

Power BI Desktop vytváří a posílá dotazy v obecném formátu, ve kterém se pro každou odkazovanou tabulku používají dílčí výběry.The general format of queries created and sent by Power BI Desktop use subselects for each of the tables referenced. Dílčí výběr definuje dotaz Editoru dotazů.The Query Editor query defines the subselect. Podívejte se například na následující tabulky TPC-DS v SQL Serveru:For example, assume the following TPC-DS tables in SQL Server:

Tabulky TPC-DS v SQL Serveru

Zamyslete se nad následujícím dotazem:Consider the following query:

Ukázkový dotaz

Výsledkem toho dotazu je následující vizuál:That query results in the following visual:

Vizuální výsledek dotazu

Aktualizací vizuálu vznikne následující dotaz SQL.Refreshing that visual will result in the SQL query shown here. Jak vidíte, pro tabulky Web Sales, Item a Date_dim existují tři dílčí výběry. Každý z nich vrátí všechny sloupce příslušné tabulky, přestože vizuál ve skutečnosti odkazuje jenom na čtyři z nich.As you can tell, there are three subselects for Web Sales, Item, and Date_dim, that each return all the columns on the respective table, even though only four columns are actually referenced by the visual. Dotazy, které jsou v dílčích výběrech stínované, jsou přesně výsledkem dotazů definovaných Editorem dotazů.These queries in the subselects that are shaded are exactly the result of the queries defined in Query Editor. Při tomto způsobu použití dílčích výběrů zatím nebyl zaznamenán dopad na výkon zdrojů dat, které podporují DirectQuery.Use of subselects in this manner hasn't been found to impact performance for the data sources so far supported for DirectQuery. Zdroje dat jako SQL Server odkazy na ostatní sloupce optimalizují.Data sources like SQL Server optimize away the references to the other columns.

Power BI používá tento způsob, protože použitý dotaz SQL může poskytnout přímo analytik.Power BI employs this pattern because the SQL query used can be provided directly by the analyst. Použije se přesně tak, jak je poskytnutý, aniž by došlo k pokusu o jeho přepsání.It's used "as provided", without an attempt to rewrite it.

Dotaz SQL použitý v dodaném tvaru

Další krokyNext steps

V tomto článku jsou popsané aspekty DirectQuery, které mají společné všechny zdroje dat.This article describes aspects of DirectQuery that are common across all data sources. jsou zde i určité podrobnosti specifické pro jednotlivé zdroje.There are certain details that are specific to individual sources. Následující články popisují konkrétní prostředky:See the following articles covering specific sources:

Další informace o DirectQuery získáte z následujícího zdroje:For more information about DirectQuery, see the following resource: