レッスン 5: リレーションシップの作成
このレッスンでは、データをインポートした際に自動的に作成されたリレーションシップを確認し、異なるテーブル間に新しいリレーションシップを追加します。 リレーションシップとは、2 つのテーブル間を接続し、それらのテーブル内のデータをどのように関連付けるかを決定するものです。 たとえば、Product テーブルと Product Subcategory テーブルの間には、どの製品も特定のサブカテゴリに属しているという事実に基づいたリレーションシップが存在します。 詳細については、「リレーションシップ (SSAS テーブル)」を参照してください。
このレッスンの推定所要時間: 10 分
必要条件
このトピックはテーブル モデリング チュートリアルの一部であり、チュートリアルでの順番に従って実行する必要があります。 このレッスンの実習を行う前に、前のレッスン「レッスン 3: 列名の変更」を完了している必要があります。
既存のリレーションシップの確認と新しいリレーションシップの追加
テーブルのインポート ウィザードを使用してデータをインポートした際に、AdventureWorksDW2012 データベースから 7 つのテーブルがインポートされました。 通常、リレーショナル ソースからデータをインポートすると、データと共に既存のリレーションシップが自動的にインポートされます。 ただし、モデルの作成を進める前に、それらのテーブル間リレーションシップが適切に作成されたかどうかを確認する必要があります。 またこのチュートリアルでは、3 つの新しいリレーションシップの追加も行います。
既存のリレーションシップを確認するには
SQL Server Data Tools で、[モデル] メニューをクリックし、[モデル ビュー] をポイントして、[ダイアグラム ビュー] をクリックします。
モデル デザイナーがダイアグラム ビューで表示されます。このグラフィカルな形式では、インポートしたすべてのテーブルが、それらを結ぶ線と共に表示されます。 テーブル間の線は、データのインポート時に自動的に作成されたリレーションシップを表します。
モデル デザイナーの右上隅にあるミニマップ コントロールを使用すると、できるだけ多くのテーブルが表示されるようにビューを調整できます。 テーブルをクリックして別の場所にドラッグすれば、テーブルどうし近づけたり、特定の順序に並べたりすることもできます。 テーブルを移動しても、テーブル間の既存のリレーションシップには影響しません。 特定のテーブル内のすべての列を表示するには、テーブルの端をクリックしてドラッグし、大きさを調整します。
Customer テーブルと Geography テーブルの間の実線をクリックします。 これら 2 つのテーブル間の実線は、そのリレーションシップがアクティブであることを示します。つまり、そのリレーションシップは DAX 数式の計算時に既定で使用されます。
Customer テーブル内の Geography Id 列と Geography テーブル内の Geography Id 列が、どちらもボックス内に表示されます。 これは、これらがリレーションシップに使用される列であるということを示しています。 リレーションシップのプロパティが、[プロパティ] ウィンドウに表示されます。
ヒント ダイアグラム ビューのモデル デザイナーを使用することに加え、[リレーションシップの管理] ダイアログ ボックスを使用して、すべてのテーブル間のリレーションシップをテーブル形式で表示することもできます。 [テーブル] メニューをクリックし、[リレーションシップの管理] をクリックします。 [リレーションシップの管理] ダイアログ ボックスに、データのインポート時に自動的に作成されたリレーションシップが表示されます。
ダイアグラム ビューのモデル デザイナーか、または [リレーションシップの管理] ダイアログ ボックスを使用して、各テーブルが AdventureWorksDW2012 データベースからインポートされた際に、次のリレーションシップが作成されたことを確認します。
アクティブ
テーブル
関連する参照テーブル
はい
Customer [Geography Id]
Geography [Geography Id]
はい
Product [Product Subcategory Id]
Product Subcategory [Product Subcategory Id]
はい
Product Subcategory [Product Category Id]
Product Category [Product Category Id]
はい
Internet Sales [Customer Id]
Customer [Customer Id]
はい
Internet Sales [Product Id]
Product [Product Id]
上記のいずれかのテーブル間リレーションシップが存在しない場合は、モデルに次のテーブルが含まれていることを確認します: Customer、Date、Geography、Product、Product Category、Product Subcategory、および Internet Sales。 同じデータ ソース接続からのテーブルが複数回インポートされた場合、それらのテーブル間のリレーションシップは作成されず、手動で作成する必要があります。
場合によっては、特定のビジネス ロジックをサポートするために、モデル内のテーブル間に追加のリレーションシップを作成する必要があります。 このチュートリアルでは、Internet Sales テーブルと Date テーブルの間に 3 つの追加リレーションシップを作成する必要があります。
テーブル間に新しいリレーションシップを追加するには
モデル デザイナーの Internet Sales テーブルで、Order Date 列をクリックし、そのままカーソルを Date テーブル内の Date 列にドラッグして離します。
InternetSales テーブルの Order Date 列と Date テーブルの Date 列の間にアクティブなリレーションシップが作成され、それを示す実線が表示されます。
注 リレーションシップを作成する際には、主テーブルと、関連する参照テーブルの順序は自動的に正しい順序に設定されます。
Internet Sales テーブルで、Due Date 列をクリックし、そのままカーソルを Date テーブル内の Date 列にドラッグして離します。
InternetSales テーブルの Due Date 列と Date テーブルの Date 列の間に非アクティブなリレーションシップが作成され、それを示す点線が表示されます。 テーブル間には複数のリレーションシップを設定できますが、一度にアクティブにできるのは 1 つだけです。
最後に、もう 1 つリレーションシップを作成します。Internet Sales テーブルで、Ship Date 列をクリックし、そのままカーソルを Date テーブル内の Date 列にドラッグして離します。
InternetSales テーブルの Due Date 列と Date テーブルの Date 列の間に非アクティブなリレーションシップが作成され、それを示す点線が表示されます。
次の手順
このレッスンを続行するには、次のレッスン「レッスン 6: 計算列の作成」に進んでください。