Power BI Desktop のストレージ モードStorage mode in Power BI Desktop

Microsoft Power BI Desktop では、テーブルのストレージ モードを指定することができます。In Microsoft Power BI Desktop, you can specify the storage mode of tables. ストレージ モードでは、Power BI Desktop でレポートのテーブル データをメモリ内にキャッシュするかどうかを制御することができます。Storage mode lets you control whether Power BI Desktop caches table data in-memory for reports.

Power BI Desktop のストレージ モード

ストレージ モードを設定すると、多くの利点があります。Setting the storage mode provides many advantages. ご利用のモデルで、各テーブルのストレージ モードを個別に設定できます。You can set storage mode for each table individually in your model. これにより、単一データセットが有効になり、次の利点が得られます。This action enables a single dataset, which provides the following benefits:

  • クエリのパフォーマンス:ユーザーが Power BI レポートのビジュアルを操作するときに、Data Analysis Expressions (DAX) クエリがデータセットに送信されます。Query performance: As users interact with visuals in Power BI reports, Data Analysis Expressions (DAX) queries are submitted to the dataset. ストレージ モードを適切に設定してデータをメモリにキャッシュすると、クエリのパフォーマンスとレポートの対話機能が向上します。Caching data into memory by properly setting the storage mode can boost the query performance and interactivity of your reports.

  • 大規模なデータセット:キャッシュされていないテーブルでは、キャッシュ目的でメモリが消費されません。Large datasets: Tables that aren't cached don't consume memory for caching purposes. 大きすぎて、またはコストが高すぎてメモリ内に完全にキャッシュできない大規模なデータセットに対して、対話型の分析を有効にすることができます。You can enable interactive analysis over large datasets that are too big or expensive to completely cache into memory. キャッシュする価値があるテーブルと、そうでないテーブルを選択できます。You can choose which tables are worth caching, and which aren't.

  • データ更新の最適化:キャッシュされていないテーブルを更新する必要はありません。Data refresh optimization: Tables that aren't cached don't need to be refreshed. サービス レベル アグリーメントとビジネス要件を満たすために必要なデータのみをキャッシュすることで、更新時間を短縮できます。You can reduce refresh times by caching only the data that's necessary to meet your service level agreements and your business requirements.

  • ほぼリアルタイムの要件:ほぼリアルタイムの要件があるテーブルの場合、キャッシュしないことで、データの待機時間を短縮できる可能性があります。Near-real time requirements: Tables with near-real time requirements might benefit from not being cached, to reduce data latency.

  • 書き戻し:ビジネス ユーザーは、書き戻しを利用し、セル値を変更して what-if シナリオを探索できます。Writeback: Writeback enables business users to explore what-if scenarios by changing cell values. カスタム アプリケーションは、データ ソースに変更を適用できます。Custom applications can apply changes to the data source. キャッシュされていないテーブルでは変更をすぐに表示できるため、結果を即時に分析できます。Tables that aren't cached can display changes immediately, which allows instant analysis of the effects.

Power BI Desktop のストレージ モード設定は、次の 3 つの関連機能の 1 つです。The storage mode setting in Power BI Desktop is one of three related features:

  • 複合モデル:DirectQuery 接続やインポートなど、2 つ以上のデータ接続を任意の組み合わせでレポートに含めることができます。Composite models: Allows a report to have two or more data connections, including DirectQuery connections or Import, in any combination. 詳細については、「Power BI Desktop で複合モデルを使用する」を参照してください。For more information, see Composite models in Power BI Desktop.

  • 多対多のリレーションシップ:複合モデルでは、テーブル間で多対多のリレーションシップを確立することができます。Many-to-many relationships: With composite models, you can establish many-to-many relationships between tables. 多対多のリレーションシップでは、テーブル内の一意の値の要件が除外されます。Many-to-many relationships removes requirements for unique values in tables. また、リレーションシップを確立するためだけに新しいテーブルを導入するなどの以前の回避策も除外されます。It also removes prior workarounds, such as introducing new tables only to establish relationships. 詳細については、「Power BI Desktop での多対多カーディナリティのリレーションシップ」を参照してください。For more information, see Many-to-many relationships in Power BI Desktop.

  • ストレージ モード:どのビジュアルでバックエンド データ ソースへのクエリが必要かを指定できるようになりました。Storage mode: You can now specify which visuals require a query to back-end data sources. クエリを必要としないビジュアルは、それらが DirectQuery に基づいている場合でもインポートされます。Visuals that don't require a query are imported even if they're based on DirectQuery. この機能はパフォーマンスの向上とバック エンドの負荷の軽減に役立ちます。This feature helps improve performance and reduce back-end load. 以前は、スライサーなどのシンプルなビジュアルでも、バックエンド ソースに送信されるクエリが開始されました。Previously, even simple visuals, such as slicers, initiated queries that were sent to back-end sources. ストレージ モードについては、この記事で詳しく説明します。Storage mode is described further in this article.

ストレージ モード プロパティを使用するUse the storage mode property

ストレージ モードは、モデルの各テーブルに設定できるプロパティです。Storage mode is a property that you can set on each table in your model. ストレージ モードを設定するには、 [フィールド] ウィンドウで、プロパティを設定するテーブルを右クリックし、 [プロパティ] を選択します。To set the storage mode, in the Fields pane, right-click the table whose properties you want to set, and then select Properties.

コンテキスト メニューの [プロパティ] コマンド

現在のプロパティは、テーブルの [フィールド プロパティ] ウィンドウ内の [ストレージ モード] ドロップダウン リストに表示されます。The current property is displayed in the Storage mode drop-down list in the table's Field properties pane. そこで現在のストレージ モードを確認したり、変更したりすることができます。You can view the current storage mode or modify it there.

テーブルのストレージ モードを設定する

ストレージ モードには、次の 3 つの値があります。There are three values for storage mode:

  • インポート:値が [インポート] に設定されている場合、インポートされたテーブルがキャッシュされます。Import: When the value is set to Import, imported tables are cached. インポート テーブルからデータを返す Power BI データセットに送信されるクエリは、キャッシュされたデータからのみ実行できます。Queries submitted to the Power BI dataset that return data from Import tables can be fulfilled only from cached data.

  • DirectQuery:この設定では、DirectQuery テーブルはキャッシュされません。DirectQuery: With this setting, DirectQuery tables aren't cached. Power BI データセットに送信され、DirectQuery テーブルからデータを返すクエリ (Data Analysis Expressions (DAX) クエリなど) は、データ ソースに対してオンデマンド クエリを実行することでのみ実行できます。Queries that you submit to the Power BI dataset - for example, Data Analysis Expressions (DAX) queries - and that return data from DirectQuery tables can be fulfilled only by executing on-demand queries to the data source. データ ソースに送信されるクエリでは、そのデータ ソースのクエリ言語 (SQL など) が使用されます。Queries that you submit to the data source use the query language for that data source - for example, SQL.

  • デュアル:デュアル テーブルは、Power BI データセットに送信されたクエリのコンテキストに応じて、キャッシュまたは非キャッシュとして動作することができます。Dual: Dual tables can act as either cached or not cached, depending on the context of the query that's submitted to the Power BI dataset. 場合によっては、キャッシュされたデータからクエリを実行します。In some cases, you fulfill queries from cached data. それ以外の場合は、データ ソースへのオンデマンド クエリを実行することで、クエリを実行します。In other cases, you fulfill queries by executing an on-demand query to the data source.

テーブルを [インポート] に変更する操作を元に戻すことはできませんChanging a table to Import is an irreversible operation. このプロパティを、[DirectQuery] や [デュアル] に戻すことはできません。This property can't be changed back to either DirectQuery or Dual.

DirectQuery テーブルとデュアル テーブルに関する制約Constraints on DirectQuery and Dual tables

デュアル テーブルの機能的な制約は、DirectQuery テーブルのものと同じです。Dual tables have the same functional constraints as DirectQuery tables. これらの制約には、計算列での M 変換の制限や DAX 関数の制限が含まれます。These constraints include limited M transformations and restricted DAX functions in calculated columns. 詳細については、「DirectQuery を使用する影響」を参照してください。For more information, see Implications of using DirectQuery.

デュアルの伝達Propagation of Dual

次の単純なモデルを考えてみましょう。このモデルでは、すべてのテーブルがインポートと DirectQuery をサポートする単一のソースのテーブルです。Consider the following simple model, where all the tables are from a single source that supports Import and DirectQuery.

ストレージ モードのリレーションシップ ビューの例

このモデルのすべてのテーブルが最初は DirectQuery だとしましょう。Let’s say all tables in this model are DirectQuery to begin with. SurveyResponse テーブルのストレージ モードを [インポート] に変更すると、次の警告ウィンドウが表示されます。If we then change the storage mode of the SurveyResponse table to Import, the following warning window is displayed:

ストレージ モードの警告ウィンドウ

データセットにある弱いリレーションシップの数を減らし、パフォーマンスを向上させるために、ディメンション テーブル (Customer (顧客)、Geography (地域)、Date (日付)) を [デュアル] に設定する場合があります。The dimension tables (Customer, Geography and Date) may be set to Dual to reduce the number of weak relationships in the dataset, and improve performance. 通常、弱いリレーションシップは、結合のロジックをソース システムにプッシュできない 1 つ以上の DirectQuery テーブルと関係しています。Weak relationships normally involve at least one DirectQuery table where join logic cannot be pushed to the source systems. [デュアル] テーブルは DirectQuery、インポートのどちらとしても動作できるため、これを回避するのに役立ちます。The fact that Dual tables can act as either DirectQuery or Import helps avoid this.

伝達ロジックは、多数のテーブルが含まれるモデルに役立つように設計されています。The propagation logic is designed to help with models that contain many tables. たとえば、テーブル数が 50 個のモデルがあり、特定のファクト (トランザクション) テーブルのみをキャッシュする必要があるとします。Let’s say you have a model with 50 tables and only certain fact (transactional) tables need to be cached. Power BI Desktop のロジックによって、 [デュアル] に設定する必要があるディメンション テーブルの最小セットが計算されるので、ユーザーが行う必要はありません。The logic in Power BI Desktop calculates the minimum set of dimension tables that must be set to Dual, so you don’t have to.

伝達ロジックは、1 対多のリレーションシップの一方向に対してのみ横断されます。The propagation logic traverses only to the one side of 1-to-many relationships.

ストレージ モードの使用例Storage mode usage example

前のセクションの例を続けて、次のストレージ モードのプロパティ設定を適用してみましょう。Let's continue with the example from the previous section, and imagine applying the following storage mode property settings:

テーブルTable ストレージ モードStorage mode
SalesSales DirectQueryDirectQuery
SurveyResponseSurveyResponse インポートImport
DateDate デュアルDual
CustomerCustomer デュアルDual
GeographyGeography デュアルDual

Sales (売上) テーブルに大規模なデータ ボリュームがあると仮定した場合、これらのストレージ モード プロパティを設定すると、次のような動作になります。Setting these storage mode properties results in the following behaviors, assuming that the Sales table has significant data volume.

  • Power BI Desktop でディメンション テーブル (Date (日付)、Customer (顧客)、Geography (地域)) がキャッシュされるため、表示するスライサー値を取得するときに、初期レポートの読み込み時間が短縮されます。Power BI Desktop caches dimension tables - Date, Customer, and Geography - so load times of initial reports should be fast when they retrieve slicer values to display.

  • Sales テーブルをキャッシュしないと、Power BI Desktop では次のような結果になります。By not caching the Sales table, Power BI Desktop provides the following results:

    • データの更新時間が改善され、メモリ消費量が減少します。Data-refresh times are improved, and memory consumption is reduced.
    • Sales テーブルに基づくレポート クエリが、DirectQuery モードで実行されます。Report queries that are based on the Sales table run in DirectQuery mode. これらのクエリには時間がかかる場合がありますが、キャッシュの待機時間が発生しないため、リアルタイムに近くなります。These queries might take longer but are closer to real-time because no caching latency is introduced.
  • SurveyResponse テーブルに基づくレポート クエリはメモリ内のキャッシュから返されるので、比較的高速になります。Report queries that are based on the SurveyResponse table are returned from the in-memory cache and, therefore, should be relatively fast.

キャッシュにヒットするクエリまたはヒットしないクエリQueries that hit or miss the cache

SQL Profiler を Power BI Desktop の診断ポートに接続し、次のイベントに基づくトレースを実行すると、メモリ内のキャッシュにヒットするクエリとヒットしないクエリを確認できます。By connecting SQL Profiler to the diagnostics port for Power BI Desktop, you can see which queries hit or miss the in-memory cache by performing a trace that's based on the following events:

  • Queries Events\Query BeginQueries Events\Query Begin
  • Query Processing\Vertipaq SE Query BeginQuery Processing\Vertipaq SE Query Begin
  • Query Processing\DirectQuery BeginQuery Processing\DirectQuery Begin

Query Begin イベントごとに、同じ ActivityID を使用して他のイベントを確認します。For each Query Begin event, check other events with the same ActivityID. たとえば、DirectQuery Begin イベントは存在しないが、Vertipaq SE Query Begin イベントは存在する場合、クエリはキャッシュから応答されます。For example, if there is no DirectQuery Begin event, but there is a Vertipaq SE Query Begin event, the query is answered from the cache.

デュアル モード テーブルを参照するクエリは、可能であれば、キャッシュからデータを返し、そうでない場合は、DirectQuery に戻ります。Queries that refer to Dual mode tables return data from the cache, if possible; otherwise, they revert to DirectQuery.

前の例を続けて、次のクエリでは、デュアル モードの Date (日付) テーブルの列のみを参照します。Continuing the previous example, the following query refers only to a column from the Date table, which is in Dual mode. そのため、クエリはキャッシュにヒットします。Therefore, the query should hit the cache.

ストレージ モード診断のスクリプト

次のクエリは、DirectQuery モードの Sales (売上) テーブルの列のみを参照します。The following query refers only to a column from the Sales table, which is in DirectQuery mode. そのため、キャッシュにはヒットしませんTherefore, it should not hit the cache.

ストレージ モード診断のスクリプト

次の例は、両方の列を結合する興味深いクエリです。The following query is interesting because it combines both columns. このクエリはキャッシュにヒットしません。This query doesn't hit the cache. 最初は、キャッシュから CalendarYear 値を取得し、ソースから SalesAmount 値を取得した後で、結果を組み合わせることを考えるかもしれませんが、この方法はソース システムに SUM/GROUP BY 操作を送信するよりも効率的ではありません。You might initially expect it to retrieve CalendarYear values from the cache and SalesAmount values from the source and then combine the results, but this approach is less efficient than submitting the SUM/GROUP BY operation to the source system. 操作がソースにプッシュされた場合、返される行数ははるかに少なくなります。If the operation is pushed down to the source, the number of rows returned will likely be far less.

ストレージ モード診断のスクリプト

注意

キャッシュされたテーブルとキャッシュされていないテーブルを組み合わせた場合、この動作は、Power BI Desktop での多対多カーディナリティのリレーションシップとは異なります。This behavior is different from many-to-many relationships in Power BI Desktop when cached and non-cached tables are combined.

キャッシュの同期状態を保つCaches should be kept in sync

前のセクションで示したクエリは、デュアル テーブルがキャッシュにヒットする場合と、しない場合があることを示しています。The queries displayed in the previous section show that Dual tables sometimes hit the cache and sometimes don't. そのため、キャッシュが古い場合、異なる値が返される可能性があります。As a result, if the cache is out of date, different values can be returned. たとえば、キャッシュされた値と一致するように DirectQuery の結果をフィルター処理するなど、クエリを実行しても、データの問題は非表示になりません。Query execution will not attempt to mask data issues by, for example, filtering DirectQuery results to match cached values. お客様がデータ フローを把握し、それに応じて設計する必要があります。It is your responsibility to know your data flows, and you should design accordingly. 必要に応じて、ソースのそのようなケースを処理する手法が確立されています。There are established techniques to handle such cases at the source, if necessary.

デュアル ストレージ モードはパフォーマンスの最適化です。The Dual storage mode is a performance optimization. ビジネス要件を満たすことができる条件を損なわない方法でのみ使用する必要があります。It should be used only in ways that don't compromise the ability to meet business requirements. 他の動作については、「Power BI Desktop での多対多カーディナリティのリレーションシップ」の記事で説明されている手法を使用することを検討してください。For alternative behavior, consider using the techniques described in the Many-to-many relationships in Power BI Desktop article.

データ ビューData view

データセット内の少なくとも 1 つのテーブルのストレージ モード[インポート] または [デュアル] に設定されている場合、[データ ビュー] タブが表示されます。If at least one table in the dataset has its storage mode set to either Import or Dual, the Data view tab is displayed.

Power BI Desktop のデータ ビュー

[データ ビュー] で選択されている場合、デュアル テーブルとインポート テーブルにはキャッシュ データが表示されます。When they are selected in Data view, the Dual and Import tables show cached data. DirectQuery テーブルにはデータが表示されず、DirectQuery テーブルを表示できないことを示すメッセージが表示されます。DirectQuery tables don't show data, and a message is displayed that states that DirectQuery tables cannot be shown.

制限事項と考慮事項Limitations and considerations

このリリースのストレージ モードと複合モデルとの相関関係にはいくつかの制限事項があります。There are a few limitations for this release of storage mode and its correlation with composite models.

次の Live Connect (多次元) ソースは、複合モデルでは使用できません。The following Live Connect (multi-dimensional) sources cannot be used with composite models:

  • SAP HANASAP HANA
  • SAP Business WarehouseSAP Business Warehouse
  • SQL Server Analysis ServicesSQL Server Analysis Services
  • Power BI データ セットPower BI datasets
  • Azure Analysis ServicesAzure Analysis Services

DirectQuery を使用してこれらの多次元ソースに接続すると、別の DirectQuery ソースに接続することも、これをインポートしたデータと結合することもできません。When you connect to those multi-dimensional sources by using DirectQuery, you can neither connect to another DirectQuery source nor combine it with imported data.

DirectQuery を使用する際の既存の制限事項は、複合モデルを使用する場合にも適用されます。The existing limitations of using DirectQuery still apply when you use composite models. これらの制限事項の多くは、テーブルのストレージ モードに応じて、テーブルごとに適用されるようになりました。Many of those limitations are now per table, depending upon the storage mode of the table. たとえば、インポートされたテーブルの計算列からは他のテーブルを参照できますが、DirectQuery テーブルの計算列は同じテーブルの列のみを参照するように制限されています。For example, a calculated column on an imported table can refer to other tables, but a calculated column on a DirectQuery table is still restricted to refer only to columns on the same table. モデル内のテーブルのいずれかが DirectQuery の場合、モデル全体に他の制限事項が適用されます。Other limitations apply to the model as a whole, if any of the tables within the model are DirectQuery. たとえば、モデル内のいずれかのテーブルにストレージ モードの DirectQuery がある場合、QuickInsights 機能と Q&A 機能は使用できません。For example, the QuickInsights and Q&A features are not available on a model if any of the tables within it has a storage mode of DirectQuery.

次の手順Next steps

複合モデルと DirectQuery について詳しくは、次の記事をご覧ください。For more information about composite models and DirectQuery, see the following articles: