Informácie o používaní režimu DirectQuery v službe Power BIAbout using DirectQuery in Power BI

Keď používate aplikáciu Power BI Desktop alebo službu Power BI, môžete sa pripojiť k rôznym druhom zdrojov údajov a rôznymi spôsobmi tieto pripojenia údajov vytvárať.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. Údaje môžete do služby Power BI importovať, čo je najbežnejší spôsob získania údajov, alebo sa k údajom v pôvodnom zdrojovom odkladacom priestore pripojíte priamo. Tento postup sa označuje ako 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. Tento článok popisuje funkcie režimu DirectQuery:This article describes DirectQuery capabilities:

  • Rôzne možnosti pripojenia v rámci režimu DirectQueryDifferent connectivity options for DirectQuery
  • Pokyny, kedy zvážiť použitie režimu DirectQuery namiesto importovaniaGuidance for when you should consider using DirectQuery rather than import
  • Nevýhody používania režimu DirectQueryDrawbacks of using DirectQuery
  • Osvedčené postupy pri používaní režimu DirectQueryBest practices for using DirectQuery

Osvedčené postupy použite pri rozhodovaní, či použiť import alebo režim DirectQuery:Follow best practices for using import versus DirectQuery:

  • Vždy, keď je to možné, mali by ste údaje do služby Power BI importovať.You should import data to Power BI wherever possible. Pri importe sa využíva vysoký výkon nástroja dotazov služby Power BI, ktorý ponúka interaktívne prostredie s množstvom funkcií.Importing takes advantage of the high performance query engine of Power BI, and provides a highly interactive and fully featured experience.
  • Ak importovanie údajov nie je na vaše účely vhodné, zvážte použitie režimu DirectQuery.If your goals can't be met by importing data, consider using DirectQuery. Ak sa napríklad údaje často menia a zostavy musia zodpovedať najnovším údajom, režim DirectQuery môže byť vhodnejšou voľbou.For example, if the data is changing frequently and reports must reflect the latest data, DirectQuery may be best. Použitie režimu DirectQuery je vhodné len vtedy, ak základný zdroj údajov môže typickému agregačnému dotazu poskytnúť interaktívne dotazy (menej ako 5 sekúnd) a je schopný zvládnuť záťaž vyplývajúcu z generovania dotazov.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. Mali by ste tiež starostlivo zvážiť zoznam obmedzení, ktoré prináša použitie režimu DirectQuery.Additionally, the list of limitations for the use of DirectQuery should be considered carefully.

Množina funkcií, ktorú služba Power BI ponúka pri používaní importu a režimu DirectQuery, sa postupne vyvíja.The set of capabilities offered by Power BI for import and DirectQuery evolve over time. Zmeny budú zahŕňať poskytnutie väčšej flexibility pri používaní importovaných údajov, aby bolo možné import využívať vo viacerých prípadoch, a tiež eliminovanie niektorých nevýhod použitia režimu 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 ohľadu na tieto vylepšenia platí, že pri používaní režimu DirectQuery je rozhodujúci výkon základného zdroja údajov.Regardless of improvements, when using DirectQuery, the performance of the underlying data source always remains a major consideration. Ak je základný zdroj údajov pomalý, použitie režimu DirectQuery nebude pre daný zdroj vhodné.If that underlying data source is slow, using DirectQuery for that source will remain unfeasible.

Tento článok popisuje použitie režimu DirectQuery so službou Power BI, a nie so službou SQL Server Analysis Services.This article covers DirectQuery with Power BI, and not SQL Server Analysis Services. Režim DirectQuery je zahrnutý aj v službe SQL Server Analysis Services.DirectQuery is also a feature of SQL Server Analysis Services. Mnohé podrobnosti popísané v tomto článku preto platia aj pre túto funkciu.Many of the details described in this article apply to that feature. Existujú však aj dôležité rozdiely.There are also important differences. Informácie o používaní režimu DirectQuery so službou SQL Server Analysis Services nájdete v téme Režim DirectQuery v službe 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ánok sa zameriava na odporúčaný pracovný postup pri používaní režimu DirectQuery, keď sa zostava vytvára v aplikácii Power BI Desktop, ale zároveň zahŕňa aj postup priameho pripojenia v službe 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 pripojenia služby Power BIPower BI connectivity modes

Služba Power BI sa môže pripojiť k množstvu rôznych zdrojov údajov, medzi ktoré patria:Power BI connects to a large number of varied data sources, encompassing:

  • Online služby (Salesforce, Dynamics 365 a ďalšie),Online services (Salesforce, Dynamics 365, others)
  • databázy (SQL Server, Access, Amazon Redshift a ďalšie),Databases (SQL Server, Access, Amazon Redshift, others)
  • jednoduché súbory (Excel, JSON a ďalšie),Simple files (Excel, JSON, others)
  • iné zdroje údajov (Spark, webové lokality, Microsoft Exchange a ďalšie).Other data sources (Spark, Web sites, Microsoft Exchange, others)

V prípade týchto zdrojov je možné údaje do služby Power BI importovať.For these sources, it's possible to import the data to Power BI. K niektorým sa ale môžete pripojiť aj pomocou režimu DirectQuery.For some, it's also possible to connect using DirectQuery. Súhrn zdrojov údajov, ktoré podporujú režim DirectQuery, nájdete v téme Zdroje údajov podporované režimom DirectQuery.For a summary of the sources that support DirectQuery, see Data Sources supported by DirectQuery. V budúcnosti plánujeme pridať do režimu DirectQuery podporu ďalších zdrojov údajov. Zameriavame sa predovšetkým na zdroje, pri ktorých je možné v rámci interaktívnych dotazov očakávať dostatočný výkon.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 špeciálny prípad.SQL Server Analysis Services is a special case. Keď sa pripájate k službe SQL Server Analysis Services, môžete si vybrať medzi importom údajov alebo dynamickým pripojením.When connecting to SQL Server Analysis Services, you can choose to import the data or use a live connection. Dynamické pripojenie je podobné režimu DirectQuery.Using a live connection is similar to DirectQuery. Žiadne údaje sa neimportujú a na základný zdroj údajov sa vždy posiela dotaz, ktorý obnovuje vizuál.No data is imported and the underlying data source is always queried to refresh a visual. Dynamické pripojenie sa v mnohých iných ohľadoch líši, a preto sa používa výraz dynamické pripojenie , aby sa odlíšilo od režimu DirectQuery.A live connection is different in many other regards, so a different term, live connection versus DirectQuery, is used.

Existujú tri možnosti pripojenia údajov: import, režim DirectQuerydynamické pripojenie.These three options for connecting to data: import, DirectQuery, and live connection.

Pripojenia v rámci importuImport connections

Keď pri importe použijete v aplikácii Power BI Desktop príkaz Získať údaje, ktorým sa pripojíte k zdroju údajov, napríklad k SQL Serveru, pripojenie sa bude správať takto: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čiatku vykonania príkazu Získať údaje sa pre každú množinu vybraných tabuliek definuje dotaz, ktorý vráti množinu údajov.During the initial Get Data experience, the set of tables selected each define a query that will return a set of data. Tieto dotazy je možné pred načítaním údajov upraviť. Môžete napríklad použiť filtre, agregovať údaje alebo spojiť rôzne tabuľky.Those queries can be edited before loading the data, for example, to apply filters, or aggregate the data, or join different tables.
  • Pri načítavaní sa všetky údaje definované týmito dotazmi importujú do vyrovnávacej pamäte služby Power BI.Upon load, all of the data defined by those queries will be imported into the Power BI cache.
  • Pri vytváraní vizuálu v aplikácii Power BI Desktop sa budú odosielať dotazy na importované údaje.Upon building a visual within Power BI Desktop, the imported data will be queried. Vďaka uloženiu do služby Power BI prebehne dotaz rýchlo.The Power BI store ensures the query will be fast. Všetky zmeny vizuálu sa prejavia okamžite.All changes to the visual are reflected immediately.
  • Zmeny základných údajov sa vo vizuáloch neprejavia.Any changes to the underlying data aren't reflected in any visuals. Ak chcete údaje importovať znova, je potrebné ich obnoviť.It's necessary to Refresh to reimport data.
  • Pri publikovaní zostavy ako súboru .pbix do služby Power BI sa v službe Power BI vytvorí a nahrá množina údajov.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é údaje sú súčasťou tejto množiny údajov.The imported data is included with that dataset. Následne je možné naplánovať obnovenie týchto údajov, aby sa napríklad každý deň znova importovali.It's then possible to schedule refresh of that data, for example, to reimport the data every day. V závislosti od umiestnenia pôvodného zdroja údajov môže byť potrebné nakonfigurovať lokálnu bránu údajov.Depending upon the location of the original data source, it might be necessary to configure an on-premises data gateway.
  • Keď v službe Power BI otvárate existujúcu zostavu alebo vytvárate novú zostavu, opäť sa odosielajú dotazy na importované údaje, čím sa zaisťuje interaktivita.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 alebo celé strany zostáv je možné pripnúť ako dlaždice na tabuli.Visuals, or entire report pages, can be pinned as dashboard tiles. Dlaždice sa aktualizujú automaticky pri každej aktualizácii množiny údajov.The tiles automatically refresh whenever the underlying dataset refreshes.

Pripojenia v rámci režimu DirectQueryDirectQuery connections

Keď pri pripojení pomocou režimu DirectQuery použijete v aplikácii Power BI Desktop príkaz Získať údaje, aby ste sa pripojili k zdroju údajov, pripojenie sa bude správať takto: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čiatočnej fáze príkazu Získať údaje sa vyberie zdroj.During the initial Get Data experience, the source is selected. V prípade relačných zdrojov sa vyberie množina tabuliek a každá z nich stále definuje dotaz, ktorý logicky vráti množinu údajov.For relational sources, a set of tables are selected and each still define a query that logically returns a set of data. V prípade multidimenzionálnych zdrojov, ako napríklad SAP BW, sa vyberie len zdroj.For multidimensional sources, like SAP BW, only the source is selected.
  • Pri načítavaní sa však do ukladacieho priestoru služby Power BI neimportujú žiadne údaje.However, upon load, no data is imported into the Power BI store. Namiesto toho sa budú pri vytváraní vizuálu v aplikácii Power BI Desktop odosielať dotazy na základný zdroj údajov, aby sa získali potrebné údaje.Instead, upon building a visual within Power BI Desktop, queries are sent to the underlying data source to retrieve the necessary data. Čas obnovenia vizuálu závisí od výkonu základného zdroja údajov.The time taken to refresh the visual depends on the performance of the underlying data source.
  • Zmeny príslušných údajov sa v existujúcich vizuáloch neprejavia okamžite.Any changes to the underlying data aren't immediately reflected in any existing visuals. Stále je potrebné vykonať obnovenie.It's still necessary to refresh. Dotazy potrebné pre každý vizuál sa odosielajú znova a vizuál sa podľa potreby aktualizuje.The necessary queries are resent for each visual, and the visual is updated as necessary.
  • Pri publikovaní zostavy do služby Power BI sa v službe Power BI znova vytvorí množina údajov – rovnako ako pri importe.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. Súčasťou tejto množiny údajov však nie sú žiadne údaje.However, no data is included with that dataset.
  • Keď v službe Power BI otvárate existujúcu zostavu alebo vytvárate novú zostavu, opäť sa na získanie potrebných údajov odosiela dotaz na základný zdroj údajov.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 od umiestnenia pôvodného zdroja údajov môže byť potrebné – ako v prípade režimu importu – nakonfigurovať lokálnu bránu údajov pre prípad, že sa údaje obnovia.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 alebo celé strany zostáv je možné pripnúť ako dlaždice na tabuli.Visuals, or entire report pages, can be pinned as Dashboard tiles. Aby sa zabezpečilo, že otváranie tabule bude rýchle, dlaždice sa podľa plánu obnovujú automaticky (napríklad každú hodinu).To ensure that opening a dashboard is fast, the tiles are automatically refreshed on a schedule, for example, every hour. Frekvenciu obnovenia môžete nastaviť tak, aby zodpovedala tomu, ako často sa údaje menia a ako dôležité je zobrazenie najnovších údajov.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. Pri otváraní tabule budú dlaždice zodpovedať údajom z posledného obnovenia, ktoré nemusia nevyhnutne zodpovedať najnovším zmenám vykonaným v základnom zdroji údajov.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. Otvorenú tabuľu môžete obnoviť, aby ste mali istotu, že je aktuálna.You can refresh an open dashboard to ensure it's current.

Dynamické pripojeniaLive connections

Keď sa pripájate k službe SQL Server Analysis Services, existuje možnosť buď údaje z vybraného modelu údajov importovať, alebo sa k vybranému modelu údajov pripojiť dynamicky.When connecting to SQL Server Analysis Services, there's an option to either import data from or connect live to, the selected data model. Ak použijete import, definujete dotaz na externý zdroja služby SQL Server Analysis Services a údaje sa importujú obvyklým spôsobom.If you use import, you define a query against that external SQL Server Analysis Services source, and the data is imported as normal. Ak použijete dynamické pripojenie, žiadny dotaz sa nedefinuje a celý externý model sa zobrazí v zozname polí.If you use connect live, there's no query defined, and the entire external model is shown in the field list.

Situácia popísaná v predchádzajúcom odseku platí aj pri pripájaní k nasledujúcim zdrojom, s tým rozdielom, že neexistuje možnosť importovania údajov: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:

  • Množiny údajov Power BI, napríklad pripojenie k množine údajov Power BI, ktorá bola vytvorená a publikovaná v službe skôr, aby sa pomocou nej vytvorila nová zostava.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.

Správanie zostáv vytvorených pomocou služby SQL Server Analysis Services je pri publikovaní do služby Power BI podobné zostavám DirectQuery nasledujúcimi spôsobmi: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:

  • Keď v službe Power BI otvárate existujúcu zostavu alebo vytvárate novú zostavu, odosielajú sa dotazy na príslušný zdroj služby SQL Server Analysis Services (pravdepodobne bude vyžadovať lokálnu bránu údajov).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 tabule sa automaticky obnovujú podľa plánu, napríklad každú hodinu.Dashboard tiles are automatically refreshed on a schedule, such as every hour.

Existujú však aj dôležité rozdiely.There are also important differences. Pri dynamickom pripojení sa napríklad základnému zdroju služby SQL Server Analysis Services vždy odovzdáva identita používateľa, ktorý otvára zostavu.For instance, for live connections, the identity of the user opening the report is always passed to the underlying SQL Server Analysis Services source.

Porovnanie máme za sebou – zvyšok článku bude zameraný len na režim DirectQuery.With these comparisons out of the way, let's focus solely on DirectQuery for the rest of this article.

Kedy je režim DirectQuery užitočný?When is DirectQuery useful?

V nasledujúcej tabuľke sú popísané scenáre, v ktorých je pripojenie v režime DirectQuery obzvlášť užitočné.The following table describes scenarios where connecting with DirectQuery could be especially useful. Tabuľka obsahuje aj prípady, keď sa za výhodnejšie považuje nechať údaje v pôvodnom zdroji.It includes cases where leaving the data in the original source would be considered beneficial. Popis obsahuje diskusiu o tom, či je daný scenár k dispozícii v službe Power BI.The description includes a discussion about whether the specified scenario is available in Power BI.

ObmedzenieLimitation PopisDescription
Údaje sa často menia a generovanie zostáv je potrebné takmer v reálnom časeData is changing frequently, and near real-time reporting is needed Modely s importovanými údajmi je možné obnoviť maximálne raz za hodinu (častejšie s predplatným na Power BI Pro alebo 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). Ak sa údaje neustále menia a je nutné, aby sa v zostavách zobrazovali najnovšie údaje, použitie importu s plánovaným obnovením nemusí tieto požiadavky spĺňať.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. Údaje môžete streamovať priamo do služby Power BI, hoci v tomto prípade existuje obmedzenie podporovaného objemu údajov.You can stream data directly into Power BI, though there are limits on the data volumes supported for this case.

Použitie režimu DirectQuery naopak znamená, že pri otvorení alebo obnovení zostavy alebo tabule sa vždy zobrazia najnovšie údaje v zdroji.Using DirectQuery, by contrast, means that opening or refreshing a report or dashboard always shows the latest data in the source. Dlaždice tabule je navyše možné aktualizovať častejšie (až každých 15 minút).Additionally, the dashboard tiles can be updated more frequently, as often as every 15 minutes.
Údaje sú veľmi objemnéData is very large Ak sú dáta veľmi objemné, import všetkých údajov nie je uskutočniteľný.If the data is very large, it wouldn't be feasible to import it all. Režim DirectQuery naopak objemné prenosy údajov nevyžaduje, pretože dotazy prebiehajú lokálne.DirectQuery, by contrast, requires no large transfer of data, because it's queried in place.

Z objemných údajov však tiež môže vyplývať, že výkon dotazov voči danému základnému zdroju je príliš nízky (ako je to popísané v časti Dôsledky vyplývajúce z používania režimu 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. Nemusíte zakaždým importovať všetky podrobné údaje.You don't always have to import the full detailed data. Namiesto toho môžete údaje počas importu vopred agregovať.Instead, the data can be pre-aggregated during import. Predbežnú agregáciu údajov pri importe uľahčuje Editor dotazov.The Query Editor makes it easy to pre-aggregate during import. V krajných prípadoch by bolo možné importovať konkrétne agregované údaje potrebné pre jednotlivé vizuály.In the extreme, it would be possible to import exactly the aggregate data needed for each visual. Hoci režim DirectQuery predstavuje najjednoduchší prístup k objemným údajom, importovanie agregovaných údajov môže byť vhodnejšie, ak je základný zdroj prí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.
V základnom zdroji sú definované pravidlá zabezpečeniaSecurity rules are defined in the underlying source Keď sa importujú údaje, služba Power BI sa pripojí k zdroju údajov pomocou prihlasovacích údajov aktuálneho používateľa z aplikácie Power BI Desktop alebo pomocou prihlasovacích údajov, ktoré sú definované v nastavení plánovaného obnovenia zo služby 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. Keď takúto zostavu publikujete a zdieľate, dajte si pozor, aby ste ju zdieľali iba s používateľmi, ktorí môžu zobraziť rovnaké údaje, alebo ako súčasť množiny údajov definujte zabezpečenie na úrovni riadkov.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.

V ideálnom prípade by ste v tejto konfigurácii mohli použiť rovnaké zabezpečenie, aké používa základný zdroj, pretože režim DirectQuery naň vždy odosiela dotaz.Ideally, because DirectQuery always queries the underlying source, this configuration would allow any security in that underlying source to be applied. V súčasnosti sa však služba Power BI vždy pripája k základnému zdroju pomocou rovnakých prihlasovacích údajov, ktoré by sa použili pre import.However, currently Power BI always connects to the underlying source using the same credentials as would be used for import.

Kým služba Power BI nebude umožňovať odovzdanie identity používateľa zostavy základnému zdroju, nebude režim DirectQuery v oblasti zabezpečenia zdroja údajov ponúkať žiadne 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.
platia obmedzenia suverenity údajov,Data sovereignty restrictions apply Niektoré organizácie majú politiky v oblasti suverenity údajov, čo znamená, že údaje nemôžu opustiť priestory organizácie.Some organizations have policies around data sovereignty, meaning that data can't leave the organization premises. Riešenie na základe importu by teda zjavne bolo problematické.A solution based on import would clearly present issues. Naopak, pri použití režimu DirectQuery tieto údaje zostanú v základnom zdroji.By contrast, with DirectQuery that data remains in the underlying source.

Aj režim DirectQuery však uchováva niektoré vyrovnávacie pamäte údajov na úrovni vizuálov v službe Power BI, a to kvôli plánovanému obnoveniu dlaždíc.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.
Základným zdrojom údajov je zdroj OLAP obsahujúci mierkyUnderlying data source is an OLAP source, containing measures Ak základný zdroj údajov obsahuje mierky, napríklad SAP HANA alebo SAP Business Warehouse, import údajov prináša ďalšie 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é údaje majú určitú úroveň agregácie, ktorá je definovaná dotazom.It means that the data imported is at a particular level of aggregation, as defined by the query. Sú to napríklad miery TotalSales (PredajCelkom) za Class (Trieda), Year (Rok) a City (Mesto).For example, measures TotalSales by Class, Year, and City. Ak je vizuál vytvorený tak, že odosiela dotaz na údaje s vyššou úrovňou agregácie, napríklad na TotalSales (PredajCelkom) za Year (Rok), ďalej agreguje už 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. V prípade súčtových mier, ako je napríklad Sum alebo Min je táto agregácia v poriadku, ale pri nesúčtových mierach, ako je napríklad Average (Priemer) alebo 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.

Ak by ste chceli získanie správnych agregovaných údajov (podľa potrieb konkrétneho vizuálu) priamo zo zdroja uľahčiť, museli by ste dotazy odosielať pre každý vizuál ako v prípade režimu 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.

Keď sa pripájate k zdroju SAP Business Warehouse (BW), výberom režimu DirectQuery sa toto spracovanie mierok umožní.When connecting to SAP Business Warehouse (BW), choosing DirectQuery allows for this treatment of measures. Informácie o riešení SAP BW nájdete v téme Režim DirectQuery a SAP BW.For information about SAP BW, see DirectQuery and SAP BW.

V súčasnosti ich však režim DirectQuery cez SAP HANA spracúva rovnakým spôsobom ako relačný zdroj a poskytuje podobné správanie ako import.However, currently DirectQuery over SAP HANA treats it the same as a relational source, and provides similar behavior to import. Tento prístup je podrobnejšie popísaný v téme Režim DirectQuery a SAP HANA.This approach is covered further in DirectQuery and SAP HANA.

Môžeme to zhrnúť tak, že vzhľadom na aktuálne možnosti režimu DirectQuery v službe Power BI ponúka režim DirectQuery výhody v nasledujúcich scenároch:In summary, given the current capabilities of DirectQuery in Power BI, it offers the benefits in the following scenarios:

  • údaje sa často menia a generovanie zostáv je potrebné takmer v reálnom čase,Data is changing frequently, and near real-time reporting is needed.
  • spracovanie veľmi objemných údajov bez potreby ich predbežnej agregácie,Handling very large data, without the need to pre-aggregate.
  • platia obmedzenia suverenity údajov,Data sovereignty restrictions apply.
  • zdrojom je multidimenzionálnym zdrojom obsahujúcim miery (napríklad SAP BW).The source is a multidimensional source containing measures, such as SAP BW.

Podrobnosti v predchádzajúcom zozname sa týkajú iba použitia služby Power BI.The details in the previous list relate to the use of Power BI alone. Na importovanie údajov by ste tiež mohli použiť externý model služby SQL Server Analysis Services alebo služby Azure Analysis Services.Instead, you could use an external SQL Server Analysis Services or Azure Analysis Services model to import data. Na pripojenie k tomuto modelu potom môžete použiť službu Power BI.Then use Power BI to connect to that model. Hoci tento prístup vyžaduje ďalšiu konfiguráciu, poskytuje väčšiu flexibilitu.While that approach would require additional configuration, it does provide greater flexibility. Umožňuje importovať oveľa väčšie objemy údajov.Much larger volumes of data can be imported. Obmedzená nie je ani frekvencia obnovenia údajov.There's no restriction on how frequently the data can be refreshed.

Dôsledky vyplývajúce z používania režimu DirectQueryImplications of using DirectQuery

Používanie režimu DirectQuery má potenciálne negatívne dôsledky, ktoré sú uvedené v tejto časti.Use of DirectQuery does have potentially negative implications, as detailed in this section. Niektoré z týchto obmedzení sa mierne líšia v závislosti od konkrétneho použitého zdroja.Some of those limitations are slightly different depending upon the exact source that is being used. Obmedzeniami sa zaoberáme len tam, kde je to potrebné. Úplne odlišným zdrojom sa venujeme v samostatných článkoch.We address limitations where applicable, and separate articles cover those sources that are substantially different.

Výkon a zaťaženie základného zdrojaPerformance and load on the underlying source

Keď používate režim DirectQuery, práca s ním vo veľkej miere závisí od výkonu základného zdroja údajov.When using DirectQuery, the overall experience depends very much on the performance of the underlying data source. Ak napríklad po zmene hodnoty rýchleho filtra trvá obnovenie vizuálu niekoľko sekúnd (zvyčajne menej ako päť sekúnd), je správanie prostredia primerané.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 porovnaní s okamžitou odozvou pri importe údajov do služby Power BI sa prostredie môže zdať pomalšie.The experience might feel sluggish compared to the immediate response when importing the data to Power BI. Ak pre pomalý zdroj trvá načítanie jednotlivých vizuálov dlhšie ako desať sekúnd, je také prostredie úplne nevyhovujúce.If the slowness of the source causes individual visuals to take longer than tens of seconds, the experience becomes extremely poor. Dotazom môže dokonca vypršať časový limit.Queries may even time out.

Okrem výkonu základného zdroja je potrebné venovať pozornosť aj zaťaženiu zdroja.Along with the performance of the underlying source, pay attention to the load placed upon the source. Zaťaženie má vplyv na výkon.Load impacts performance. Každý používateľ, ktorý otvorí zdieľanú zostavu, a každá dlaždica tabule, ktorá sa obnoví, odošle na základný zdroj aspoň jeden dotaz ku 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. Táto skutočnosť vyžaduje zdroj, ktorý bude schopný takéto zaťaženie spracovať a zároveň si zachovať adekvátny výkon.This fact requires that the source can handle such a query load, while still maintaining reasonable performance.

Vplyv na zabezpečenie pri kombinovaní zdrojov údajovSecurity implications when combining data sources

V modeli DirectQuery môžete použiť viacero zdrojov údajov pomocou funkcie Zložené modely, rovnako ako pri importovaní údajov.It's possible to use multiple data sources in a DirectQuery model, just as when you import data, by using the Composite models feature. Ak používate viaceré zdroje údajov, je dôležité vedieť, ako sa údaje medzi základnými zdrojmi údajov presúvajú a aký vplyv na zabezpečenie to prináša.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.

Obmedzenie transformácií údajovLimited data transformations

Podobné obmedzenia platia aj pre transformácie údajov, ktoré je možné použiť v Editore dotazov.Similarly, there are limitations in the data transformations that can be applied within Query Editor. V prípade importovaných údajov je možné použiť sofistikovanú množinu transformácií, ktorá údaje vyčistí a nanovo sformuje, kým ich použijete na vytvorenie vizuálov (ako je napríklad analýza dokumentov JSON alebo transformácia orientácie údajov zo stĺpca do riadka).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. Tieto transformácie sú v režime DirectQuery ešte viac obmedzené.Those transformations are more limited in DirectQuery.

Keď sa pripájate k zdroju OLAP, ako je napríklad SAP Business Warehouse, nie je možné definovať žiadne transformácie a celý externý model sa preberá zo zdroja.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. V prípade relačných zdrojov, ako je napríklad SQL Server, je stále možné definovať množinu transformácií pre každý dotaz, tieto transformácie sú však z dôvodu výkonu obmedzené.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.

Takéto transformácie bude nutné použiť v každom dotaze na základný zdroj, nie iba raz pri obnovení údajov, takže sú obmedzené na transformácie, ktoré možno adekvátne preložiť do jedného natívneho 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. Ak použijete transformáciu, ktorá je príliš zložitá, zobrazí sa chyba, ktorú buď bude potrebné odstrániť, alebo bude potrebné prepnúť model do režimu importu.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.

Okrem toho sa dotaz z dialógového okna Získať údaje alebo z Editora dotazov použije pri následnom výbere z vygenerovaných a odoslaných dotazov na získanie potrebných údajov pre 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 Editore dotazov preto musí byť v tomto kontexte platný.The query defined in Query Editor must be valid within this context. Konkrétne to znamená, že nie je možné použiť dotaz používajúci bežné tabuľkové výrazy, ani dotaz vyvolávajúci uložené procedúry.In particular, it's not possible to use a query using Common Table Expressions, nor one that invokes Stored Procedures.

Obmedzenia modelovaniaModeling limitations

Výraz modelovanie v tomto kontexte označuje vylepšenie a obohatenie nespracovaných údajov pri vytváraní zostavy, ktorá údaje používa.The term modeling in this context means the act of refining and enriching the raw data, as part of authoring a report using it. Príklady:Examples include:

  • Definovanie vzťahov medzi tabuľkamiDefining relationships between tables
  • Pridanie nových výpočtov (vypočítaných stĺpcov a vypočítavaných mierok)Adding new calculations (calculated columns and measures)
  • Premenovanie a skrytie stĺpcov a mierokRenaming and hiding columns and measures
  • Definovanie hierarchiíDefining hierarchies
  • Definovanie formátovania, predvoleného súhrnu a zoradenia stĺpcovDefining the formatting, default summarization and sort order for a column
  • Zoskupenie alebo klastrovanie hodnôtGrouping or clustering values

Pri používaní režimu DirectQuery je možné stále vykonať mnohé z týchto rozšírení modelu a zároveň stále platí princíp, že nespracované údaje sa rozširujú, aby sa zlepšilo neskoršie používanie.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. Niektoré možnosti modelovania však nie sú pri používaní režimu DirectQuery dostupné alebo sú obmedzené.However, there are some modeling capabilities that aren't available, or are limited, when using DirectQuery. Tieto obmedzenia sa vo všeobecnosti používajú, aby sa predišlo problémom s výkonom.The limitations are generally applied to avoid performance issues. Nižšie je uvedený zoznam obmedzení, ktoré platia pre všetky zdroje DirectQuery.The set of limitations that are common to all DirectQuery sources are listed here. Ďalšie obmedzenia, ktoré sa môžu vzťahovať na jednotlivé zdroje, sú popísané v časti Ďalšie kroky.Additional limitations might apply to individual sources, as described in Next steps.

  • Žiadna preddefinovaná hierarchia údajov: Keď importujete údaje, každý stĺpec s dátumom alebo dátumom a časom bude mať preddefinovanú aj hierarchiu údajov.No built-in date hierarchy: When importing data, every date/datetime column will also have a built-in date hierarchy available by default. Ak napríklad importujete tabuľku predajných objednávok vrátane stĺpca OrderDate (DátumObjednávky), pri výbere možnosti OrderDate vo vizuáli budete môcť vybrať vhodnú úroveň (rok, mesiac, deň), ktorú chcete použiť.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. Táto preddefinovaná hierarchia dátumov nie je v režime DirectQuery k dispozícii.This built-in date hierarchy isn't available when using DirectQuery. Ak je v základnom zdroji k dispozícii tabuľka dátumov (čo je v mnohých údajových skladoch bežné), môžete funkcie časovej inteligencie jazyka DAX použiť ako zvyčajne.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 dátumu a času iba s presnosťou na sekundy: Pri používaní stĺpcov s časom v množine údajov vytvára služba Power BI dotazy iba pre základný zdroj a do úrovne presnosti na sekundy.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 sa do zdroja DirectQuery neposielajú.Queries aren't sent to the DirectQuery source for milliseconds. Túto časť časov preto zo zdrojových stĺpcov odstráňte.Remove this part of the times from your source columns.
  • Obmedzenia vo vypočítaných stĺpcoch: Vypočítané stĺpce sú obmedzené na vnútorné riadky – bez použitia agregačných funkcií môžu odkazovať len na hodnoty iných stĺpcov rovnakej tabuľky.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. Platí tiež, že povolené skalárne funkcie jazyka DAX, ako je napríklad LEFT(), sú obmedzené len na funkcie, ktoré možno odoslať do základného zdroja.Additionally, the DAX scalar functions, such as LEFT(), that are allowed, are limited to those functions that can be pushed to the underlying source. Tieto funkcie sa líšia podľa presných možností zdroja.The functions vary depending upon the exact capabilities of the source. Funkcie, ktoré nie sú podporované, nebudú pri vytváraní funkcie jazyka DAX pre vypočítaný stĺpec uvedené v automatickom dokončovaní a ich použitie spôsobí 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.
  • Žiadna podpora pre funkcie jazyka DAX typu nadradený-podradený: Ak pracujete v režime DirectQuery, nemôžete používať skupinu funkcií DAX PATH(), ktoré sa zvyčajne používajú na spracovanie štruktúr typu nadradený-podradený, ako je napríklad účtovná osnova alebo hierarchia zamestnancov.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.
  • Vypočítané tabuľky nie sú podporované: Možnosť definovať vypočítanú tabuľku pomocou výrazov jazyka DAX nie je v režime DirectQuery podporovaná.Calculated tables aren't supported: The ability to define a calculated table using a DAX expression isn't supported in DirectQuery mode.
  • Filtrovanie vzťahov: Informácie o obojsmernom filtrovaní nájdete v téme Obojsmerné krížové filtrovanie.Relationship filtering: For information about bi-directional filtering, see Bidirectional cross-filtering. Ukážky v tejto technickej dokumentácii sa týkajú služby SQL Server Analysis Services.This whitepaper presents examples in the context of SQL Server Analysis Services. Základné body platia rovnako aj pre službu Power BI.The fundamental points apply equally to Power BI.
  • Žiadne klastrovanie: Keď používate režim DirectQuery, nie je možné využiť funkcie klastrovania na automatické vyhľadávanie skupín.No Clustering: When using DirectQuery, it's not possible to use the Clustering capability, to automatically find groups.

Obmedzenia tvorby zostávReporting limitations

Modely DirectQuery podporujú takmer všetky možnosti tvorby zostáv.Almost all reporting capabilities are supported for DirectQuery models. Pokiaľ základný zdroj dokáže poskytnúť dostačujúcu úroveň výkonu, je možné použiť rovnakú množinu vizualizácií.As such, so long as the underlying source offers a suitable level of performance, the same set of visualizations can be used. Existujú dôležité obmedzenia týkajúce sa niekoľkých ďalších možností, ktoré služba Power BI ponúka po publikovaní zostavy:There are some important limitations in some of the other capabilities offered in the Power BI service after a report is published:

  • Rýchle prehľady nie sú podporované: Rýchle prehľady Power BI prehľadávajú rôzne podmnožiny množiny údajov a pomocou skupiny sofistikovaných algoritmov vytvárajú prehľady, ktoré by vás mohli zaujímať.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. Vzhľadom na dotazy, ktoré sú mimoriadne náročné na výkon, nie je táto funkcia v množinách údajov používajúcich režim DirectQuery k dispozícii.Given the need for very high performance queries, this capability isn't available on datasets using DirectQuery.
  • Funkcia Q&A nie je podporovaná: Funkcia Power BI Q&A vám umožňuje skúmať údaje pomocou intuitívnych funkcií prirodzeného jazyka a získavať odpovede v podobe tabuliek a grafov.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 množinách údajov používajúcich režim DirectQuery však v súčasnosti nie je k dispozícii.However, it's currently not supported on datasets using DirectQuery.
  • Použitie funkcie Explore in Excel (Preskúmať v Exceli) pravdepodobne zhorší výkon: Údaje v množine údajov môžete preskúmať pomocou funkcie Explore in Excel (Preskúmať v Exceli).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. Tento prístup umožňuje vytvoriť v Exceli kontingenčné tabuľky a grafy.This approach allows Pivot Tables and Pivot Charts to be created in Excel. Hoci je táto funkcia v množinách údajov používajúcich režim DirectQuery podporovaná, výkon je väčšinou horší než pri vytváraní vizuálov v službe Power BI. Platí preto, že ak je pre vás použitie Excelu dôležité, mali by ste s tým pri výbere režimu DirectQuery počítať.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čenieSecurity

Ako to už bolo popísané vyššie v tomto článku, zostava v režime DirectQuery vždy po publikovaní do služby Power BI používa na pripojenie k základnému zdroju údajov rovnaké pevne dané prihlasovacie ú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 správanie sa vzťahuje na DirectQuery, nie na dynamické pripojenia k službe SQL Server Analysis Services, ktoré sa v tomto ohľade líšia.This behavior applies to DirectQuery, not to live connections to SQL Server Analysis Services, which is different in this respect. Ihneď po publikovaní zostavy DirectQuery je potrebné nakonfigurovať prihlasovacie údaje používateľa, ktoré sa budú používať.Immediately after publish of a DirectQuery report, it's necessary to configure the credentials of the user that will be used. Kým tieto prihlasovacie údaje nenakonfigurujete, spôsobí to pri otvorení zostavy v službe Power BI chybu.Until you configure the credentials, opening the report on the Power BI service would result in an error.

Keď zadáte prihlasovacie údaje používateľa, budú sa používať bez ohľadu na to, ktorý používateľ zostavu otvorí.Once the user credentials are provided, then those credentials will be used whichever user who opens the report. V tomto ohľade je to úplne rovnaké ako pri importe údajov.In this way, it's exactly like imported data. Každý používateľ uvidí rovnaké údaje, pokiaľ v zostave nedefinujete zabezpečenie na úrovni riadkov.Every user sees the same data, unless row-level security has been defined as part of the report. Rovnakú pozornosť je potrebné venovať aj zdieľaniu zostavy, ak sú v základnom zdroji definované pravidlá zabezpečenia.The same attention must be paid to sharing the report, if there are any security rules defined in the underlying source.

Správanie v službe Power BIBehavior in the Power BI service

Táto časť popisuje správanie zostavy DirectQuery v službe Power BI, aby ste porozumeli úrovni zaťaženia, ktorému bude serverový zdroj údajov vystavený. Toto zaťaženie závisí od počtu používateľov, s ktorými sa budú zostava a tabuľa zdieľať, od zložitosti zostavy a od skutočnosti, či bolo v zostave definované zabezpečenie na úrovni riadkov.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.

Zostavy – otvorenie, ich používanie a úpravyReports – opening, interacting with, editing

Po otvorení zostavy sa všetky vizuály na aktuálne zobrazenej strane obnovia.When a report is opened, all the visuals on the currently visible page refresh. Každý vizuál zvyčajne vyžaduje aspoň jeden dotaz na základný zdroj údajov.Each visual generally requires at least one query to the underlying data source. Niektoré vizuály vyžadujú viac dotazov.Some visuals might require more than one query. Vizuál môže napríklad zobrazovať agregované hodnoty z dvoch rôznych tabuliek faktov alebo obsahovať zložitejšie miery či súčty nesúčtových mier, ako je napríklad miera 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. Pri prechode na novú stranu sa tieto vizuály obnovia.Moving to a new page refreshes those visuals. Pri obnovení sa na základný zdroj odošle nová množina dotazov.Refreshing sends a new set of queries to the underlying source.

Každá interakcia používateľa so zostavou môže spôsobiť obnovenie vizuálov.Every user interaction on the report might result in visuals being refreshed. Výber inej hodnoty v rýchlom filtri napríklad vyžaduje odoslanie novej množiny dotazov, aby sa obnovili všetky dotknuté 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. To isté platí aj pre kliknutie na vizuál, aby sa krížovo zvýraznili ostatné vizuály, alebo pre zmenu filtra.The same is true for clicking on a visual to cross-highlight other visuals, or changing a filter.

Podobne platí, že pri úprave novej zostavy sa vyžaduje, aby sa dotazy odosielali pre každý krok na ceste k vytvoreniu konečného vizuálu.Similarly, editing a new report requires queries to be sent for each step on the path to produce the final visual.

Niektoré výsledky sa tiež ukladajú do vyrovnávacej pamäte.There's some caching of results. Ak boli nedávno získané presne rovnaké výsledky, vizuál sa obnoví okamžite.The refresh of a visual is instantaneous if the exact same results have recently been obtained. Ak je definované zabezpečenie na úrovni riadkov, vyrovnávacie pamäte sa medzi používateľmi nezdieľajú.If row-level security is defined, such caches aren't shared across users.

Obnovenie tabuleDashboard Refresh

Jednotlivé vizuály alebo celé strany možno pripnúť na tabuľu ako dlaždice.Individual visuals, or entire pages, can be pinned to dashboard as tiles. Dlaždice založené na množinách údajov DirectQuery sa obnovujú automaticky podľa plánu.Tiles based on DirectQuery datasets refresh automatically according to a schedule. Dlaždice odosielajú dotazy na serverový zdroj údajov.Tiles send queries to the back-end data source. Množiny údajov sa predvolene obnovujú každú hodinu, ale v nastavení množiny údajov je možné obnovenie nakonfigurovať v intervale od 15 minút až po celý týždeň.By default, datasets refresh every hour, but can be configured as part of dataset settings to be between weekly and every 15 minutes.

Ak v modeli nie je definované žiadne zabezpečenie na úrovni riadkov, každá dlaždica sa obnoví raz a výsledky sa budú zdieľať medzi všetkými používateľmi.If no row-level security is defined in the model, each tile is refreshed once, and the results shared across all users. V opačnom prípade môže dôjsť k rozsiahlemu násobnému efektu.Otherwise, there can be a large multiplier effect. Každá dlaždica vyžaduje, aby so na základný zdroj odoslali samostatné dotazy za každého používateľa.Each tile requires separate queries per user to be sent to the underlying source.

Tabuľa s desiatimi dlaždicami, zdieľaná so 100 používateľmi, vytvorená v množine údajov pomocou režimu DirectQuery, so zabezpečením na úrovni riadkov a obnovením každých 15 minút by znamenala odosielanie najmenej 1 000 dotazov na serverový zdroj každých 15 minút.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.

Je preto potrebné starostlivo zvážiť používanie zabezpečenia na úrovni riadkov aj konfiguráciu plánu obnovenia.Pay careful consideration to the use of row-level security, and the configuring of the refresh schedule.

Časové limityTime-outs

Pre jednotlivé dotazy v službe Power BI platí štvorminútový časový limit.A time-out of four minutes is applied to individual queries in the Power BI service. Dotazy, ktoré trvajú dlhšie, nebudú úspešné.Queries taking longer than that will fail. Zdôrazňovali sme, že režim DirectQuery odporúčame používať v prípade zdrojov, pri ktorých je výkon dotazov takmer interaktívny.As stressed earlier, we recommend that you use DirectQuery for sources that provide near interactive query performance. Cieľom tohto limitu je zabrániť problémom s príliš dlhou dobou spustenia.This limit is intended to prevent issues from overly long execution times.

Ďalšie dôsledkyOther implications

Medzi ďalšie všeobecné dôsledky použitia režimu DirectQuery patria nasledujúce:Some other general implications of using DirectQuery are as follows:

  • Ak sa údaje menia, je potrebné ich obnovovať, aby sa zabezpečilo zobrazenie najnovších údajov: Vzhľadom na použitie vyrovnávacích pamätí nemožno zaručiť, že vizuál bude vždy zobrazovať najnovšie údaje.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 napríklad zobrazovať transakcie za posledný deň.For example, a visual might show the transactions in the last day. Pretože sa zmenil rýchly filter, pravdepodobne sa obnoví, aby zobrazoval transakcie za posledné dva dni.Because of a slicer being changed, it might refresh to show the transactions for the last two days. K týmto transakciám môžu patriť nedávne, novovzniknuté transakcie.The transactions could include recent, newly arrived transactions. Vrátením rýchleho filtra do pôvodného stavu by sa opäť zobrazila predtým získaná hodnota z vyrovnávacej pamäte.Returning the slicer to its original value would result in it again showing the cached value previously obtained.

    Po výbere možnosti Obnoviť sa všetky vyrovnávacie pamäte vymažú a obnovia sa všetky vizuály na strane, aby sa zobrazili najnovšie údaje.Selecting Refresh clears any caches and refreshes all the visuals on the page to show the latest data.

  • Ak sa údaje menia, neexistuje žiadna záruka konzistencie medzi vizuálmi: Rôzne vizuály na rovnakej alebo inej strane či stranách, sa môžu obnovovať v rôznom čase.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. Ak sa údaje v základnom zdroji menia, nie je zaručené, že bude každý vizuál zobrazovať údaje z rovnakého okamihu.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. Vzhľadom na to, že niektoré vizuály vyžadujú viac ako jeden dotaz (napríklad na získanie podrobností a súčtov), nie je možné zaručiť konzistentnosť ani v rámci jedného 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. Ak by ste konzistentnosť zaručiť chceli, vyžadovalo by to obnovenie všetkých vizuálov vždy, keď sa niektorý vizuál obnoví, spolu s použitím rôznych nákladných funkcií v základnom zdroji údajov, ako je napríklad izolácia snímok.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 minimalizovať tak, že vyberiete možnosť Obnoviť, aby sa obnovili všetky vizuály na strane.This issue can be mitigated to a large extent by again selecting Refresh to refresh all of the visuals on the page. Podobný problém so zaručením konzistentnosti nastáva aj v prípade, že používate režim importu a údaje importujete z viac ako jednej tabuľky.Even if using import mode, there's a similar problem of guaranteeing consistency while importing data from more than one table.

  • Obnovenie v aplikácii Power BI Desktop je potrebné pre premietnutie akýchkoľvek zmien metaúdajov: Po publikovaní zostavy sa vizuály v zostave obnovia použitím možnosti Obnoviť.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. Ak došlo k zmene schémy základného zdroja, týmito zmenami sa automaticky nezmenia dostupné polia v zozname 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. Ak sa zo základného zdroja odstránili tabuľky alebo stĺpce, môže pri obnovení dôjsť k zlyhaniu dotazu.If tables or columns have been removed from the underlying source, it might result in query failure upon refresh. Keď otvoríte zostavu v aplikácii Power BI Desktop a vyberiete možnosť Obnoviť, polia v modeli sa aktualizujú a budú odrážať vykonané zmeny.Opening the report in Power BI Desktop, and choosing Refresh updates the fields in the model to reflect the changes.

  • Obmedzenie jedného milióna riadkov vrátených pre ľubovoľný dotaz: Existuje pevne daný limit jedného milióna riadkov vzťahujúci sa na počet riadkov, ktorý je možné v jednom dotaze vrátiť do základného zdroja.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. Toto obmedzenie zvyčajne nemá žiadne dôsledky a samotné vizuály nebudú zobrazovať toľko bodov.This limit generally has no practical implications, and visuals themselves aren't going to display that many points. Obmedzenie je však možné dosiahnuť, ak služba Power BI nevykonáva úplnú optimalizáciu odoslaných dotazov a vyskytne sa požiadavka na medzivýsledok, ktorý limit presiahne.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. Môže k tomu dôjsť aj pri vytváraní vizuálu – na ceste k prijateľnejšiemu konečnému stavu.It can also occur while building a visual, on the path to a more reasonable final state. Toto obmedzenie by sa dosiahlo napríklad zahrnutím položiek Customer (Zákazník) a TotalSalesQuantity (CelkovýObjemPredaja), ak by existoval viac ako milión zákazníkov a nepoužil by sa žiadny filter.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 vyzerala takto: „Množina výsledkov dotazu na externý zdroj údajov prekročila maximálnu povolenú veľkosť 1 000 000 riadkov.“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."

  • Medzi režimami importu a DirectQuery nie je možné prepínať: Hoci v modeli je možné prejsť z režimu DirectQuery do režimu importu, je potrebné importovať všetky potrebné údaje.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. Takisto potom nie je možné prepnúť späť, a to najmä v dôsledku množiny funkcií, ktoré režim DirectQuery nepodporuje.It's also not possible to switch back, primarily because of the set of features not supported in DirectQuery mode. Modely DirectQuery pracujúce s multidimenzionálnymi zdrojmi, ako napríklad SAP BW, takisto nie je možné prepnúť z režimu DirectQuery na režim importu, a to v dôsledku odlišného spôsobu spracovania externých mier.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.

Režim DirectQuery v službe Power BIDirectQuery in the Power BI service

Z aplikácie Power BI Desktop sú podporované všetky zdroje.All sources are supported from Power BI Desktop. Niektoré zdroje sú dostupné aj priamo zo služby Power BI.Some sources are also available directly from within the Power BI service. Podnikový používateľ môže napríklad použiť službu Power BI, aby sa pripojil k údajom v službe Salesforce, a okamžite získať tabuľu bez toho, aby použil aplikáciu 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.

Priamo v tejto službe sú k dispozícii len dva zdroje podporujúce režim DirectQuery:Only two of the DirectQuery enabled-sources are available directly in the service:

  • SparkSpark
  • Sklad údajov Azure SQLAzure SQL Data Warehouse

Odporúča sa však, aby ste pri používaní režimu DirectQuery s týmito dvomi zdrojmi začínali v aplikácii Power BI Desktop.However, we recommend that any use of DirectQuery over those two sources start within Power BI Desktop. Dôvodom je, že ak počiatočné pripojenie nadviažete v službe Power BI, bude platiť množstvo kľúčových obmedzenia.The reason is that when the connection is initially made in the Power BI service, many key limitations will apply. Aj keď bol východiskový bod jednoduchý, ak začnete v službe Power BI, platia obmedzenia týkajúce sa ďalšieho vylepšovania výslednej zostavy.While the start point was easy, starting in the Power BI service, there are limitations on enhancing the resulting report any further. Nemôžete napríklad vytvárať výpočty, používať analytické funkcie ani obnovovať metaúdaje tak, aby zodpovedali zmenám základnej schémy.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 na úspešné používanie režimu DirectQueryGuidance for using DirectQuery successfully

Ak sa chystáte používať režim DirectQuery, v tejto časti nájdete podrobné pokyny, ktoré vám pomôžu dosiahnuť úspech.If you're going to use DirectQuery, this section provides you with some high-level guidance on how to ensure success. Pokyny v tejto časti vyplývajú z vyššie popísaných dôsledkov používania režimu DirectQuery.The guidance in this section is derived from the implications of using DirectQuery that have been described in this article.

Výkon serverového zdroja údajovBack-end data source performance

Overte si, či obnovenie jednoduchých vizuálov trvá primerane dlho.Validate that simple visuals refresh in a reasonable time. Primeraný čas obnovenia interaktívneho prostredia je do piatich sekúnd.A refresh time should be within 5 seconds to have a reasonable interactive experience. Ak sa vizuály načítavajú dlhšie ako 30 sekúnd, je vysoko pravdepodobné, že po publikovaní zostavy sa objavia ďalšie problémy.If visuals are taking longer than 30 seconds, it's highly likely that further issues will occur following publication of the report. Riešenie tak nemusí byť nepoužiteľné.These issues can make the solution unworkable.

Ak sú dotazy pomalé, skontrolujte dotazy, ktoré sa odosielajú na základný zdroj, a zistite dôvod ich výkonu.If queries are slow, examine the queries being sent to the underlying source, and the reason for the query performance. Tento článok sa nezaoberá rôznymi osvedčenými postupmi optimalizácie databáz pre celý rad potenciálnych základných zdrojov.This article doesn't cover the wide range of database optimization best practices across the full set of potential underlying sources. Zaoberá sa len štandardnými databázovými postupmi, ktoré platia vo väčšine situácií:This article does cover the standard database practices that apply to most situations:

  • Vzťahy založené na stĺpcoch s celými číslami vo všeobecnosti poskytujú vyšší výkon ako spojenia stĺpcov iných typov údajov.Relationships based on integer columns generally perform better than joins on columns of other data types.
  • Mali by sa vytvoriť vhodné indexy.The appropriate indexes should be created. Tvorba indexu vo všeobecnosti znamená, že použijete indexy ukladacieho priestoru stĺpcov v zdrojoch, ktoré ich podporujú, ako je napríklad SQL Server.Index creation generally means the use of column store indexes in those sources that support them, for example, SQL Server.
  • Mali by sa aktualizovať všetky potrebné štatistické údaje v zdroji.Any necessary statistics in the source should be updated.

Pokyny pre návrh modeluModel Design Guidance

Pri definovaní modelu zvážte nasledujúce pokyny:When defining the model, consider following this guidance:

  • Vyhnite sa zložitým dotazom v Editore dotazov.Avoid complex queries in Query Editor. Editor dotazov preloží zložitý dotaz na jediný dotaz SQL.Query Editor translates a complex query into a single SQL query. Tento jediný dotaz sa objaví v čiastkovom výbere každého dotazu odoslaného na danú tabuľku.The single query appears in the subselect of every query sent to that table. Ak by bol tento dotaz zložitý, mohlo by dôjsť k problémom s výkonom pri každom jeho odoslaní.If that query is complex, it might result in performance issues on every query sent. Skutočný dotaz SQL pre množinu krokov je možné získať výberom posledného kroku v Editore dotazov a následným výberom možnosti Zobraziť natívny dotaz v kontextovej ponuke.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žívajte jednoduché mierky.Keep measures simple. Aspoň na začiatku odporúčame obmedziť miery na jednoduché agregácie.At least initially, we recommend limiting measures to simple aggregates. Až keď majú miery uspokojivé výsledky, môžete začať definovať zložitejšie miery. Stále však sledujte ich výkon.Then if the measures operate in a satisfactory manner, more complex measures can be defined, but paying attention to the performance for each.

  • Nepoužívajte vzťahy vo vypočítaných stĺpcoch.Avoid relationships on calculated columns. Tento pokyn sa týka databáz, v ktorých potrebujete, aby sa v spojeniach používalo viac stĺpcov.This guidance is relevant to databases where you need to do multi-column joins. Služba Power BI v súčasnosti neumožňuje, aby bol vzťah založený na viacerých stĺpcoch ako cudzí/primárny kľúč.Power BI today doesn't allow a relationship to be based on multiple columns as the FK/PK. Bežným alternatívnym riešením je zreťaziť stĺpce pomocou vypočítaného stĺpca a spojenie založiť na ňom.The common workaround is to concatenate the columns together using a calculated column, and base the join on that column. Toto alternatívne riešenie je vhodné pre importované údaje, ale v režime DirectQuery spôsobí spojenie výrazu.While this workaround is reasonable for imported data, for DirectQuery, it results in a join on an expression. Takýto výsledok často bráni použitiu indexov a vedie k nízkemu výkonu.That result commonly prevents use of any indexes, and leads to poor performance. Jediným alternatívnym riešením je zlúčiť v základnej databáze niekoľko stĺpcov do jedného.The only workaround is to actually materialize the multiple columns into a single column in the underlying database.

  • Nepoužívajte vzťahy v stĺpcoch uniqueidentifier.Avoid relationships on uniqueidentifier columns. Služba Power BI natívne nepodporuje typ údajov uniqueidentifier.Power BI doesn't natively support a datatype of uniqueidentifier. Ak definujete vzťah medzi stĺpcami typu uniqueidentifier, výsledkom bude dotaz so spojením, ktorého súčasťou je zmena typu.Defining a relationship between columns of type uniqueidentifier column results in a query with a join involving a cast. Opäť platí, že takýto prístup často vedie k nízkemu výkonu.Again, this approach commonly leads to poor performance. Kým tento konkrétny prípad nebude optimalizovaný, jediným alternatívnym riešením je zlúčiť stĺpce alternatívneho typu v základnej databáze.Until this case is specifically optimized, the only workaround is to materialize columns of an alternative type in the underlying database.

  • Skryte vo vzťahoch cieľový stĺpec.Hide the to column on relationships. Cieľový stĺpec vzťahu je zvyčajne primárnym kľúčom cieľovej tabuľky.The to column on relationships is commonly the primary key on the to table. Tento stĺpec by mal byť skrytý.That column should be hidden. Ak je skrytý, nezobrazuje sa v zozname polí a nedá sa použiť vo vizuáloch.If hidden, it doesn't appear in the field list and can't be used in visuals. Stĺpce, na ktorých sú založené vzťahy, sú v skutočnosti systémovými stĺpcami (napríklad náhradné kľúče v údajovom sklade).Often the columns on which relationships are based are in fact system columns, for example, surrogate keys in a data warehouse. Skrytie takýchto stĺpcov je vhodným krokom.It's good practice to hide such columns anyway. Ak má stĺpec význam, vytvorte viditeľný vypočítaný stĺpec s jednoduchým výrazom, ktorý bude rovnaký ako primárny kľúč, ako je to uvedené v nasledujúcom príklade: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
        ...
    
  • Skontrolujte všetky použitia vypočítaných stĺpcov a zmeny typov údajov.Examine all uses of calculated columns and data type changes. Použitie týchto funkcií nemusí byť nutne škodlivé.Use of these capabilities aren't necessarily harmful. Spôsobujú však odosielanie dotazov na základný zdroj, ktoré namiesto jednoduchých odkazov na stĺpce 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 spôsobiť, že sa nepoužijú indexy.That again might result in indexes not being used.

  • Nepoužívajte vo vzťahoch obojsmerné krížové filtrovanie.Avoid use of the bi-directional cross filtering on relationships. Používanie obojsmerného krížového filtrovania môže viesť k príkazom dotazov, ktoré nefungujú správne.Use of bi-directional cross filtering can lead to query statements that don't perform well.

  • Experimentujte s nastavením Predpokladať použitie referenčnej integrity.Experiment with setting Assume referential integrity. Nastavenie Predpokladať použitie referenčnej integrity vo vzťahoch umožňuje dotazom používať príkazy INNER JOIN namiesto OUTER JOIN.The Assume Referential Integrity setting on relationships enables queries to use INNER JOIN statements rather than OUTER JOIN. Tento pokyn zvyčajne zvýši výkon dotazu, aj keď to závisí od špecifikácií konkrétneho zdroja údajov.This guidance generally improves query performance, though it does depend on the specifics of the data source.

  • Nepoužívajte v Editore dotazov filtrovanie relatívnych údajov.Don't use the relative data filtering in Query Editor. V Editore dotazov je možné definovať filtrovanie relatívnych údajov.It's possible to define relative date filtering in Query Editor. Môžete napríklad filtrovať riadky obsahujúce dátum z posledných 14 dní.For example, to filter to the rows where the date is in the last 14 days.

    Filtrovanie riadkov za posledných 14 dní

    Tento filter však bude fungovať na základe pevného dátumu podľa dňa, kedy bol dotaz vytvorený.However, this filter is translated into a filter based on the fixed date, as at the time the query was authored. Tento výsledok si môžete prezrieť zo zobrazenia natívneho dotazu.This result can be seen from viewing the native query.

    Filtrovanie riadkov v natívnom dotaze SQL

    Tento výsledok ste pravdepodobne nechceli.This result is probably not what you wanted. Ak chcete mať istotu, že sa filter použije na základe dátumu v okamihu spustenia zostavy, použite ho radšej v zostave ako filter zostavy.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. V súčasnosti to urobíte tak, že vytvoríte vypočítaný stĺpec, v ktorom pomocou funkcie DAX DATE() vypočítate počet uplynulých dní, a potom tento vypočítaný stĺpec použijete vo filtri.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 pre návrh zostavyReport Design Guidance

Pri vytváraní zostavy s pripojením DirectQuery sa riaďte podľa nasledujúcich pokynov:When creating a report using a DirectQuery connection, follow this guidance:

  • Zvážte použitie možností zníženia počtu dotazov: Služba Power BI umožňuje zostave posielať menej dotazov a zakázať určité interakcie, ktoré by viedli k zníženiu výkonu, ak by výsledné dotazy bežali príliš dlho.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. V aplikácii Power BI Desktop získate prístup k týmto možnostiam tak, že prejdete do ponuky Súbor > Možnosti a nastavenia > Možnosti a vyberte položku Zníženie počtu dotazov.To access these options in Power BI Desktop, go to File > Options and settings > Options and select Query reduction.

    Možnosti zníženia počtu dotazov

    Začiarknutím políčok v časti Zníženie počtu dotazov môžete zakázať krížové zvýrazňovanie v rámci celej zostavy.Checking box selections on the Query reduction let you disable cross-highlighting throughout your entire report. V rýchlych filtroch alebo vo výberoch filtrov môžete tiež zobraziť tlačidlo Použiť.You can also show an Apply button to slicers or filter selections. Umožní vám to vyberať rôzne rýchle filtre a výbery filtrov ešte skôr, než ich použijete.This approach lets you then make many slicer and filter selections before applying them. Kým v rýchlom filtri nevyberiete tlačidlo Použiť, neodošlú sa žiadne dotazy.No queries are sent until you select the Apply button on the slicer. Vybraté možnosti sa potom môžu použiť na filtrovanie údajov.Your selections can then be used to filter the data.

    Tieto možnosti platia pri práci so zostavou v aplikácii Power BI Desktop.These options apply to your report while you interact with it in Power BI Desktop. Platia aj pre používateľov, ktorí zostavu používajú v službe Power BI.These options also apply when your users consume the report in the Power BI service.

  • Najprv použite filtre: Vizuál vždy začnite vytvárať použitím všetkých vhodných filtrov.Apply filters first: Always apply any applicable filters at the start of building a visual. Napríklad skôr než presuniete položky TotalSalesAmount (CelkovýObjemPredaja) a ProductName (NázovProduktu) a potom vyfiltrujete konkrétny rok, použite filter Year (Rok) hneď na začiatku.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ždom kroku vytvárania vizuálu sa odosiela dotaz.Each step of building a visual sends a query. Aj keď je možné pred dokončením prvého dotazu vykonať ďalšiu zmenu, zbytočne to zaťažuje základný 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. Ak filtre použijete už na začiatku, tieto prechodné dotazy budú menej nákladné.By applying filters early, it generally makes those intermediate queries less costly. Ak filtre nepoužijete včas, môže sa stať, že dosiahnete obmedzenie jedného milióna riadkov.Also, failing to apply filters early can result in hitting the 1 million row limit.

  • Obmedzte počet vizuálov na strane: Keď otvoríte stranu alebo zmeníte rýchly filter alebo filter na úrovni strany, obnovia sa všetky vizuály na strane.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 aj limit počtu súbežne odosielaných dotazov.There's also a limit on the number of queries that are sent in parallel. Ako rastie počet vizuálov, budú sa niektoré vizuály obnovovať sériovo, čím sa predĺži čas potrebný na obnovenie celej strany.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. Odporúča sa preto obmedziť počet vizuálov na jednej strane a radšej mať niekoľko jednoduchších strán.For this reason, we recommend that you limit the number of visuals on a single page, and instead have more, simpler pages.

  • Zvážte vypnutie interakcie medzi vizuálmi: V predvolenom nastavení možno vizualizácie na strane zostavy použiť na krížové filtrovanie a krížové zvýraznenie ostatných vizualizácií na strane.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. Ak napríklad v koláčovom grafe vyberiete rok 1999, krížovo sa zvýrazní stĺpcový graf, aby sa zobrazil predaj podľa kategórie za rok 1999.For example, having selected 1999 on the pie chart, the column chart is cross highlighted to show the sales by category for 1999.

    Niekoľko krížovo filtrovaných a zvýraznených vizuálov

    Krížové filtrovanie a krížové zvýraznenie v režime DirectQuery vyžaduje odoslanie dotazov na základný zdroj.Cross-filtering and cross-highlighting in DirectQuery require queries to be submitted to the underlying source. Ak je odozva na výber možností používateľom neprimerane dlhá, mali by ste interakciu radšej vypnúť.The interaction should be switched off if the time taken to respond to users' selections would be unreasonably long. Túto interakciu môžete vypnúť.You can switch off this interaction. Môžete ju vypnúť buď pre celú zostavu (pozrite si popis v predchádzajúcej časti o možnostiach zníženia počtu dotazov), alebo prípad od prípadu.Switch off the interaction for either the entire report, as described earlier for query reduction options, or on a case-by-case basis. Ďalšie informácie nájdete v téme Ako sa vizuály navzájom krížovo filtrujú v zostave Power BI.For more information, see How visuals cross-filter each other in a Power BI report.

Problémy s výkonom môžu okrem predchádzajúcich návrhov spôsobovať aj všetky nasledujúce funkcie zostáv:In addition to the previous suggestions, each of the following reporting capabilities can cause performance issues:

  • Filtre mierok: Vizuály zahŕňajúce miery (alebo zoskupenia stĺpcov) môžu v týchto mierach obsahovať filtre.Measure filters: Visuals containing measures, or aggregates of columns, can contain filters in those measures. Na nasledujúcom obrázku sa napríklad zobrazuje SalesAmount (ObjemPredaja) podľa Category (Kategórie), ale zahrnuté sú len kategórie s predajom nad 20 miliónov.For example, the following graphic shows SalesAmount by Category, but only including those categories with more than 20M of sales.

    Vizuál zobrazujúci miery, ktoré obsahujú filtre

    Výsledkom tohto prístupu je, že sa na základný zdroj odošlú dva dotazy:This approach results in two queries being sent to the underlying source:

    • Prvý dotaz načíta kategórie, ktoré spĺňajú podmienku, že SalesAmount (ObjemPredaja) je väčší ako 20 miliónov.The first query retrieves the Categories meeting the condition, SalesAmount greater than 20 million.
    • Druhý dotaz potom načíta údaje potrebné pre vizuál vrátane kategórií, ktoré spĺňajú podmienku klauzuly WHERE.The second query then retrieves the necessary data for the visual, including the categories that met the condition in the WHERE clause.

    Tento prístup zvyčajne funguje dobre, ak sú kategórií stovky alebo tisíce ako v tomto príklade.This approach generally works well if there are hundreds or thousands of categories, as in this example. Ak je počet kategórií ešte väčší, výkon sa môže znížiť.Performance can degrade if the number of categories is much larger. Ak je kategórií, ktoré vyhovujú podmienke, viac ako milión, dotaz zlyhá.The query fails for more than a million categories meeting the condition. Dôvodom je obmedzenie jedného milióna riadkov, o ktorom sme už hovorili.The 1 million row limit was discussed earlier.

  • Filtre TopN: Rozšírené filtre môžete definovať tak, aby filtrovali iba prvých alebo posledných N hodnôt zoradených podľa miery.TopN filters: Advanced filters can be defined to filter on only the top or bottom N values ranked by some measure. Filtre môžu obsahovať napríklad prvých desať kategórií predchádzajúceho vizuálu.For example, filters can include the top 10 categories in the previous visual. Týmto spôsobom sa na základný zdroj opäť odošlú dva dotazy.This approach again results in two queries being sent to the underlying source. Prvý dotaz však zo základného zdroja vráti všetky kategórie a prvých n hodnôt sa určí až na základe vrátených výsledkov.However, the first query will return all categories from the underlying source, and then the TopN are determined based on the returned results. Tento prístup môže viesť k problémom s výkonom alebo k zlyhaniu dotazu v dôsledku dosiahnutia obmedzenia jedného milióna riadkov, závisí to však od kardinality daného stĺpca.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: Vo všeobecnosti platí, že každá agregácia, napríklad Sum alebo Count Distinct, sa odosiela do základného zdroja.Median: Generally, any aggregation, such as Sum or Count Distinct, is pushed to the underlying source. Neplatí to však pre medián, pretože základný zdroj túto funkciu agregácie väčšinou nepodporuje.However, this fact isn't true for median, which this aggregate is generally not supported by the underlying source. V týchto prípadoch sa podrobné údaje získavajú zo základného zdroja a medián sa vypočítava z vrátených výsledkov.In such cases, the detail data is retrieved from the underlying source, and the median calculated from the returned results. Tento prístup je vhodný, ak sa medián vypočítava z relatívne malého počtu výsledkov.This approach is reasonable when the median is to be calculated over a relatively small number of results. V prípade veľkej kardinality môžu nastať problémy s výkonom alebo môže dotaz zlyhať v dôsledku dosiahnutia obmedzenia jedného milióna riadkov.Performance issues or query failures because of the 1 million row limit occur if the cardinality is large. Napríklad medián počtu obyvateľov krajiny môže byť prijateľný, ale medián predajných cien už nie.For example, Median Country Population might be reasonable, but Median Sales Price might not be.

  • Pokročilé textové filtre (obsahuje a podobné): Keď filtrujete textový stĺpec, pokročilé filtrovanie umožňuje používať rôzne filtre, napríklad obsahuje a začína na.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. Tieto filtre môžu v prípade niektorých zdrojov údajov spôsobovať zníženie výkonu.These filters can certainly result in degraded performance for some data sources. Obzvlášť predvolený filter obsahuje by sa nemal používať, ak sa snažíte nájsť presnú zhodu.In particular, the default contains filter shouldn't be used if what is required is an exact match. Hoci výsledky môžu byť v závislosti od skutočných údajov rovnaké, výkon sa môže v dôsledku použitia týchto indexov významne líšiť.Although the results might be the same, depending on the actual data, the performance might be drastically different because of indexes.

  • Viacnásobné rýchle filtre: Predvolene umožňujú rýchle filtre iba jeden výber.Multi select slicers: By default, slicers only allow a single selection to be made. Ak vo filtroch povolíte viacnásobný výber, môže dôjsť k problémom s výkonom, pretože používateľ v rýchlom filtri vyberie množinu položiek.Allowing multi-selection in filters can cause some performance issues, because the user selects a set of items in the slicer. Ak používateľ vyberie napríklad desať produktov, ktoré ho zaujímajú, znamená to, že po každom novom výbere sa na zdroj odošlú dotazy.For example, if the user selects the 10 products of interest, each new selection results in queries being sent to the source. Aj keby používateľ vybral ďalšiu položku pred dokončením dotazu, takisto to znamená zvýšenú záťaž základného zdroja.Although the user can select the next item before the query completes, this approach results in extra load on the underlying source.

  • Zvážte vypnutie súčtov vo vizuáloch: V tabuľkách a maticiach sa predvolene zobrazujú súčty a medzisúčty.Consider switching off totals on visuals: By default, tables and matrices display totals and subtotals. V mnohých prípadoch sa do základného zdroja musia na získanie hodnôt týchto súčtov odosielať samostatné dotazy.In many cases, separate queries must be sent to the underlying source to obtain the values for such totals. Platí to pri každom použití agregácie DistinctCount alebo v prípadoch, keď sa režim DirectQuery používa s riešením SAP BW alebo SAP HANA.This fact applies whenever using DistinctCount aggregation, or in all cases when using DirectQuery over SAP BW or SAP HANA. Tieto súčty by ste mali vypnúť pomocou tably Formát.Such totals should be switched off by using the Format pane.

Možnosť nastavenia maximálneho počtu pripojení pre DirectQueryMaximum number of connections option for DirectQuery

Môžete nastaviť maximálny počet pripojení, ktoré DirectQuery otvorí pre jednotlivé základné zdroje údajov, a tak kontrolovať počet dotazov súbežne odoslaných na každý zdroj údajov.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.

V predvolenom nastavení DirectQuery otvorí maximálne desať simultánnych pripojení.DirectQuery opens a default maximum number of 10 concurrent connections. Maximálny počet pre aktuálny súbor môžete zmeniť v aplikácii Power BI Desktop.You can change the maximum number for the current file in Power BI Desktop. Prejdite do ponuky Súbor > Možnosti a nastavenia > Možnosti.Go to File > Options and Settings > Options. Na ľavej table v časti Aktuálny súbor vyberte položku DirectQuery.In the Current File section in the left pane, select DirectQuery.

Nastavenie maximálneho počtu pripojení režimu DirectQuery

Toto nastavenie je povolené len vtedy, keď je v aktuálnej zostave aspoň jeden zdroj DirectQuery.The setting is only enabled when there's at least one DirectQuery source in the current report. Hodnota sa vzťahuje na všetky zdroje DirectQuery a na všetky nové zdroje DirectQuery pridané do tej istej zostavy.The value applies to all DirectQuery sources, and to any new DirectQuery sources added to the same report.

Keď zvýšite maximálny počet pripojení na zdroj údajov, umožníte na základný zdroj údajov odosielať viac dotazov, a to až do maximálneho zadané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 prístup je vhodný, ak je na jednej strane veľa vizuálov alebo zostavu otvára mnoho používateľov naraz.This approach is useful when many visuals are on a single page, or many users access a report at the same time. Keď sa dosiahne maximálny počet pripojení, ďalšie dotazy sa zaradia do frontu, kým nebude pripojenie k dispozícii.Once the maximum number of connections is reached, further queries are queued until a connection becomes available. Zvýšenie tohto limitu má za následok väčšiu záťaž základného zdroja, takže nie je zaručené, že toto nastavenie 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.

Keď je zostava publikovaná, maximálny počet súbežných dotazov odosielaných na základný zdroj údajov závisí aj od pevných obmedzení.Once a report is published, the maximum number of concurrent queries sent to the underlying data source also depend upon fixed limits. Tieto obmedzenia sa líšia podľa cieľového prostredia, v ktorom sa zostava publikuje.The limits depend on the target environment to which the report is published. Rôzne prostredia, ako napríklad Power BI, Power BI Premium alebo Power BI Report Server, môžu mať rôzne obmedzenia.Different environments, such as Power BI, Power BI Premium, or Power BI Report Server, can impose different limits.

Diagnostika problémov s výkonomDiagnosing performance issues

Táto časť popisuje, ako diagnostikovať problémy s výkonom a ako získať podrobnejšie informácie, ktoré umožnia optimalizovať zostavy.This section describes how to diagnose performance issues, or how to get more detailed information to allow the reports to be optimized.

Odporúčame začať diagnostikovať problémy s výkonom radšej v aplikácii Power BI Desktop než v službe 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ýkonom často vychádzajú z výkonu základného zdroja.Performance issues are often based on the performance of the underlying source. Problémy môžete ľahšie identifikovať a diagnostikovať v izolovanejšom prostredí aplikácie Power BI Desktop.You can more easily identify and diagnose issues in the more isolated environment of Power BI Desktop. Týmto prístupom okamžite vylúčite určité komponenty, ako je napríklad brána Power BI.This approach initially eliminates certain components, such as the Power BI gateway. Ak sa problémy s výkonom v aplikácii Power BI Desktop nevyskytujú, preskúmajte špecifiká zostavy v službe 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žitočný nástroj na identifikáciu problémov v rámci tohto procesu.The performance analyzer is a useful tool for identifying issues throughout this process.

Podobne sa odporúča najskôr sa pokúsiť izolovať problémy jedného vizuálu, než to skúšať s viacerými vizuálmi na strane.Similarly, we recommend to first try to isolate any issues to an individual visual, rather than many visuals on a page.

Povedzme, že ste vykonali kroky popísané v predchádzajúcich odsekoch tejto časti.Let's say the steps in the previous paragraphs in this section have been taken. Teraz máme na strane v aplikácii Power BI Desktop jeden vizuál, ktorý je stále pomalý.We now have a single visual on a page in Power BI Desktop that is still sluggish. Ak chcete zistiť, aké dotazy aplikácia Power BI Desktop odosiela na základný zdroj, použite analyzátor výkonu.Use the performance analyzer to determine the queries that Power BI Desktop sends to the underlying source. Takisto si môžete prezrieť informácie o sledovaní a diagnostike, ktoré generuje základný zdroj údajov.It's also possible to view traces and diagnostic information that might be emitted by the underlying data source. Sledovanie môže tiež obsahovať užitočné podrobnosti o spustení dotazu a možnostiach jeho zlepšenia.Traces might also contain useful details of how the query was executed, and how it can be improved.

Aj keď informácie o sledovaní v zdroji chýbajú, môžete zobraziť dotazy, ktoré odosiela služba Power BI, spolu s ich časom vykonania. Popis nájdete v ďalšej časti.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čenie dotazov odoslaných aplikáciou Power BI DesktopDetermining the queries sent by Power BI Desktop

Predvolene zaznamenáva aplikácia Power BI Desktop udalosti počas danej relácie do súboru sledovania s názvom FlightRecorderCurrent.trc.By default, Power BI Desktop logs events during a given session to a trace file called FlightRecorderCurrent.trc.

V prípade niektorých zdrojov DirectQuery sú v tomto denníku uvedené všetky dotazy odoslané na základný zdroj údajov.For some DirectQuery sources, this log includes all queries sent to the underlying data source. Zostávajúce zdroje DirectQuery budú zahrnuté v budúcnosti.The remaining DirectQuery sources will be included in the future. Do denníka odosielajú dotazy nasledujúce zdroje:The following sources send queries to the log:

  • SQL ServerSQL Server
  • Databáza Azure SQLAzure SQL Database
  • Sklad údajov Azure SQLAzure SQL Data warehouse
  • OracleOracle
  • TeradataTeradata
  • SAP HANASAP HANA

Súbor sledovania nájdete v priečinku AppData aktuálneho používateľa: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

K tomuto priečinku sa dostanete tak, keď v aplikácii Power BI Desktop vyberiete položky Súbor > Možnosti a nastavenia > Možnosti a potom položku Diagnostika.To get to this folder, in Power BI Desktop, select File > Options and settings > Options, and then select Diagnostics. Zobrazí sa nasledujúce dialógové okno:The following dialog appears:

Prepojenie na otvorenie priečinka sledovania

Keď v časti Možnosti diagnostiky vyberiete položku Otvoriť priečinok s výpismi pri zlyhaní/so sledovaním, otvorí sa nasledujúci priečinok: <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.

Keď prejdete do nadradeného priečinka, zobrazí sa priečinok AnalysisServicesWorkspaces, ktorý obsahuje jeden priečinok pracovného priestoru pre každú otvorenú inštanciu aplikácie Power BI Desktop.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. Tieto priečinky majú k názvu pridanú číselnú príponu, napríklad AnalysisServicesWorkspace2058279583.These folders are named with an integer suffix, such as AnalysisServicesWorkspace2058279583.

V tomto priečinku sa nachádza priečinok \Data.Inside that folder is a \Data folder. Obsahuje súbor sledovania FlightRecorderCurrent.trc pre aktuálnu reláciu služby Power BI.It contains the trace file FlightRecorderCurrent.trc for the current Power BI session. Zodpovedajúci priečinok pracovného priestoru sa po skončení relácie aplikácie Power BI Desktop odstráni.The corresponding workspace folder is deleted when the associated Power BI Desktop session ends.

Na čítanie súborov sledovania môžete použiť nástroj SQL Server Profiler.The trace files can be read using the SQL Server Profiler tool. Môžete si ho bezplatne stiahnuť ako súčasť aplikácie SQL Server Management Studio.Get it as part of the free download SQL Server Management Studio.

Po stiahnutí a inštalácii aplikácie SQL Server Management Studio spustite nástroj SQL Server Profiler.Once you download and install SQL Server Management Studio, run SQL Server Profiler.

SQL Server Profiler

Súbor sledovania otvoríte takto:To open the trace file, take the following steps:

  1. V nástroji SQL Server Profiler vyberte položky File > Open > Trace file (Súbor > Otvoriť > Súbor sledovania).In SQL Server Profiler, select File > Open > Trace file.

  2. Zadajte cestu k súboru sledovania aktuálne otvorenej relácie služby Power BI, naprí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. Otvorte súbor FlightRecorderCurrent.trc.Open FlightRecorderCurrent.trc.

Zobrazia sa všetky udalosti aktuálnej relácie.All events from the current session are displayed. Tu je zobrazený príklad s poznámkami a zvýraznenými skupinami udalostí.An annotated example is shown here, which highlights groups of events. Každá skupina obsahuje nasledujúce udalosti:Each group has the following events:

  • Udalosti Query BeginQuery End, ktoré predstavujú začiatok a koniec dotazu jazyka DAX vygenerovaného používateľským rozhraním (napríklad z vizuálu alebo z vyplnenia zoznamu hodnôt vo filtri používateľského rozhrania).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.
  • Jeden alebo viacero párov udalostí DirectQuery BeginDirectQuery End, ktoré predstavujú dotaz odoslaný na základný zdroj údajov v rámci vyhodnotenia dotazu jazyka 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.

Súbežne môže bežať niekoľko dotazov jazyka DAX, takže je možné udalosti z rôznych skupín prekladať.Multiple DAX queries can run in parallel, so events from different groups can be interleaved. Hodnotu ActivityID môžete použiť na určenie udalostí patriacich do rovnakej skupiny.The value of the ActivityID can be used to determine which events belong to the same group.

SQL Server Profiler s udalosťami Query Begin a Query End

Ďalšie stĺpce, ktoré by vás mohli zaujímať:Other columns of interest are as follows:

  • TextData (Textové údaje): Textové detaily udalosti.TextData: The textual detail of the event. V prípade udalostí Query Begin/End je v podrobnostiach uvedený dotaz DAX.For Query Begin/End events, the detail is the DAX query. V prípade udalostí DirectQuery Begin/End je v podrobnostiach uvedený dotaz SQL odoslaný na základný zdroj.For DirectQuery Begin/End events, the detail is the SQL query sent to the underlying source. V dolnej časti sa tiež zobrazuje obsah stĺpca TextData aktuálne vybranej udalosti.The TextData for the currently selected event is also displayed in the region at the bottom.
  • EndTime (Koncový čas): Čas dokončenia udalosti.EndTime: The time when the event completed.
  • Duration (Trvanie): Čas v milisekundách potrebný na vykonanie dotazu jazyka DAX alebo SQL.Duration: The duration, in milliseconds, taken to execute the DAX or SQL query.
  • Error (Chyba): Označuje prípadnú chybu (ak sa vyskytla, udalosť sa zobrazí červenou farbou).Error: Indicates if an error occurred, in which case the event is also displayed in red.

Na obrázku vyššie sú niektoré menej zaujímavé stĺpce zúžené, aby bolo lepšie vidno ostatné stĺpce.In the image above, some of the less interesting columns have been narrowed, to allow other columns to be seen more easily.

Pri zaznamenávaní a sledovaní odporúčame nasledujúci postup, ktorý vám pomôže diagnostikovať možné problémy s výkonom:We recommend the following approach to capturing a trace to help diagnose a potential performance issue:

  • Otvorte len jednu reláciu aplikácie Power BI Desktop, aby ste sa vyhli neprehľadnému zobrazeniu viacerých priečinkov pracovného priestoru.Open a single Power BI Desktop session, to avoid the confusion of multiple workspace folders.
  • V aplikácii Power BI Desktop vykonajte množinu akcií, ktoré vás zaujímajú.Do the set of actions of interest in Power BI Desktop. Zahrňte aj niekoľko ďalších akcií, aby ste sa uistili, že akcie, ktoré vás zaujímajú, sa zaznamenajú do súboru sledovania.Include a few additional actions, to ensure that the events of interest are flushed into the trace file.
  • Otvorte nástroj SQL Server Profiler a podľa vyššie uvedeného postupu preskúmajte sledovanie.Open SQL Server Profiler and examine the trace, as described previously. Nezabúdajte, že keď zatvoríte aplikáciu Power BI Desktop, súbor sledovania sa odstráni.Remember that closing Power BI Desktop deletes the trace file. Takisto sa okamžite nezobrazia ďalšie akcie v aplikácii Power BI Desktop.Also, further actions in Power BI Desktop don't immediately appear. Súbor sledovania by ste mali zatvoriť a znova otvoriť, aby sa zobrazili nové udalosti.The trace file should be closed and reopened to see the new events.
  • Snažte sa, aby jednotlivé relácie boli primerane krátke, napríklad desať sekúnd akcií, nie niekoľko stoviek.Keep individual sessions reasonably small, perhaps 10 seconds of actions, not hundreds. Týmto spôsobom budete môcť ľahšie interpretovať súbor sledovania.This approach makes it easier to interpret the trace file. Existuje tiež obmedzenie, ktoré sa týka veľkosti súboru sledovania.There's also a limit on the size of the trace file. V dlhých reláciách môže dôjsť k vynechaniu počiatočných udalostí.For long sessions, there's a chance of early events being dropped.

Princíp formátu dotazu odoslaného aplikáciou Power BI DesktopUnderstanding the form of query sent by Power BI Desktop

Aplikácia Power BI Desktop vytvára a odosiela dotazy vo všeobecnom formáte, ktorý používa čiastkové výbery pre každú odkazovanú tabuľku.The general format of queries created and sent by Power BI Desktop use subselects for each of the tables referenced. Čiastkový výber definuje dotaz Editora dotazov.The Query Editor query defines the subselect. Pozrite si napríklad nasledujúce tabuľky TPC-DS na SQL Serveri:For example, assume the following TPC-DS tables in SQL Server:

Tabuľky TPC-DS na SQL Serveri

Zamyslite sa nad nasledujúcim dotazom:Consider the following query:

Vzorový dotaz

Výsledkom tohto dotazu je nasledujúci vizuál:That query results in the following visual:

Vizuálny výsledok dotazu

Obnovením vizuálu vznikne nasledujúci dotaz SQL.Refreshing that visual will result in the SQL query shown here. Ako vidíte, pre tabuľky Web Sales, ItemDate_dim existujú tri čiastkové výbery. Každý z nich vráti všetky stĺpce príslušnej tabuľky, hoci vizuál v skutočnosti odkazuje len na štyri 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, ktoré sú v čiastkových výberoch tieňované, sú presným výsledkom dotazov definovaných Editorom dotazov.These queries in the subselects that are shaded are exactly the result of the queries defined in Query Editor. Pri tomto spôsobe použitia čiastkových výberov zatiaľ nebol zaznamenaný vplyv na výkon zdrojov údajov podporujúcich režim DirectQuery.Use of subselects in this manner hasn't been found to impact performance for the data sources so far supported for DirectQuery. Zdroje údajov, napríklad SQL Server, optimalizujú odkazy na ostatné stĺpce.Data sources like SQL Server optimize away the references to the other columns.

Služba Power BI používa tento spôsob, pretože použitý dotaz SQL môže poskytnúť priamo analytik.Power BI employs this pattern because the SQL query used can be provided directly by the analyst. Použije sa presne tak, ako je poskytnutý, teda bez pokusu o jeho prepísanie.It's used "as provided", without an attempt to rewrite it.

Dotaz SQL použitý v poskytnutej podobe

Ďalší postupNext steps

Tento článok popisuje aspekty režimu DirectQuery spoločné pre všetky zdroje údajov.This article describes aspects of DirectQuery that are common across all data sources. Existujú však aj určité podrobnosti špecifické pre jednotlivé zdroje.There are certain details that are specific to individual sources. Nasledujúce články popisujú konkrétne zdroje:See the following articles covering specific sources:

Ďalšie informácie o režime DirectQuery získate v nasledujúcich zdrojoch:For more information about DirectQuery, see the following resource: