リレーションシップを使用して、共通のフィールドまたは位置に基づいて複数のデータセットの属性を結合できます。 共通フィールドは、各データセットでどの行同士が結合されているかを特定し、リレーション タイプはどの行が結合したデータセットで維持されるかを決定します。
リレーションシップを使用して、ルックアップ テーブルの属性を別のデータセットに追加したり、2 つのデータセットの属性を結合して、さまざまなタイプの解析を可能にしたり、非空間テーブルで位置を有効化することができます。 結合したデータセットは結果データセット としてデータ ウィンドウに表示され、結合したすべてのデータセットのデータを 1 つのレイヤーとして使用することで、解析を拡張できます。
分析、またはデータ エンジニアリング ワークフローの一環としてリレーションシップを作成できます。
例
公衆衛生局の接触追跡担当者は感染症の大量発生を調査しています。 接触追跡担当者はケース データ (検査結果を含む) があるルック アップ テーブルと、検査前に接触が発生した行動と場所を含むデータセットにアクセスできます。 2 つのデータセットが結合され、ケース データが位置データに追加されます。 結合したデータセットを使用することで、接触追跡担当者はケース、行動、行動日、検査結果を表示する参照テーブル、および各ケースの検査結果と行動数を表示するツリーマップを作成できます。
全体のワークフローについては、「ArcGIS Insights を使用したウイルスの感染拡大の追跡」レッスンをご参照ください。
分析ワークフローでのリレーションシップの作成
分析ワークフローで作成したリレーションシップは、結合が作成されたワークブックにのみ存在します。 結果データセットをワークブックの範囲外に保持したい場合は、データセットを共有するか、データ エンジニアリングを使用することで、新しいフィーチャ レイヤーを作成できます。
分析ワークフローにリレーションシップを作成するには、次の手順を実行します。
- ワークブックを開き、必要に応じてデータセットを 2 つ以上追加します。
- データ ウィンドウの上にある [リレーションシップの作成] ボタン をクリックします。
[リレーションシップの作成] ウィンドウが表示され、現在のページにデータセットのリストが表示されます。
- 結合する 1 つ目のデータセットを選択します。
最初のデータセットを選択すると、ビューが更新され、リレーションシップに使用できるデータセットのみが表示されます。
- 結合する 2 つ目のデータセットを選択します。
Insights は追加されたデータセットを解析し、可能な場合は結合に使用できるフィールドを提案します。 提案されるフィールドは、フィールドに含まれるデータのタイプとフィールド名によって異なります。
- [リレーションシップの編集] ボタン をクリックして以下のリレーションシップ プロパティを変更します。
注意:
提案されたフィールドを選択しなかった場合はダイアログが自動的に開きます。
- 結合でフィールドを変更するには、[フィールドの選択] パラメーターのボックスで矢印をクリックして新しいフィールドを選択します。
- フィールドを追加するには (データセットで複合キーを使用している場合など)、[フィールドの追加] ボタンをクリックしてメニューから新しいフィールドを選択します。
- 結合タイプを変更するには、[リレーションシップ タイプの選択] パラメーターから [内部] (デフォルト)、[すべて]、[左]、または [右] を選択します。
- [リレーションシップの編集] ウィンドウを閉じます。
- ステップ 4 ~ 6 を繰り返して、必要に応じてさらにデータセットを追加します。
- [完了] をクリックしてリレーションシップを作成します。
新たに結合したデータセットがデータ ウィンドウに追加されます。
データ エンジニアリングによるリレーションシップの作成
注意:
データ エンジニアリングは、Insights desktop で使用できます。 すべての Insights in ArcGIS Online および Insights in ArcGIS Enterprise ユーザーは、Insights desktop にアクセスすることができます。 詳細については、「ArcGIS Insights の概要」をご参照ください。
データ エンジニアリングは現時点でプレビュー版です。
[リレーションシップの作成] ツールをデータ モデルに追加し、2 つ以上のデータセットの結合に使用して 1 つの出力データセットを作成できます。
データ エンジニアリング ワークフローにリレーションシップを作成するには、次の手順を実行します。
- Insights desktop でデータ ワークブックを開き、必要に応じてデータを追加します。
- データ ワークブック ツールバーで、[リレーションシップの作成] ボタン をクリックします。
[リレーションシップの作成] ウィンドウが表示されます。
- 必要に応じて、サイド ツールバーで [データ ウィンドウ] ボタン をクリックしてデータ ウィンドウを開きます。
- データ ウィンドウで、結合する 1 つ目のデータセットを選択します。
- 結合する 2 つ目のデータセットを選択します。
Insights は追加されたデータセットを解析し、可能な場合は結合に使用できる列を提案します。 提案される列は、列に含まれるデータのタイプと列の名前によって異なります。
- [リレーションシップの編集] ボタン をクリックして以下のリレーションシップ プロパティを変更します。
注意:
提案された列を選択しなかった場合はダイアログが自動的に開きます。
- 結合で列を変更するには、[列の選択] パラメーターのボックスで矢印をクリックして新しい列を選択します。
- 列を追加するには (データセットで複合キーを使用している場合など)、[列の追加] ボタンをクリックしてメニューから新しい列を選択します。
- 結合タイプを変更するには、[リレーションシップ タイプの選択] パラメーターから [内部] (デフォルト)、[すべて]、[左]、または [右] を選択します。
- [リレーションシップの編集] ウィンドウを閉じます。
- ステップ 5 ~ 7 を繰り返して、必要に応じてさらにデータセットを追加します。
- オプション: [プレビュー] をクリックし、現在の結合パラメーターに基づいて結果データセットのビューを作成します。
- [完了] をクリックしてリレーションシップを作成します。
新たに結合したデータセットがデータ ウィンドウに追加され、テーブルが表示されます。 ツールがデータ モデルに追加されます。
サポートされるデータ
リレーションシップを作成するには、次のデータ タイプを使用できます。
- フィーチャ レイヤー
- ワークブックに追加されたファイル
- データベース接続からのデータセット (Insights in ArcGIS Enterprise と Insights desktop で利用可能)
- 空間解析の結果データセット (サポートされていないデータ タイプからの結果を含む)
フィーチャ サービスのフィルター設定は、リレーションシップの作成でサポートされていません。 ワークブック内でリレーションシップがサポートされていないデータは、[リレーションシップの作成] ウィンドウで無効になります。
注意:
以下のデータ ソースの分析ワークフローではリレーションシップがサポートされていません。
- リモート フィーチャ レイヤー (ArcGIS Living Atlas など)
- 同じデータベースとインスタンスをベースとしないデータベース テーブル
- 別のデータ ストアのデータセット
データセットが分析ワークフローでの結合に対応していない場合は、データセットをワークブックにコピーし、コピーしたデータセットを使用してリレーションシップを作成できます。 データ エンジニアリングを使用して、別のデータベースかデータ ストアのデータセットを結合することもできます。
リレーションシップ タイプ
使用するリレーションシップ タイプと選択する共通フィールドによって、結合データセットに格納されるレコードが決まります。 Insights でサポートされているリレーションシップのタイプは内部、すべて、左、右です。
注意:
空間結合 (位置フィールドを使用した結合) は、空間リレーションシップとして交差するを使用して作成されます。 ただし、リレーションシップ タイプとして、[内部]、[すべて]、[左]、[右] も選択できます。
以降のサブセクションでは、各リレーションシップ タイプに共通するフィールドを使用して 2 つのテーブルを結合した結果を紹介しています。
最初のテーブル (訪問先) では各支店の取引を追跡しています。 このテーブルには、各取引に固有の ID、取引が発生した支店の ID、取引金額 (ドル)、支払い方法があります。
訪問先
注文 ID | 支店 ID | 合計金額 ($) | 支払い方法 |
---|---|---|---|
1204 | 1 | 91.48 | Credit |
1295 | 1 | 103.86 | Credit |
1316 | 3 | 97.81 | Debit |
1406 | 2 | 103.24 | Credit |
1421 | 2 | 44.95 | Cash |
1426 | 2 | 153.71 | Debit |
1454 | 3 | 168.95 | Credit |
1533 | 7 | 32.99 | Cash |
2 つ目のテーブル (支店) は、支店 ID 番号と支店の場所を含むルックアップ テーブルです。
支店
支店 ID | 支店の場所 |
---|---|
1 | Redlands |
2 | ポートランド |
3 | ワシントン D.C. |
4 | アーリントン |
5 | シャーロット |
6 | デンバー |
支店 ID フィールドは 2 つのテーブルで共有されており、結合の作成に使用されます。 どの例でも、訪問先テーブルが結合の左側にあります。
内部
[内部] では、両方のデータセットに一致するレコードのみが格納されます。 NULL レコードは追加されません。
内部はデフォルトのリレーションシップ タイプです。
以下のテーブルは、訪問先テーブルと支店テーブルのリレーションシップ タイプを [内部] に指定して結合した結果を示したものです。
注文 ID | 支店 ID | 合計金額 ($) | 支払い方法 | 支店の場所 |
---|---|---|---|---|
1204 | 1 | 91.48 | Credit | Redlands |
1295 | 1 | 103.86 | Credit | Redlands |
1316 | 3 | 97.81 | Debit | ワシントン D.C. |
1406 | 2 | 103.24 | Credit | ポートランド |
1421 | 2 | 44.95 | Cash | ポートランド |
1426 | 2 | 153.71 | Debit | ポートランド |
1454 | 3 | 168.95 | Credit | ワシントン D.C. |
訪問先テーブルの支店 ID 7、支店テーブルの支店 ID 4、5、6 のレコードはどちらのテーブルにも存在していなかったため、除外されました。
すべて
[すべて] リレーションシップ タイプ (完全外部結合) では両方のデータセットのすべてのレコードが維持され、一致が存在しないレコードには NULL 値が追加されます。
以下のテーブルは、訪問先テーブルと支店テーブルのリレーションシップ タイプを [すべて] に指定して結合した結果を示したものです。
注文 ID | 支店 ID | 合計金額 ($) | 支払い方法 | 支店の場所 |
---|---|---|---|---|
1204 | 1 | 91.48 | Credit | Redlands |
1295 | 1 | 103.86 | Credit | Redlands |
1316 | 3 | 97.81 | Debit | ワシントン D.C. |
1406 | 2 | 103.24 | Credit | ポートランド |
1421 | 2 | 44.95 | Cash | ポートランド |
1426 | 2 | 153.71 | Debit | ポートランド |
1454 | 3 | 168.95 | Credit | ワシントン D.C. |
1533 | 7 | 32.99 | Cash | <データなし> |
<データなし> | 4 | <データなし> | アーリントン | |
<データなし> | 5 | <データなし> | シャーロット | |
<データなし> | 6 | <データなし> | デンバー |
支店 ID 4、5、6、7 はどちらのデータセットにも存在しないため、生成されるデータセットにはこれらの ID の NULL 値が含まれます。
左
[左] リレーションシップ タイプ (左外部結合) では、左のテーブルにあるすべてのレコードと、右のテーブルの一致するレコードが保持されます。 右側のテーブルに一致する値がない場合は NULL 値が使用されます。
[左] リレーションシップ タイプを使用する際は、すべてのレコードを保持したいテーブルを最初に選択し、結合の左側に来るようにする必要があります。
以下のテーブルは、訪問先テーブルと支店テーブルのリレーションシップ タイプを [左] に指定して結合した結果を示したものです。
注文 ID | 支店 ID | 合計金額 ($) | 支払い方法 | 支店の場所 |
---|---|---|---|---|
1204 | 1 | 91.48 | Credit | Redlands |
1295 | 1 | 103.86 | Credit | Redlands |
1316 | 3 | 97.81 | Debit | ワシントン D.C. |
1406 | 2 | 103.24 | Credit | ポートランド |
1421 | 2 | 44.95 | Cash | ポートランド |
1426 | 2 | 153.71 | Debit | ポートランド |
1454 | 3 | 168.95 | Credit | ワシントン D.C. |
1533 | 7 | 32.99 | Cash | <データなし> |
支店 ID 7 は支店データセットに存在しないため、生成されるデータセットにはこの ID の NULL 値が含まれます。
右
[右] リレーションシップ タイプ (右外部結合) では、右のテーブルにあるすべてのレコードと、左のテーブルの一致するレコードが保持されます。 左側のテーブルに一致する値がない場合は NULL 値が使用されます。
[右] リレーションシップ タイプを使用する際は、すべてのレコードを保持したいテーブルを 2 番目に選択し、結合の右側に来るようにする必要があります。
以下のテーブルは、訪問先テーブルと支店テーブルのリレーションシップ タイプを [右] に指定して結合した結果を示したものです。
注文 ID | 合計金額 ($) | 支払い方法 | 支店 ID | 支店の場所 |
---|---|---|---|---|
1204 | 91.48 | Credit | 1 | Redlands |
1295 | 103.86 | Credit | 1 | Redlands |
1316 | 97.81 | Debit | 3 | ワシントン D.C. |
1406 | 103.24 | Credit | 2 | ポートランド |
1421 | 44.95 | Cash | 2 | ポートランド |
1426 | 153.71 | Debit | 2 | ポートランド |
1454 | 168.95 | Credit | 3 | ワシントン D.C. |
<データなし> | <データなし> | 4 | アーリントン | |
<データなし> | <データなし> | 5 | シャーロット | |
<データなし> | <データなし> | 6 | デンバー |
支店 ID 4、5、6 は訪問先データセットに存在しないため、生成されるデータセットにはこれらの ID の NULL 値が含まれます。
ベスト プラクティス
最も詳細なデータセットを結合の左側に配置することをおすすめします。 リレーションシップ タイプの例では訪問先テーブルが左側にあります。
単一フィールドが一意ではない場合は、複数のフィールドを使用して結合を作成します。 たとえば、[CityName] を [CityName] に結合する場合、[CityName] の値がデータセット内で重複しているため、郡、州、および国も指定する必要があります。
結合したデータセットで作成する視覚効果を決定する際には、結合の基数 (1 対 1、1 対多、または多対多) を考慮してください。 基数はリレーションシップ タイプ (内部、すべて、左、右) には影響を与えませんが、結合データセットで集約するフィールドまたはマップに表示するよう選択したフィールドには影響します。 たとえば、結合テーブルに 1 対多、または多対多のリレーションシップがある場合、データを集約する視覚効果 (バー チャートなど) で人為的に高い統計が表示される場合があります。