パーティションと DirectQuery モデルの定義
適用対象:
SQL Server Analysis Services
Azure Analysis Services
Power BI Premium
この記事では、DirectQuery モデルでのパーティションの使用方法について説明します。 テーブルモデルのパーティションに関する一般的な情報については、「 テーブルモデルのパーティション」を参照してください。
注意
テーブルには複数のパーティションを含めることができますが、DirectQuery モードでは、クエリの実行に使用するように指定できるのはそのうちの1つだけです。 この単一のパーティションの要件は、すべての互換性レベルの DirectQuery モデルに適用されます。
DirectQuery モードでのパーティションの使用
テーブルごとに、DirectQuery データ ソースとして使用する 1 つのパーティションを指定する必要があります。 複数のパーティションがある場合は、モデルを切り替えて DirectQuery モードを有効にすると、テーブル内に作成された最初のパーティションに DirectQuery パーティションのフラグが既定で設定されます。 この設定は、後で Visual Studio の表形式モデルデザイナーの Partition Manager を使用して変更できます。
DirectQuery モードで 1 つのパーティションのみ許可するのはなぜでしょうか。 テーブルモデルでは (OLAP モデルと同様に)、テーブルのパーティションは powerquery M クエリまたは SQL クエリによって定義されます。 パーティションの定義を作成する開発者は、パーティションが重ならないようにする必要があります。 Analysis Services では、レコードが 1 つのパーティションに属しているか、複数のパーティションに属しているかはチェックされません。
キャッシュされたテーブル モデル内のパーティションは同じように動作します。 インメモリ モデルを使用する場合は、キャッシュがアクセスされるときに、DAX 数式がパーティションごとに評価され、結果が結合されます。 一方、テーブル モデルが DirectQuery モードを使用する場合は、複数のパーティションを評価して結果を結合し、リレーショナル データ ストアに送信する SQL ステートメントに変換することは不可能です。 この操作を行うと、パフォーマンスが許容できないほど低下し、集計される結果が不正確になる可能性があります。
したがって、DirectQuery モードで応答されたクエリに対して、サーバーは DirectQuery アクセスのプライマリ パーティションとしてマークされた単一のパーティション ( DirectQuery パーティション) を使用します。 このパーティションの定義で指定された SQL クエリは、DirectQuery モードでのクエリの応答に使用できるデータの完全なセットを定義します。
パーティションを明示的に定義していない場合、エンジンは単純にリレーショナル データ ソース全体に SQL クエリを発行し、DAX 数式で指定されたセットベース操作を実行してクエリ結果を返します。
DirectQuery パーティションの変更
テーブル内で DirectQuery パーティションとして指定できるパーティションは 1 つだけであるため、Analysis Services ではテーブルに作成された最初のパーティションが既定で使用されます。 モデルプロジェクトの作成時に、Partition Manager を使用して DirectQuery パーティションを変更できます。 デプロイされたモデルでは、SQL Server Management Studio を使用して DirectQuery パーティションを変更できます。
テーブル モデル プロジェクトの DirectQuery パーティションの変更
Visual Studio のモデルデザイナーで、パーティションテーブルが含まれているテーブル (タブ) をクリックします。
[拡張機能> ] [テーブル>パーティション] をクリックします。
[パーティション マネージャー]で、現在の直接クエリ パーティションであるパーティションはパーティション名に (DirectQuery) というプレフィックスで示されます。
[パーティション] ボックスの一覧で別のパーティションを選択し、 [DirectQuery として設定]をクリックします。 [DirectQuery として設定] ボタンは、現在の DirectQuery パーティションが選択されている場合は無効になり、モデルが直接 Direct Query モードに対して有効になっていない場合は表示されません。
配置済みテーブル モデルの DirectQuery パーティションの変更
SQL Server Management Studio で、オブジェクトエクスプローラーでモデルデータベースを開きます。
[テーブル] ノードを展開し、パーティション分割されたテーブルを右クリックして [パーティション]を選択します。
DirectQuery モードで使用するように指定されたパーティションには、パーティション名にプレフィックス (DirectQuery) があります。
別のパーティションに変更するには、 [直接クエリ] ツール バー アイコンをクリックして [DirectQuery パーティションの設定] ダイアログ ボックスを開きます。 [直接クエリ] ツール バー アイコンは、直接クエリに対して有効になっていないモデルでは使用できません。
[パーティション名] ボックスの一覧から別のパーティションを選択し、必要に応じてパーティションの処理オプションを変更します。