次の方法で共有


DirectQuery の配置シナリオ (SSAS テーブル)

このトピックでは、DirectQuery モデルのデザインと展開プロセスを紹介します。 このモデルをリレーショナル データのみ使用するように構成するか (DirectQuery のみ)、キャッシュ データのみの使用とリレーショナル データのみの使用を切り替えるようにモデルを構成できます (ハイブリッド モード)。 ここでは、両方のモードの実装プロセスについて説明し、モードとセキュリティ構成に応じたクエリ結果の差異について説明します。

デザインと展開の手順

DirectQuery 構成の比較

デザインと展開の手順

手順 1. ソリューションの作成

使用するモードにかかわらず、DirectQuery モデルで使用できるデータに関する制限を説明する情報を確認する必要があります。 たとえば、モデルとレポートで使用されるすべてのデータは単一のリレーショナル データ ソース (SQL Server またはSQL Server PDW) から取得する必要があります。 詳細については、「DirectQuery モード (SSAS テーブル)」を参照してください。

次に、メジャーと計算列に関する制限を確認し、使用する式が DirectQuery モードと互換性があるかどうかを判断します。 モデルの次の部分を削除または変更することが必要な場合があります。

  • 計算列はサポートされていません。

  • コピーして貼り付けられたデータは使用できません。 このため、PowerPivot モデルをインポートしてソリューションを簡単に開始するには、ソリューションをインポートする前にリンク テーブルをすべて削除してください。このデータは削除できず、DirectQuery 検証をブロックするためです。

    重要:

手順 2. モデル デザイナーでの DirectQuery モードの有効化

既定では、DirectQuery は無効になっています。 したがって、デザイン環境が DirectQuery モードをサポートするように構成する必要があります。

ソリューション エクスプローラーで Model.bim ノードを右クリックし、DirectQuery モード プロパティを On に設定します。

いつでも DirectQuery をオンにすることができます。ただし、DirectQuery モードと互換性のない列や数式を作成しないようにするために、最初から DirectQuery モードを有効にすることをお勧めします。

最初は、DirectQuery モデルが常にメモリに作成されます。 ワークスペース データベースの既定のクエリ モードも [DirectQuery (In-Memory あり)] に設定されます。 このハイブリッド動作モードでは、モデルが DirectQuery 要件を満たすことを検証しながら、インポートされたデータのキャッシュを使用してモデル デザイン プロセス中のパフォーマンスを向上させることができます。

手順 3. 検証エラーの解決

DirectQuery をオンにしたとき、または新しいデータや数式を追加したときに検証エラーが発生する場合は、Visual Studio の [エラー一覧] を開き、必要な操作を実行します。

  • エラー メッセージの説明に従って、DirectQuery モードに必要なプロパティ設定を変更します。

  • 計算列を削除します。 特定のメジャーの計算列が必要な場合は、テーブルのインポート ウィザードで提供されるリレーショナル クエリ デザイナー (SSAS)を使用していつでも列を作成できます。

  • DirectQuery モードと互換性のない数式を変更または削除します。 計算で特定の関数が必要な場合は、Transact-SQL を使用して同等の関数を提供する方法を検討します。

  • 必要に応じてデータを追加します。 コピーして貼り付けたデータまたは他のプロバイダーからのデータを以前にモデルで使用していた場合は、リレーショナル データ ソースか、テーブルのインポートに使用したクエリ定義内に新しいビューと派生列を作成できます。 ただし、DirectQuery モデルで使用されるすべてのデータは、単一のリレーショナル データ ソースでアクセスできる必要があります。 データの一部が外部システムに置かれている場合には、リレーショナル データ ソースのデータのステージングを検討してください。

手順 4. モデルに対するクエリの応答で優先される方法の設定

DirectQuery のみ

プロパティを [DirectQuery] に設定します。

ハイブリッド モード

プロパティを [In-Memory (DirectQuery あり)] または [DirectQuery (In-Memory あり)] に設定します。

この値を後で変更して、別の設定を使用できます。

クライアントは接続文字列で優先メソッドをオーバーライドできます。

手順 5. DirectQuery パーティションの指定

DirectQuery のみ

省略可能。 DirectQuery のみのモデルには、パーティションは必要ありません。

ただし、デザイン フェーズ中にモデルにパーティションを作成した場合は、1 つのパーティションだけをデータ ソースとして使用できることに注意してください。 既定では、最初に作成したパーティションが DirectQuery パーティションとして使用されます。

モデルに必要なすべてのデータが DirectQuery パーティションにあることを確認するには、DirectQuery パーティションを選択し、SQL ステートメントを編集してデータ セット全体を取得します。

ハイブリッド モード

モデル内のいずれかのテーブルに複数のパーティションがある場合は、1 つのパーティションを DirectQuery パーティションとして選択する必要があります。 パーティションを割り当てない場合、既定では、最初に作成されたパーティションが DirectQuery パーティションとして使用されます。

DirectQuery 以外のすべてのパーティションの処理オプションを設定します。 通常、データはリレーショナル ソースから渡されるため、DirectQuery パーティションは処理されません。

詳細については、「パーティションと DirectQuery モード (SSAS テーブル)」を参照してください。

手順 6. 権限借用の構成

権限借用は、DirectQuery モデルでのみサポートされます。 権限借用オプション [権限借用設定] では、指定した SQL Server データ ソースのデータを表示するときに使用する資格情報を定義します。

DirectQuery のみ

権限借用設定プロパティには、リレーショナル データ ソースへの接続に使用するアカウントを指定します。

ImpersonateCurrentUser 値を使用する場合、モデルをホストする Analysis Services のインスタンスは、モデルの現在のユーザーの資格情報をリレーショナル データ ソースに渡します。

ハイブリッド モード

権限借用設定プロパティには、リレーショナル データ ソース内のデータへのアクセスに使用するアカウントを指定します。

この設定は、モデルで使用するキャッシュの処理に使用される資格情報には影響しません。

手順 7. モデルの配置

モデルの配置準備ができたら、Visual Studio の [プロジェクト] メニューを開き、[プロパティ] を選択します。 QueryMode プロパティを、次の表で説明する値のいずれかに設定します。

詳細については、「SQL Server データ ツールからの配置 (SSAS テーブル)」を参照してください。

DirectQuery のみ

DirectQueryOnly

DirectQuery のみを指定したため、モデルのメタデータはサーバーに配置されますが、モデルは処理されません。

ワークスペース データベースで使用されていたキャッシュは自動的には削除されません。 ユーザーがキャッシュされたデータを表示できないようにするには、デザイン時のキャッシュをクリアします。 詳細については、「Analysis Services キャッシュのクリア」を参照してください。

ハイブリッド モード

DirectQuery (In-Memory あり)

In-Memory (DirectQuery あり)

どちらの値でも、必要に応じてキャッシュまたはリレーショナル データ ソースを使用できます。 順序によって、モデルに対するクエリへの応答時に既定で使用されるデータ ソースが定義されます。

ハイブリッド モードでは、モデルのメタデータがサーバーに配置されると同時にキャッシュを処理する必要があります。

この設定は配置後に変更できます。

手順 8. 展開済みのモデルの確認

SQL Server Management Studio で、モデルを配置した Analysis Services のインスタンスを開きます。 データベースの名前を右クリックし、[プロパティ] を選択します。

  • DirectQueryMode プロパティは、配置のプロパティを定義したときに設定しました。

  • データ ソースの権限借用情報プロパティは、ユーザーの権限借用オプションを定義したときに設定しました。 詳細については、「権限借用オプションの設定 (SSAS - 多次元)」を参照してください。

  • これらのプロパティは、モデルが配置された後、いつでも変更できます。

トップに戻る

DirectQuery オプションの比較

  • DirectQuery のみ
    このオプションは、データのソースが単一であることを保証する場合、またはデータが大きすぎてメモリに収まらない場合に推奨されます。 非常に大きなリレーショナル データ ソースを操作する場合は、デザイン時にデータのサブセットを使用してモデルを作成できます。 モデルを DirectQuery のみのモードで配置する場合は、データ ソース定義を編集して必要なすべてのデータを含めることができます。

    このオプションは、リレーショナル データ ソースが提供しているセキュリティを使用してユーザーのデータ アクセスを制御する場合にも推奨されます。 キャッシュされたテーブル モデルでは、Analysis Services ロールを使用してデータ アクセスを制御することもできますが、キャッシュに格納されているデータも保護する必要があります。 セキュリティ コンテキストによってデータをキャッシュしないことが要求される場合は、常にこのオプションを使用する必要があります。

    次の表で、DirectQuery のみのモードで可能な展開結果について説明します。

    キャッシュなしの DirectQuery

    キャッシュにデータは読み込まれません。 モデルは処理できません。

    モデルは、DAX クエリをサポートするクライアントを使用してクエリのみ行うことができます。 クエリ結果は、常に元のデータ ソースから返されます。

    • DirectQueryMode = On

    • QueryMode = DirectQuery

    キャッシュにのみクエリを実行する DirectQuery

    配置が失敗します。 この構成はサポートされていません。

    • DirectQueryMode = On

    • QueryMode = In-Memory

  • ハイブリッド モード
    ハイブリッド モードでモデルを配置することには多くの利点があります。必要に応じてリレーショナル データ ソースから最新のデータを取得できるという点は、リアルタイムでデータを更新する必要がある場合に特に便利です。 これに対して、キャッシュを保持すると、メモリ内のデータを操作できることから、レポートのデザインやモデルのテストで速度面のパフォーマンスが向上します。

    DirectQuery ハイブリッド モードは、モデルが非常に大きい場合にも役立ちます。 ユーザーが古いデータを取得したりキャッシュが処理される間モデルが使用不能になったりする代わりに、処理の進行中にモデルを DirectQuery モードに切り替えることができます。 パフォーマンスはわずかに低下する可能性がありますが、ユーザーはリレーショナル ストアからデータを直接取得できるため、結果が最新であることが保証されます。

    次の表で、DirectQuery オプションの組み合わせにおける配置結果を比較します。

    キャッシュ優先のハイブリッド モード

    モデルを処理することができ、データをキャッシュに読み込むことができます。 クエリでは、既定でキャッシュが使用されます。

    クライアントで DirectQuery ソースを使用する場合は、接続文字列にパラメーターを挿入する必要があります。

    • DirectQueryMode = On

    • QueryMode = In-Memory (DirectQuery あり)

    DirectQuery 優先のハイブリッド モード

    モデルは処理され、データをキャッシュに読み込むことができます。 ただし、既定ではクエリで DirectQuery が使用されます。

    クライアントでキャッシュ データを使用する場合は、接続文字列にパラメーターを挿入する必要があります。

    モデル内のテーブルがパーティション分割されている場合は、キャッシュのプリンシパル パーティションも [In-Memory (DirectQuery あり)] に設定されます。

    • DirectQueryMode = On

    • QueryMode = DirectQuery (In-Memory あり)

関連項目

概念

DirectQuery モード (SSAS テーブル)

テーブル モデル データ アクセス