レッスン 4: リレーションシップの作成
適用対象:
SQL Server 2016 以降の Analysis Services
Azure Analysis Services
Power BI Premium
このレッスンでは、データをインポートした際に自動的に作成されたリレーションシップを確認し、異なるテーブル間に新しいリレーションシップを追加します。 リレーションシップとは、2 つのテーブル間を接続し、それらのテーブル内のデータをどのように関連付けるかを決定するものです。 たとえば、DimProduct テーブルと DimProductSubcategory テーブルには、各製品が特定のサブカテゴリに属しているということに基づくリレーションシップがあります。 詳細については、リレーションシップを参照してください。
このレッスンの推定所要時間: 10 分
前提条件
このトピックは、表形式モデルのチュートリアルの一部であり、チュートリアルでの順番に従って実行する必要があります。 このレッスンのタスクを実行する前に、前のレッスン「レッスン 3: 日付テーブルとしてマークする」を完了する必要があります。
既存のリレーションシップの確認と新しいリレーションシップの追加
テーブルのインポート ウィザードを使用してデータをインポートすると、AdventureWorksDW データベースから 7 つのテーブルが取得されます。 通常、リレーショナル ソースからデータをインポートする際には、既存のリレーションシップがデータと共に自動的にインポートされます。 ただし、モデルのオーサリングを続行する前に、テーブル間のリレーションシップが正しく作成されたかどうかを確認する必要があります。 またこのチュートリアルでは、3 つの新しいリレーションシップの追加も行います。
既存のリレーションシップを確認するには
[モデル] メニューの [モデル ビュー>ダイアグラム ビュー] をクリックします>。
モデル デザイナーがダイアグラム ビューで表示されます。このグラフィカルな形式では、インポートしたすべてのテーブルが、それらを結ぶ線と共に表示されます。 テーブル間の線は、データのインポート時に自動的に作成されたリレーションシップを表します。

モデル デザイナーの右下隅にあるミニマップ コントロールを使用すると、できるだけ多くのテーブルが表示されるようにビューを調整できます。 また、テーブルをクリックして別の場所にドラッグしたり、テーブルを近づけったり、特定の順序で配置したりすることもできます。 テーブルを移動しても、テーブル間の既存のリレーションシップには影響しません。 特定のテーブル内のすべての列を表示するには、表の端をクリックしてドラッグして展開するか、小さくします。
DimCustomer テーブルと DimGeography テーブル間の実線をクリックします。 これら 2 つのテーブル間の実線は、そのリレーションシップがアクティブであることを示します。つまり、そのリレーションシップは DAX 数式の計算時に既定で使用されます。
DimCustomer テーブル内の GeographyKey 列と DimGeography テーブル内の GeographyKey 列の両方が、それぞれボックス内に表示されています。 これは、リレーションシップで使用される列を示しています。 リレーションシップのプロパティが [プロパティ ] ウィンドウにも表示されるようになりました。
ヒント
ダイアグラム ビューでモデル デザイナーを使用するだけでなく、[リレーションシップの管理] ダイアログ ボックスを使用して、テーブル形式ですべてのテーブル間のリレーションシップを表示することもできます。 表形式モデル エクスプローラーで [リレーションシップ] を右クリックし、[リレーションシップの管理] をクリックします。 [リレーションシップの管理] ダイアログ ボックスには、データのインポート時に自動的に作成されたリレーションシップが表示されます。
モデル デザイナーをダイアグラム ビューまたは [リレーションシップの管理] ダイアログ ボックスで使用して、AdventureWorksDW データベースから各テーブルがインポートされた際に次のリレーションシップが作成されたことを確認します。
アクティブ テーブル 関連する参照テーブル はい DimCustomer [GeographyKey] DimGeography [GeographyKey] はい DimProduct [ProductSubcategoryKey] DimProductSubcategory [ProductSubcategoryKey] はい DimProductSubcategory [ProductCategoryKey] DimProductCategory [ProductCategoryKey] はい FactInternetSales [CustomerKey] DimCustomer [CustomerKey] はい FactInternetSales [ProductKey] DimProduct [ProductKey] 上記のテーブル内のリレーションシップのいずれかが存在しない場合は、モデルに DimCustomer、DimDate、DimGeography、DimProduct、DimProductCategory、DimProductSubcategory、FactInternetSales の表が含まれていることを確認します。 同じデータ ソース接続のテーブルが別々の時期にインポートされた場合、これらのテーブル間のリレーションシップは作成されないので手動で作成する必要があります。
詳細を見る
ダイアグラム ビューでは、実線部分にテーブル間のリレーションシップを示す矢印、アスタリスク、数字があります。

矢印はフィルターの方向を示し、アスタリスクはこのテーブルがリレーションシップのカーディナリティの多い側であることを示し、1 はこのテーブルがリレーションシップの一方の側であることを示しています。 リレーションシップを編集する必要がある場合。たとえば、リレーションシップのフィルターの方向やカーディナリティを変更し、ダイアグラム ビューでリレーションシップラインをダブルクリックして[リレーションシップの編集]ダイアログを開きます。

ほとんどの場合、リレーションシップを編集する必要はありません。 これらの機能は、高度なデータ モデリング用であり、このチュートリアルの範囲外です。 詳細については、2016 Analysis Services の表形式モデルの双方向クロス フィルター SQL Server参照してください。
場合によっては、特定のビジネス ロジックをサポートするために、モデル内のテーブル間に追加でリレーションシップを作成する必要があります。 このチュートリアルでは、FactInternetSales テーブルと DimDate テーブル間に 3 つの追加のリレーションシップを作成する必要があります。
テーブル間に新しいリレーションシップを追加するには
モデル デザイナーの FactInternetSales テーブルで、OrderDate 列をクリックして長押ししてから、DimDate テーブルの Date 列にカーソルをドラッグして離します。
FactInternetSales テーブル内の OrderDate 列と DimDateテーブル内の Date 列の間に、アクティブなリレーションシップを作成したことを示す実線が現れます。

注意
リレーションシップを作成すると、主テーブルと関連するルックアップ テーブルの間のカーディナリティとフィルターの方向は自動的に選択されます。
FactInternetSales テーブルで、DueDate 列をクリックして長押しし、DimDate テーブルの Date 列にカーソルをドラッグして離します。
FactInternetSales テーブル内の DueDate 列と DimDate テーブル内の Date 列の間に、非アクティブなリレーションシップを作成したことを示す点線が現れます。 テーブル間には複数のリレーションシップを持つことができますが、一度にアクティブにできるリレーションシップは 1 つのみです。
最後に、もう 1 つのリレーションシップを作成します。FactInternetSales テーブルで、[ShipDate] 列をクリックして長押しし、DimDate テーブルの Date 列にカーソルをドラッグしてから離します。

次の内容
次のレッスン「 レッスン 5: 計算列の作成」に進みます。