メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。
お使いのブラウザーではビデオがサポートされていません。

リレーションシップを作成してデータ分析にさらに力を加え、異なるテーブルを作成します。 リレーションシップは、データを含む 2 つのテーブル間の接続です。各テーブルの 1 つの列がリレーションシップの基礎です。 リレーションシップの便利な点を示す例として、ここでは仕事での顧客からの注文のデータを追跡しているものとします。 次のような構造を持つ 1 つのテーブル内のすべてのデータを追跡できます。

CustomerID

Name

EMail

DiscountRate

OrderID

OrderDate

Product

Quantity

1

Ashton

chris.ashton@contoso.com

.05

256

2010-01-07

Compact Digital

11

1

Ashton

chris.ashton@contoso.com

.05

255

2010-01-03

SLR Camera

15

2

Jaworski

michal.jaworski@contoso.com

.10

254

2010-01-03

Budget Movie-Maker

27

この方法は機能しますが、注文ごとに顧客の電子メール アドレスなど、多くの冗長なデータを格納する必要があります。 ストレージは安価ですが、メール アドレスが変更された場合は、その顧客のすべての行を必ず更新する必要があります。 この問題の解決策の 1 つは、データを複数のテーブルに分割し、それらのテーブル間のリレーションシップを定義することです。 これは、リレーショナル データベース (例: SQL Server) で使用されるアプローチです。 たとえば、インポートするデータベースは、次の 3 つの関連テーブルを使用して注文データを表す場合があります。

Customers

[CustomerID]

Name

Email

1

Ashton

chris.ashton@contoso.com

2

Jaworski

michal.jaworski@contoso.com

CustomerDiscounts

[CustomerID]

DiscountRate

1

.05

2

.10

Orders

[CustomerID]

OrderID

OrderDate

Product

Quantity

1

256

2010-01-07

Compact Digital

11

1

255

2010-01-03

SLR Camera

15

2

254

2010-01-03

Budget Movie-Maker

27

リレーションシップは、データ モデル内に存在します。明示的に作成するリレーションシップ、または複数のテーブルを同時にインポートExcel自動的に作成されるリレーションシップです。 モデルの作成や管理は、PowerPivot アドインを使って行うこともできます。 詳しくは、「Excel でのデータ モデルの作成」をご覧ください。

PowerPivot アドインを使ってテーブルを同じデータベースからインポートした場合、PowerPivot ではテーブル間のリレーションシップを角かっこ ([ ]) で囲んで示した列に基づいて検出し、自動的に作成されるデータ モデルでこれらのリレーションシップを再現できます。 詳しくは、この記事の「リレーションシップの自動検出と自動推定」をご覧ください。 複数のソースからテーブルをインポートした場合、「2 つのテーブル間のリレーションシップの作成」の説明に従って、リレーションシップを手動で作成できます。

リレーションシップは、各テーブル内にある同じデータを含む列に基づいて作成されるものです。 たとえば、顧客 ID を格納する列がそれぞれ含まれている場合、Customers テーブルをOrdersテーブルに関連付けできます。 この例では列名が同じですが、列名が同じことは必須条件ではありません。 Orders テーブル内のすべての行に Customers テーブルにも保存されている ID が入ってさえいれば、片方が CustomerID で他方が CustomerNumber でもかまいません。

リレーショナル データベースには、いくつかの種類のキーがあります。 キーは通常、特殊なプロパティを持つ列です。 各キーの目的を理解すると、ピボットテーブル、ピボットテーブル、またはレポートにデータを提供する複数テーブルピボットグラフ管理Power Viewできます。

キーには多くの種類があります。ここでは、これらのキーが最も重要です。

  • 主キー: Customers テーブルの CustomerID など、テーブル内の行を一意に 識別 します。

  • 代替キー (または候補キー): 一意の主キー以外の列。 たとえば、Employees テーブルには従業員 ID と社会保障番号が格納され、どちらも一意です。

  • 外部キー: "受注" テーブルのCustomerIDなど、別のテーブルの一意の列を参照する列。"顧客" テーブルのCustomerIDを参照します。

データ モデルでは、主キーや代替キーは関係列と呼ばれます。 1 つのテーブルが主キーと代替キーの両方を持っている場合は、そのどちらか 1 つをテーブル リレーションシップの基として使用できます。 外部キーは、 ソース列または単に列と呼ばれます。 この例では、Ordersテーブル (列) のCustomerIDCustomersテーブルのCustomerID (ルックアップ列) の間でリレーションシップを定義します。 Excel でリレーショナル データベースからデータをインポートすると、既定では、 1 つのテーブルの外部キーと別のテーブルの対応する主キーが選択されます。 とはいえ、一意の値を持つ列であれば、どの列でもルックアップ列に使用できます。

顧客と注文の間の関係は、一対多リレーションシップです。 どの顧客も複数の注文を持つことができますが、1 つの注文が複数の顧客を持つことはできません。 もう 1 つの重要なテーブルリレーションシップは、一対一です。 この例では、各顧客に対して 1 つの割引率を定義する CustomerDiscounts テーブルと Customers テーブルとの間に 1 対 1 のリレーションシップがあります。

次の表は、3 つのテーブル(Customers、CustomerDiscounts、Orders)の間の リレーションシップを示しています

リレーションシップ

種類

ルックアップ列

Customers-CustomerDiscounts

一対一

Customers.CustomerID

CustomerDiscounts.CustomerID

Customers-Orders

一対多

Customers.CustomerID

Orders.CustomerID

注: データ モデルでは、多対多リレーションシップはサポートされていません。 多対多リレーションシップの例として、製品と顧客の間の直接的な関係があります。このリレーションシップでは、顧客は多数の製品を購入し、同じ製品を多くの顧客が購入できます。

リレーションシップが作成された後、Excel、新しく作成されたリレーションシップのテーブルの列を使用する数式を再計算する必要があります。 この処理には、データの量とリレーションシップの複雑さに応じて、ある程度の時間がかかります。 詳細については、「数式を 再計算する」を参照してください

データ モデルでは、2 つのテーブル間に複数のリレーションシップを持たせることができます。 正確な計算を構築するにはExcelテーブルから次のテーブルへの 1 つのパスが必要です。 このため、テーブルの各組み合わせ間で同時にアクティブになるリレーションシップは常に 1 つです。 他のユーザーは非アクティブですが、数式とクエリで非アクティブなリレーションシップを指定できます。

ダイアグラム ビューでは、アクティブなリレーションシップは実線で、非アクティブなリレーションシップは破線です。 たとえば、AdventureWorksDW2012 のテーブル DimDate には、FactInternetSales: OrderDate、DueDate、ShipDateの 3 つの異なる列に関連する列DateKeyがテーブルに含まれています。 DateKey と OrderDate の間のリレーションシップがアクティブである場合、数式では、それがリレーションシップを指定しなかった場合の既定のリレーションシップになります。

リレーションシップの作成時の要件を次に示します。

抽出条件

説明

テーブルごとに一意の識別子

各テーブルが、テーブル内の各行を一意に識別する列を 1 つ持っている必要があります。 この列は、通常、主キーと呼ばれます。

一意の参照列

ルックアップ列のデータ値は固有であることが必要です。 言い換えると、列内に重複データを含めることはできません。 データ モデルでは、null 値と空の文字列は、個別のデータ値である空白と同等に扱われます。 つまり、ルックアップ列に複数の null 値を指定することはできません。

互換性のあるデータ型

ソース列とルックアップ列のデータ型は互換性がとれている必要があります。 データ型の詳細については、「データ モデルでサポートされるデータ 型」を参照してください

データ モデルでは、キーが複合キーの場合は、テーブル リレーションシップを作成することはできません。 また、作成できるリレーションシップは一対一と一対多のリレーションシップに限られています。 その他の種類のリレーションシップはサポートされていません。

複合キーとルックアップ列

複合キーは、複数の列で構成されます。 データ モデルでは複合キーを使用することはできません。テーブルには、テーブル内の各行を一意に識別する列が常に 1 つ必要です。 複合キーに基づいて既存のリレーションシップを持つテーブルをインポートする場合、Power Pivot のテーブル インポート ウィザードでは、モデルでリレーションシップを作成できないので、そのリレーションシップは無視されます。

主キーと外部キーを定義する複数の列を持つ 2 つのテーブル間にリレーションシップを作成するには、リレーションシップを作成する前に、最初に値を組み合わせて 1 つのキー列を作成します。 これを行うには、データをインポートする前に、または Power Pivot アドインを使用してデータ モデルに集計列を作成します。

多対多リレーションシップ

データ モデルに多対多リレーションシップを持たせることはできません。 モデルに交差テーブル を追加することすらできません。 とはいえ、DAX 関数を使って多対多リレーションシップをモデル化することは可能です。

自己結合とループ

自己結合は、データ モデルでは許可されていません。 自己結合とは、テーブルとそのテーブル自身との間の再帰的なリレーションシップです。 自己結合は、親子階層構造を定義するのによく使われます。 たとえば、 Employees テーブルをそのテーブル自体と結合して、ビジネスでのマネジメント チェーンを表す階層構造を作ったりできます。

Excel では、ブック内のリレーションシップ間のループの作成は 許されていません。 つまり、次のような一連のリレーションシップは禁止されています。

テーブル 1 の列 a から テーブル 2 の列 f    

テーブル 2 の列 f から テーブル 3 の列 n    

テーブル 3 の列 n から テーブル 1 の列 a    

結果的にループが作成されるリレーションシップを作成しようとすると、エラーが生成されます。

データのインポートに PowerPivot アドインを使う利点の 1 つは、PowerPivot でリレーションシップが検出され、Excel で作成するデータ モデルに新しいリレーションシップを作成できることです。

複数のテーブルをインポートする場合、PowerPivot によってテーブル間の既存のリレーションシップが自動的にすべて検出されます。 また、ピボットテーブルを作成すると、PowerPivot  によってテーブル内のデータが分析されます。 これにより 、定義されていない潜在的なリレーションシップが検出され、そのリレーションシップに含める適切な列が提示されます。

検出アルゴリズムでは、列の値およびメタデータに関する統計データを使用して、リレーションシップの確率を推定します。

  • データ型は、関連するすべての列の間で互換性がなくてはなりません。 自動検出でサポートされている型は、整数とテキスト データだけです。 データ型について詳しくは、「データ モデルのデータ型」をご覧ください。

  • リレーションシップがうまく検出されるには、ルックアップ列内の一意のキーの数が、多側のテーブル内の値より多くなくてはなりません。 つまり、リレーションシップの多側のキー列に、ルックアップ テーブルのキー列には含まれていない値が含まれていてはなりません。 たとえば、製品をその ID でリストするテーブル (ルックアップ テーブル) と各製品の販売をリストする Sales テーブル (リレーションシップの多側) があったとします。 どれかの販売レコードに、Products テーブル内に対応する ID が入っていない製品の ID が含まれていたとすると、このリレーションシップは自動的には作成されませんが、手動で作成することは可能です。 Excel でこのリレーションシップが検出されるようにするには、まず Product ルックアップ テーブルを更新して、見つからない製品の ID を含めておく必要があります。

  • 多側のキー列の名前は、ルックアップ テーブル内のキー列の名前とよく似たものにしてください。 名前が厳密に同じである必要はありません。 たとえば、ビジネス環境では、多くの場合 、Emp ID、EmployeeID、Employee ID、EMP_IDなど、基本的に同じデータを含む列の名前にバリエーションがあります。 検出アルゴリズムは、よく似た名前を検出して、よく似た名前やまったく同じ名前を持つ列に、より高い可能性を割り当てます。 このため、インポートするデータの列の名前を既存のテーブル内の列とよく似たものに変更すれば、リレーションシップが自動的に作成される可能性を高めることができます。 リレーションシップの候補が複数見つかった場合、Excel は、リレーションシップを作成しません。

この情報は、一部のリレーションシップが検出されない理由や、フィールド名、データ型などのメタデータを変更することでリレーションシップの自動検出結果がどのように改善されるかを理解するうえで役立ちます。 詳しくは、「テーブルのリレーションシップのトラブルシューティング」をご覧ください。

名前付きセットの自動検出

ピボットテーブル内の名前付きセットと関連フィールドの間のリレーションシップは、自動的には検出されません。 こういったリレーションシップは、手動で作成できます。 自動リレーションシップ検出を使いたい場合は、各名前付きセットを削除し、名前付きセットに入っていた個々のフィールドをピボットテーブルに直接追加してください。

リレーションシップの推定

テーブル間のリレーションシップは、自動的に連鎖化される場合もあります。 たとえば、次に示す最初の 2 セットのテーブルの間にリレーションシップを作成すると、他の 2 つのテーブルとの間にリレーションシップが存在すると推定され、自動的にリレーションシップが確立されます。

Products と Category: 手動で作成

Category と SubCategory: 手動で作成

Products と SubCategory: リレーションシップの推定

リレーションシップが自動的に連鎖化されるようにするには、上に示すように、一連のリレーションシップが一方向になっている必要があります。 たとえば、最初のリレーションシップが Sales と Products の間、および Sales と Customers の間にあると、リレーションシップは推定されません。 これは、Products と Customers の間のリレーションシップが多対多リレーションシップになるからです。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×