Analysis Services のパーソナル化拡張機能
適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
SQL Server SQL Server Analysis Servicesパーソナル化拡張機能は、プラグイン アーキテクチャを実装するという考え方の基礎です。 プラグイン アーキテクチャでは、新しいキューブ オブジェクトや機能を動的に開発し、他の開発者と簡単に共有することができます。 そのため、パーソナル化拡張機能SQL Server Analysis Services、次の機能を実現できます。
動的な設計とデプロイパーソナル化拡張機能SQL Server Analysis Services設計して展開すると、ユーザーは次のユーザー セッションの開始時にオブジェクトと機能にアクセスできます。
インターフェイスの独立性SQL Server Analysis Servicesパーソナル化拡張機能の作成に使用するインターフェイスに関係なく、ユーザーは任意のインターフェイスを使用してオブジェクトと機能にアクセスできます。
パーソナル化拡張機能SQL Server Analysis Servicesセッション コンテキストは、既存のインフラストラクチャ内の永続的なオブジェクトではなく、キューブを再処理する必要はありません。 この機能は、ユーザーがデータベースに接続したときにそのユーザー用に公開および作成され、そのユーザー セッションの間だけ使用できます。
迅速な分布SQL Server Analysis Servicesパーソナル化拡張機能を他のソフトウェア開発者と共有します。この拡張機能を見つける場所や方法に関する詳細な仕様に進む必要はありません。
SQL Server Analysis Servicesパーソナル化拡張機能には多くの用途があります。 たとえば、会社の売上にさまざまな通貨が使用されているとします。 この場合、キューブにアクセスしている人物の現地通貨で連結売上を返す計算されるメンバーを作成します。 このメンバーをパーソナル化拡張機能として作成します。 その後、この計算されるメンバーをユーザー グループと共有します。 共有すると、ユーザーはサーバーに接続するとすぐに計算されるメンバーにアクセスできるようになります。 ユーザーは、計算されるメンバーの作成に使用されたインターフェイスと同じインターフェイスを使用していなくてもアクセスできます。
SQL Server Analysis Servicesパーソナル化拡張機能は、既存のマネージド アセンブリ アーキテクチャに対するシンプルでエレガントな変更であり、SQL Server Analysis Services Microsoft.AnalysisServices.AdomdServer オブジェクト モデル、多次元式 (MDX) 構文、スキーマ行セット全体で公開されます。
論理アーキテクチャ
SQL Server Analysis Servicesパーソナル化拡張機能のアーキテクチャは、マネージド アセンブリ アーキテクチャと次の 4 つの基本的な要素に基づいています。
[PlugInAttribute] カスタム属性
サービスを開始するときに、SQL Server Analysis Servicesは必要なアセンブリを読み込み、Microsoft.AnalysisServices.AdomdServer.PlugInAttribute カスタム属性を持つクラスを決定します。
注意
.NET Frameworkでは、コードを記述し、実行時の動作に影響を与える方法としてカスタム属性を定義します。 詳細については、MSDN の.NET Framework開発者ガイドの「属性の概要」を参照してください。
Microsoft.AnalysisServices.AdomdServer.PlugInAttribute カスタム属性を持つすべてのクラスについて、SQL Server Analysis Servicesは既定のコンストラクターを呼び出します。 起動時にすべてのコンストラクターを呼び出すと、新しいオブジェクトの作成元となる、ユーザー操作に依存しない共通の場所が提供されます。
パーソナル化拡張機能の作成と管理に関する情報の小さなキャッシュを構築するだけでなく、クラス コンストラクターは通常、Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened イベントと Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing イベントをサブスクライブします。 これらのイベントをサブスクライブしないと、共通言語ランタイム (CLR) のガベージ コレクターによって、誤ってクラスにクリーンアップのマークが付けられる可能性があります。
セッション コンテキスト
パーソナル化拡張機能に基づくオブジェクトの場合、SQL Server Analysis Servicesはクライアント セッション中に実行環境を作成し、この環境でそれらのオブジェクトのほとんどを動的にビルドします。 他の CLR アセンブリと同様に、この実行環境からも他の関数やストアド プロシージャにアクセスできます。 ユーザー セッションが終了すると、SQL Server Analysis Servicesは動的に作成されたオブジェクトを削除し、実行環境を閉じます。
イベント
オブジェクトの作成は、 セッション イベント On-Cube-OpenedCubeOpened と On-Cube-ClosingCubeClosing によってトリガーされます。
クライアントとサーバー間の通信は、特定のイベントを介して行われます。 このイベントによって、クライアントのオブジェクトが作成される状況がクライアントで認識されるようになります。 クライアントの環境は、セッション イベントとキューブ イベントという 2 つのイベント セットを使用して動的に作成されます。
セッション イベントは、サーバー オブジェクトに関連付けられます。 クライアントがサーバーにログオンすると、SQL Server Analysis Servicesはセッションを作成し、Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened イベントをトリガーします。 クライアントがサーバー上のセッションを終了すると、SQL Server Analysis Servicesは Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing イベントをトリガーします。
キューブ イベントは、接続オブジェクトに関連付けられます。 キューブに接続すると、Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened イベントがトリガーされます。 キューブを閉じるか、別のキューブに変更することで、キューブへの接続を閉じると、Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing イベントがトリガーされます。
トレーサビリティとエラー処理
すべてのアクティビティは、SQL Server Profilerを使用して追跡できます。 未処理のエラーは、Windows イベント ログにレポートされます。
すべてのオブジェクトの作成および管理はこのアーキテクチャに依存せず、オブジェクトの開発者が責任を負います。
インフラストラクチャの基盤
SQL Server Analysis Servicesパーソナル化拡張機能は、既存のコンポーネントに基づいています。 次に、パーソナル化拡張機能を実現する強化や改善の概要を示します。
アセンブリ
カスタム属性 Microsoft.AnalysisServices.AdomdServer.PlugInAttribute をカスタム アセンブリに追加して、パーソナル化拡張機能クラスSQL Server Analysis Services識別できます。
AdomdServer オブジェクト モデルへの変更
Microsoft.AnalysisServices.AdomdServer オブジェクト モデルの次のオブジェクトが強化またはモデルに追加されました。
新しい AdomdConnection クラス
Microsoft.AnalysisServices.AdomdServer.AdomdConnection クラスは新しく、プロパティとイベントの両方を通じていくつかのパーソナル化拡張機能を公開します。
Properties
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.SessionID。現在の接続のセッション ID を表す読み取り専用の文字列値です。
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.ClientCulture。現在のセッションに関連付けられているクライアント カルチャへの読み取り専用参照です。
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.User。現在のユーザーを表す ID インターフェイスへの読み取り専用参照です。
イベント
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing
Context クラスの新しいプロパティ
Microsoft.AnalysisServices.AdomdServer.Context クラスには、次の 2 つの新しいプロパティがあります。
新しいサーバー オブジェクトへの読み取り専用参照である Microsoft.AnalysisServices.AdomdServer.Context.Server。
新しい Microsoft.AnalysisServices.AdomdServer.AdomdConnection オブジェクトへの読み取り専用参照である Microsoft.AnalysisServices.AdomdServer.Context.CurrentConnection。
新しい Server クラス
Microsoft.AnalysisServices.AdomdServer.Server クラスのプロパティとイベントの両方。
Properties
Microsoft.AnalysisServices.AdomdServer.Server.Name、サーバー名を表す読み取り専用の文字列値です。
Microsoft.AnalysisServices.AdomdServer.Server.Culture。サーバーに関連付けられているグローバル カルチャへの読み取り専用参照。
イベント
Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened
Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing
AdomdCommand クラス
Microsoft.AnalysisServices.AdomdServer.AdomdCommand クラスで、次の MDX コマンドがサポートされるようになりました。
MDX の拡張と強化
CREATE MEMBER コマンドは、キャプション プロパティ、display_folder プロパティ、および associated_measure_group プロパティを使用して拡張されています。
UPDATE MEMBER コマンドが追加され、更新が必要になり計算の解決時の優先順位が失われることになる場合のメンバーの再作成が不要になりました。 更新計算されるメンバーのスコープを変更したり、計算されるメンバーを別の親に移動したり、別の解決順序を定義したりすることはできません。
CREATE SET コマンドは、キャプション プロパティ、display_folder プロパティ、および新しい STATIC |動的キーワード (keyword)。 静的 とは、作成時にのみ set が評価されることを意味します。 動的 とは、セットがクエリで使用されるたびにセットが評価されることを意味します。 キーワード (keyword)を省略した場合、既定値は STATIC です。
CREATE KPI コマンドと DROP KPI コマンドが MDX 構文に追加されました。 KPI は、任意の MDX スクリプトから動的に作成できます。
スキーマ行セットの拡張
スコープ 列MDSCHEMA_MEMBERS 追加されます。 スコープの値は MDMEMBER_SCOPE_GLOBAL=1 と MDMEMBER_SCOPE_SESSION=2 です。
MDSCHEMA_SETS set_evaluation_context 列が追加されます。 セットの評価コンテキストの値は MDSET_RESOLUTION_STATIC = 1 と MDSET_RESOLUTION_DYNAMIC = 2 です。
MDSCHEMA_KPIS に scope 列が追加されました。 スコープの値は MDKPI_SCOPE_GLOBAL=1 と MDKPI_SCOPE_SESSION=2 です。