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 に記載します。
この結果、次のスキーマとなりました。
以上でスキーマができたので、ディメンションを作成します。