SQL Server Analysis Service (SSAS) のデータソースビューの作成

ここではデータソースビューを定義します。

データソースビューでは、取込み先のデータテーブルでのリレーションの設定などを行ないます。

データの取込み元となるものがリレーショナルデータベースであれば、通常そのテーブルにはリレーションが設定されています。

しかし取り込んだ先のデータベースでは、必ずしもそうではなく、元のテーブルのサブセットだったりします。その場合テーブル間の関連性などは再定義する必要があります。

SSIS プロジェクトや SSAS プロジェクトでのデータソース設定と同様にデータソースとの接続を設定します。

接続設定が既にあるので、"Next" をクリックします。

次もデフォルトのまま "Next" で先に進みます。

データソースビューに取り込むテーブルはここでは全てなので、>> をクリックして、全てのテーブルを右側のリストに追加します。

これで必要なテーブルが追加されました。

データソースビューのリレーション設定

次にテーブル間のリレーションを設定します。Orders と OrderDetails(明細) の関連性では、 明細側の OrderID を Orders の OrderID と関連付けします。

関連付けされ、キー設定されるとキーアイコンが表示されます。

Orders を中心に、Employees と Customers にもリレーションを設定します。

ここからさらに、いわゆるスタースキーマとなるように、 リレーションを変えてみましょう。

Named Query によるテーブルの置き換え

テーブル間の関係を良く見ると、ここでメジャーとするのは UnitPrice * Quantity で計算される注文額 (Order Amount) です。 それは OrderDetails にあります。また、一方でディメンションとなるのは Employee と Customer であるのですが、それは Orders を中心としたリレーションになっています。

そこでメジャーをスタースキーマの中心と持ってくるべく、Orders と OrderDetails を JOIN しておきましょう。

Orders で右クリックし、表示されたコンテキストメニューから "Replace Table" > "With New Named Query..." を選択します。

SSAS では JOIN などでひとつのビューを作る操作を Named Query (名前付きクエリ) と呼んでいます。

まず OrderID で JOIN して・・・

さらに UnitPrice * Quantity (単価×数量) で注文額 (OrderAmount) としておきます。

すると、確かに Orders というテーブルがクエリの結果に置き換わっています。

となると、もう OrderDetails テーブルはデータソースビュー内に不要なので削除しましょう。

右クリックして "Delete Table From DSV" を選択します。

これでスタースキーマとなりました。

Named Calculation の追加

もうひとつ、従業員の名前を "FirstName" + " " + "LastName" として定義しておきましょう。

右クリックして "New Named Calculation..." を選択します。

Named Calculation の名前として EmployeeName として、その内容を Expression に記載します。

この結果、次のスキーマとなりました。

以上でスキーマができたので、ディメンションを作成します。