Pokyny ke složenému modelu v Power BI DesktopuComposite model guidance in Power BI Desktop

Článek je určený modelářům dat, kteří v Power BI vyvíjejí složené modely.This article targets data modelers developing Power BI Composite models. Popisuje případy použití složeného modelu a nabízí pokyny při jeho návrhu.It describes Composite model use cases, and provides you with design guidance. Podle těchto pokynů byste měli především zjistit, jestli je složený model pro vaše řešení vhodný.Specifically, the guidance is to help you determine whether a Composite model is appropriate for your solution. Pokud tomu tak je, pomůže vám tento článek navrhnout optimální model.If it is, then this article will also help you design an optimal model.

Poznámka

Článek neobsahuje úvod do složených modelů.An introduction to Composite models is not covered in this article. Pokud složené modely ještě úplně neznáte, doporučujeme si napřed přečíst článek Použití složených modelů v Power BI Desktopu.If you're not completely familiar with Composite models, we recommend you first read the Use composite models in Power BI Desktop article.

Složené modely obsahují alespoň jeden zdroj DirectQuery, a proto je také potřeba mít podrobné znalosti o relacích modelu, modelech DirectQuery a znát pokyny k návrhu modelu DirectQuery.Because Composite models consist of at least one DirectQuery source, it's also important that you have a thorough understanding of model relationships, DirectQuery models, and DirectQuery model design guidance.

Případy použití složeného modeluComposite model use cases

Pokud je to možné, je nejlepší vyvíjet model v režimu importu.Whenever possible, it's best to develop a model in Import mode. Takový model nabízí největší pružnost při návrhu a nejlepší výkon.This mode provides the greatest design flexibility, and best performance.

Importní modely ale nedokáží řešit problémy spojené s velkými objemy dat ani se sestavami založenými na datech, která jsou téměř v reálném čase.However, challenges related to large data volumes, or reporting on near real-time data, cannot be solved by Import models. V obou případech byste měli zvážit model DirectQuery, pokud máte data uložena v jediném datovém zdroji, který je podporovaný režimem DirectQuery.In either of these cases, you can consider a DirectQuery model, providing your data is stored in a single data source that's supported by DirectQuery mode.

O vývoji složeného modelu také můžete uvažovat v následujících situacích.Further, you can consider developing a Composite model in the following situations.

  • Máte model DirectQuery, ale chcete zvýšit výkon.Your model could be a DirectQuery model, but you want to boost performance. U složeného modelu můžete výkon zvýšit tím, že pro každou tabulku nakonfigurujete vhodné úložiště.In a Composite model, performance can be improved by configuring appropriate storage for each table. Můžete také přidat agregace.You can also add aggregations. Oběma těmto optimalizacím se budeme věnovat v další části tohoto článku.Both of these optimizations are discussed later in this article.
  • Chcete model DirectQuery zkombinovat s dalšími daty, které musíte do modelu importovat.You want to combine a DirectQuery model with additional data, which must be imported into the model. Importovaná data můžete načíst z jiného zdroje dat nebo z vypočtených tabulek.Imported data can be loaded from a different data source, or from calculated tables.
  • Dva nebo více zdrojů dat DirectQuery chcete zkombinovat do jednoho modelu.You want to combine two or more DirectQuery data sources into a single model.

Poznámka

Složené modely nemůžete kombinovat s živě připojenými zdroji ani s analytickými databázovými zdroji DirectQuery.Composite models cannot combine Live Connection sources or DirectQuery analytic database sources. K živě připojeným zdrojům patří externě hostované modely a datové sady Power BI.Live Connection sources include external-hosted models, and Power BI datasets. K analytickým databázovým zdrojům DirectQuery patří SAP Business Warehouse a SAP HANA.DirectQuery analytic database sources include SAP Business Warehouse, and SAP HANA.

Optimalizace návrhu modeluOptimize model design

Složený model můžete optimalizovat tak, že nakonfigurujete tabulku režimů úložiště a přidáte agregace.A Composite model can be optimized by configuring table storage modes, and by adding aggregations.

Režim úložiště tabulekTable storage mode

Ve složeném modelu můžete režim úložiště nakonfigurovat pro každou tabulku (s výjimkou počítaných tabulek):In a Composite model, you can configure the storage mode for each table (except calculated tables):

  • DirectQuery: Tento režim doporučujeme nastavit u tabulek, ve kterých je velké množství dat nebo musí poskytovat výsledky téměř v reálném čase.DirectQuery: We recommend you set this mode for tables that represent large data volumes, or which need to deliver near real-time results. Data se do těchto tabulek nikdy neimportují.Data will never be imported into these tables. Obvykle půjde o tabulky typu fakta, které se používají k souhrnům.Usually, these tables will be fact-type tables—tables used for summarization.
  • Import: Tento režim doporučujeme nastavit u tabulek typu dimenze, které se používají k filtrování a seskupení.Import: We recommend you set this mode for dimension-type tables—tables used for filtering and grouping. U tabulek založených na zdrojích, které nejsou podporované v režimu DirectQuery, je to vlastně jediná možnost.In fact, it's the only option for tables based on sources not supported by DirectQuery mode. Počítané tabulky jsou vždy importované.Calculated tables are always Import tables.
  • Duální: Tento režim doporučujeme nastavit u tabulek typu dimenze, pokud existuje možnost, že se na ně budete dotazovat společně s tabulkami DirectQuery typu fakta ze stejného zdroje.Dual: We recommend you set this mode for dimension-type tables, when there's a possibility they'll be queried together with DirectQuery fact-type tables from the same source.

Při dotazech Power BI do složeného modelu existuje několik možných scénářů:There are several possible scenarios when Power BI queries a Composite model:

  • Dotazy jenom do importovaných nebo duálních tabulek: Všechna data se načítají z mezipaměti modelu.Queries only Import or Dual table(s): All data is retrieved from the model cache. Nabízí nejrychlejší výkon, jaký je možný.It will deliver the fastest possible performance. Tento scénář je častý u tabulek typu dimenze, do kterých se dotazují filtry nebo vizuály průřezů.This scenario is common for dimension-type tables queried by filters or slicer visuals.
  • Dotazy do duálních tabulek nebo do tabulek DirectQuery ze stejného zdroje: Všechna data se načítají odesláním jednoho nebo několika nativních dotazů do zdroje DirectQuery.Queries Dual table(s) or DirectQuery table(s) from the same source: All data is retrieved by sending one or more native queries to the DirectQuery source. Nabízí nejrychlejší možný výkon. Platí to zejména, pokud ve zdrojových tabulkách existují vhodné indexy.It will deliver the fastest possible performance, especially when appropriate indexes exist on the source tables. Tento scénář je častý u dotazů, které spojují duální tabulky typu dimenze s tabulkami DirectQuery typu fakta.This scenario is common for queries that relate Dual dimension-type tables and DirectQuery fact-type tables. Tyto dotazy jsou uvnitř ostrůvku, a proto se všechny relace typu 1:1 nebo 1:N vyhodnotí jako normální relace.These queries are intra-island, and so all one-to-one or one-to-many relationships are evaluated as regular relationships.
  • Všechny další dotazy: Tyto dotazy zahrnují relace více tabulek.All other queries: These queries involve cross-island relationships. Je to buď tím, že je importovaná tabulka spojená s tabulkou DirectQuery nebo je duální tabulka spojená s tabulkou DirectQuery z jiného zdroje – v takovém případě se chová jako importovaná tabulka.It's either because an Import table relates to a DirectQuery table, or a Dual table relates to a DirectQuery table from a different source—in which case it behaves as an Import table. Všechny relace se vyhodnotí jako omezené.All relationships are evaluated as limited relationships. Také to znamená, že seskupení použitá u jiných tabulek než DirectQuery musí být odeslána zdroji DirectQuery jako virtuální tabulka.It also means that groupings applied to non-DirectQuery tables must be sent to the DirectQuery source as a virtual table. V takovém případě nebude nativní dotaz účinný. Platí to zvláště u velkých skupinových sad.In this case, the native query can be inefficient, especially for large grouping sets. Také se může stát, že nativnímu dotazu budou vystavena citlivá data.And, it has the potential to expose sensitive data in the native query.

Shrnutí doporučení:In summary, we recommend that you:

  • Důkladně zvažte, jestli je pro vás složený model tím správným řešením. Sice umožňuje na úrovni modelu integrovat různé zdroje dat, ale přináší také komplikace při návrhu, které můžou mít další následky.Consider carefully that a Composite model is the right solution—while it allows model-level integration of different data sources, it also introduces design complexities with possible consequences
  • Pokud se do tabulky typu fakta ukládají velké objemy dat nebo je potřeba, aby tabulka poskytovala výsledky téměř v reálném čase, nastavte režim úložiště na DirectQuery.Set the storage mode to DirectQuery when a table is a fact-type table storing large data volumes, or it needs to deliver near real-time results
  • Pokud se jedná o tabulku typu dimenze, do které se budete dotazovat společně s tabulkami DirectQuery typu fakta ze stejného zdroje, nastavte režim úložiště na duální.Set the storage mode to Dual when a table is a dimension-type table, and it will be queried together with DirectQuery fact-type tables based on the same source
  • Nakonfigurujte vhodnou frekvenci aktualizace, abyste udrželi mezipaměť modelu pro duální tabulky (případně i pro závislé počítané tabulky) synchronizovanou se zdrojovou databází (nebo databázemi).Configure appropriate refresh frequencies to keep the model cache for Dual tables (and any dependent calculated tables) in sync with the source database(s)
  • Snažte se udržet data ve všech zdrojích integrovaná (včetně mezipaměti modelu). Omezené relace vyloučí řádky, pokud si hodnoty souvisejících sloupců neodpovídají.Strive to ensure data integrity across data sources (including the model cache)—limited relationships will eliminate rows when related column values don't match
  • Optimalizujte zdroje dat DirectQuery. Použijte k tomu vhodné indexy, abyste zajistili účinné spojení, filtrování a seskupení.Optimize DirectQuery data sources with appropriate indexes for efficient joins, filtering and grouping
  • Nenačítejte do importovaných nebo duálních tabulek citlivá data, pokud hrozí riziko zachycení nativního dotazu. Další informace najdete v tématu Použití složených modelů v Power BI Desktopu (vliv na zabezpečení).Don't load sensitive data into Import or Dual tables if there's risk of a native query being intercepted—for more information, see Use composite models in Power BI Desktop (Security implications)

AgregaceAggregations

Ve složeném modelu můžete do tabulek DirectQuery přidat agregace.You can add aggregations to DirectQuery tables in your Composite model. Agregace se ukládají do mezipaměti modelu, a proto se chovají jako importované tabulky (i když je nemůžete použít jako tabulky modelu).Aggregations are cached in the model, and so they behave as Import tables (although they can't be used like a model table). Jejich úkolem je zlepšit výkon náročnějších dotazů.Their purpose is to improve performance for "higher grain" queries. Další informace najdete v článku Agregace v Power BI Desktopu.For more information, see Aggregations in Power BI Desktop.

Doporučujeme, aby se agregační tabulka řídila těmito základními pravidly: Počet jejích řádků by měl být alespoň desetkrát menší než u podkladové tabulky.We recommend that an aggregation table follows a basic rule: Its row count should be at least a factor of 10 smaller than the underlying table. Pokud je například v podkladové tabulce uložena miliarda řádků, neměl by počet řádků agregační tabulky překročit 100 milionů.For example, if the underlying table stores 1 billion rows, then the aggregation table shouldn't exceed 100 million rows. Dodržením tohoto pravidla zajistíte dosažení odpovídajícího výkonu v poměru k nákladům na vytvoření a údržbu agregační tabulky.This rule ensures there's an adequate performance gain relative to the cost of creating and maintaining the aggregation table.

Další krokyNext steps

Další informace související s tímto článkem najdete v následujících tématech:For more information related to this article, check out the following resources: