製品をチェック

SQL Analysis Services Data Provider の30日間無償トライアルをダウンロード

 30日間の無償トライアルへ

製品の詳細

SQL Server Analysis Services アイコン SQL Analysis Services ADO.NET Provider 相談したい

SQL Analysis Services 連携のパワフルな.NET アプリケーションを素早く作成して配布。

SQL Analysis Services とのデータ連携ができるMVC アプリケーションの作成

この記事では、SQL Analysis Services にデータ接続して、MVC Web アプリケーションでクエリを実行する方法を説明します。

加藤龍彦
デジタルマーケティング

最終更新日:2021-03-17
ssas ロゴ

CData

ado ロゴ画像
Entity Framework ロゴ

こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。



この記事では、Visual Studio のウィザードを使って簡単なMVC(モデル・ビュー・コントローラ)プロジェクトを作成し、Entity Framework のメソッドを使うSQL Analysis Services にcreate, read, update, delete (CRUD) コマンドクエリを実行する方法を説明します。

Entity Framework Model の作成

下記の手順に従って接続プロパティを保存し、データモデルのエンティティにテーブルをマップします。

  1. Entity Framework 6 をお使いの場合は、あらかじめプロジェクトに SQL Analysis Services Entity Framework プロバイダーを登録してください。詳しくは、ヘルプドキュメントの「LINQ およびEntity Framework」をご参照ください。
  2. Visual Studio で新規MVC プロジェクトを作成[Internet Application]テンプレート、[Razor]ビューエンジンを選択します。この例では、プロジェクト名はMvcSSASApp です。
  3. デザイナーから.edmx ファイルを追加するには、[プロジェクト]>[新しい項目の追加]をクリックします。ADO.NET Entity Data Model を選択してモデルに名前を付けたら[追加]をクリックします。この例では、モデル名はSSASModel です。
  4. [Entity Data Model]ウィザードで、[EF Designer from database]オプションを選択します。[Entity Data Model]ウィザードが表示されます。
  5. [New Connection]をクリックします。ダイアログが表示されたらCData SQL Analysis Services データソースを選択します。
  6. 必要な接続文字列プロパティを指定します。

    接続するには、Url プロパティを有効なSQL Server Analysis Services エンドポイントに設定して認証を提供します。XMLA アクセスを使用して、HTTP 経由でホストされているSQL Server Analysis Services インスタンスに接続できます。 Microsoft ドキュメント configure HTTP access を参照してSQL Server Analysis Services に接続してください。

    SQL をSQL Server Analysis Services に実行するには、ヘルプドキュメントの「Analysis Services データの取得」を参照してください。接続ごとにメタデータを取得する代わりに、CacheLocation を設定できます。

    • HTTP 認証

      AuthScheme を"Basic" または"Digest" に設定してUser とPassword を設定します。CustomHeaders に他の認証値を指定します。

    • Windows (NTLM)

      Windows のUser とPassword を設定して、AuthScheme をNTLM に設定します。

    • Kerberos およびKerberos Delegation

      Kerberos を認証するには、AuthScheme をNEGOTIATE に設定します。Kerberos 委任を使うには、AuthScheme をKERBEROSDELEGATION に設定します。必要があれば、User、Password およびKerberosSPN を設定します。デフォルトでは、CData 製品は指定されたUrl でSPN と通信しようと試みます。

    • SSL/TLS:

      デフォルトでは、CData 製品はサーバーの証明書をシステムの信頼できる証明書ストアと照合してSSL/TLS のネゴシエーションを試みます。別の証明書を指定するには、利用可能なフォーマットについてヘルプドキュメントの「SSLServerCert」プロパティを参照してください。

    接続を設定したら、その後はあらゆるキューブを二次元テーブルとして扱うことができます。データに接続する際にCData 製品がSSAS のメタデータを取得して、動的にテーブルスキーマを更新します。 「CacheLocation」プロパティを設定すれば自動でファイルにキャッシュを作成するので、接続時に毎回メタデータを取得する必要もなくなります。

    詳細は、ヘルプドキュメントの「Retrieving Analysis Services Data」を参照してください。

    一般的な接続文字列は次のとおりです。

    User=myuseraccount;Password=mypassword;URL=http://localhost/OLAP/msmdpump.dll; The connection for the model. (QuickBooks is shown.)
  7. 接続に名前を付け、資格情報などのセンシティブ情報を接続文字列に含めるかどうかを選択します。簡略化のため、この例ではセンシティブ情報をWeb.config に保存しています。

    The completed connection step in the ADO.NET Entity Data Model wizard. (A QuickBooks connection is shown.)
  8. 必要なテーブルおよびビューを選択します。ここでは、Adventure_Works をインポートしています。また、オブジェクト名を複数形に変換するオプションは、チェックをはずしています。[Finish]をクリックして.edmx ファイルを作成します。Tables to be imported into the .edmx file. (QuickBooks is shown.)
  9. プロジェクトをビルドして完成です。

コントローラーの作成およびメソッドとビューの生成

モデルの作成とプロジェクトのビルドが終わったら、以下の手順に従ってコントローラー、ビュー、および関連するCRUD メソッドを作成できます。 Adventure_Works テーブルに許可されたすべてのアクションのビューは、[Views]フォルダ内のAdventure_Works サブフォルダに.cshtml ファイルとして格納されます。

[ソリューション エクスプローラー]で[Controllers]フォルダを右クリックし、[追加]>[コントローラー]をクリックします。コントローラーにSSASController のような名前を付け、以下のオプションを設定します。

  • Template:次のオプションを選択します:'Controller with read/write actions, using Entity Framework'.
  • Model class:Adventure_Works を選択。
  • Data context class:SSASEntities を選択。
Creating a new Controller from an existing entity data model in the Add Controller dialog. (QuickBooks is shown.)

これで、プロジェクトを実行できます。[Index]ビューにアクセスするには、"SSAS" をURL に追加します。

The Index view of the example MVC Web application. (QuickBooks is shown.)

一からコントローラーを作成

このセクションでは、ほんの数行のコードでCRUD コマンドクエリをインプリメントする方法について説明します。利用可能なウィザードは、各ステップで詳しく説明します。

このチュートリアルを始める前に、エンティティデータモデルを作成しておいてください。SQL Analysis Services へのコマンドを実行するために、コンテキストクラスのメソッドを使用していきます。[Entity Framework Data Model]ウィザードを使ってモデルを作成する方法については、前のセクションをご参照ください。 — これはモデルファーストアプローチです。 コードファーストアプローチの利用に関する詳細は、ヘルプドキュメントの「LINQ およびEntity Framework」をご参照ください。

  1. 次の例のSSASController のようにコントローラーを手動で作成するには、[ソリューション エクスプローラー]で[Controllers]フォルダを右クリックし、[追加]>[コントローラー]をクリックします。
  2. [Add Controller]ダイアログが表示されたら、[Template]メニューから'Controller with empty read/write actions' オプションを選択します。[Controller]フォルダ内にSSASController.cs が作成されます。
The Add Controller dialog with the selected template, Controller with empty read/write actions. (QuickBooks is shown.)

コンテキストの作成

以下のコードを追加し、コンテキストクラスをクラス変数としてインスタンスを生成します。この簡単な例では、コントローラーはコンテキストクラスのメソッドを直接呼び出してCRUD コマンドを実行します。

private SSASEntities db = new SSASEntities();

SQL Analysis Services データエンティティの取得

レコードのリストをビューに表示するには、Index メソッドを以下のように書き換えます。このコードは、コンテキストクラスのToList() メソッドを呼び出して、レコードテーブルを表示するビューを返します。デフォルトでは、Index メソッドは空のビューを返します。

public ActionResult Index() { return View(db.Adventure_Works.ToList()); }

ビューを作成するには、Index メソッド内を右クリックし、[Add View]をクリックします。ウィザードが表示されたら新しいビューIndex.cshtml を作成します。作成されたビューは[Views]フォルダに格納されます。このビューをロードするには、.cshtml ファイルを右クリックして[View In Page Inspector]をクリックします。

[Add View]ダイアログでビューに名前を付け、以下のオプションを設定します:

  • Create a strongly typed view:このオプションを選択し、Adventure_Works タイプのビューを作成。
  • Model class:Adventure_Works エンティティ、Adventure_Works を選択。
  • Scaffold template:[List]を選択。このメニューオプションは、エンティティを表示するHTML テーブルを生成します。
Settings for an Index view. (QuickBooks is shown.)

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。