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