テーブルの結合 (Add Join) (データ管理)

サマリー

共通フィールドに基づいて、レイヤーを別のレイヤーまたはテーブルに結合します。 ラスター属性テーブルを含むフィーチャ レイヤー、テーブル ビュー、およびラスター レイヤーを使用できます。

[結合テーブル] 内のレコードは、[入力テーブル] パラメーターのレコードに一致します。 入力の結合フィールドと、出力の結合テーブルのフィールド値が等しい場合に一致したと見なされます。 この結合は一時的なものです。

テーブルの結合ツールの図

使用法

  • [入力テーブル] パラメーター値は、属性テーブルを含むフィーチャ レイヤー、テーブル ビュー、またはラスター レイヤーにすることができます。 データ パスが使用されると、レイヤーが結合とともに作成されます。 結合は、データではなく常にレイヤーに格納されます。

  • 永続的な結合を作成するには、[フィールドの結合 (Join Field)] ツールを使用するか、結合したレイヤーを次のツール、[フィーチャのコピー (Copy Features)][行のコピー (Copy Rows)][フィーチャクラス → フィーチャクラス (Feature Class To Feature Class)]、または [テーブル → テーブル (Table To Table)] のいずれかへの入力として使用します。結果を新しいフィーチャクラスまたはテーブルに保存する際は、[修飾されたフィールド名] 環境を使用して、結合した出力フィールド名を、フィールドを取得したテーブルの名前で修飾するかどうかを制御できます。

  • 入力がフィーチャクラスまたはデータセット パスの場合、このツールは、ツールの結果が適用された新しいレイヤーを自動的に作成して返します。

  • 次のテーブルには、さまざまな入力で結合を行った場合の考えられる結果が含まれます。

    最初のテーブルは、1 対多の結合を示します。 すべてのレコードが一致するため、一致するレコードのみを保持することによる影響はありません。

    入力テーブル結合テーブル結果

    入力フィールド

    タイプ

    結合フィールド

    入力フィールド

    タイプ

    結合フィールド

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    1

    300

    1

    A

    1

    300

    2

    400

    2

    B

    2

    400

    [テーブルの結合] の例: 各テーブルにオブジェクト ID フィールドがあるときの 1 対多の結合

    2 番目のテーブルは、オブジェクト ID のない結合テーブルを使用しています。この場合、1 対 1 の結合のみが可能です。

    入力テーブル結合テーブル結果

    入力フィールド

    タイプ

    結合フィールド

    入力フィールド

    タイプ

    結合フィールド

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    3

    300

    4

    400

    [テーブルの結合] の例: いずれのテーブルもオブジェクト ID フィールドがないときの 1 対 1 の結合

    最後に、入力テーブルには結合テーブルより多くのレコードがあります。すべてのレコードを保持することにより、一致するすべてのレコードに加えて、一致しない入力テーブルからのレコードが保持されます。

    入力テーブル結合テーブル結果

    入力フィールド

    タイプ

    結合フィールド

    入力フィールド

    タイプ

    結合フィールド

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    3

    C

    1

    300

    1

    A

    1

    300

    4

    D

    2

    400

    2

    B

    2

    400

    3

    C

    <NULL>

    <NULL>

    4

    D

    <NULL>

    <NULL>

    [テーブルの結合] の例: 各テーブルにオブジェクト ID フィールドがあり、[すべてのターゲット フィーチャを保持する] パラメーターがオンのときの 1 対多の結合

    入力テーブルには、1 対多の結合を実行するオブジェクト ID フィールドがある必要があります。

  • 結合テーブルのレコードは、結合テーブルがオブジェクト ID フィールドを含む場合は複数のレコードに一致することが可能です。そうでない場合は、1 対 1 の結合が実行されます。

  • テーブルを結合するときに、すべてのレコードを保持するのがデフォルトのオプションです。 ターゲット テーブルのレコードと一致するレコードが結合テーブルに存在しない場合、そのレコードの、結合テーブルからターゲット テーブルに追加されているすべてのフィールドに、NULL 値が与えられます。

    入力テーブル結合テーブル結果

    入力フィールド

    タイプ

    結合フィールド

    入力フィールド

    タイプ

    結合フィールド

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    3

    C

    1

    300

    1

    A

    1

    300

    4

    D

    2

    400

    2

    B

    2

    400

    3

    C

    <NULL>

    <NULL>

    4

    D

    <NULL>

    <NULL>

    一致するレコードのみを保持するオプションを使用すると、ターゲット テーブルのレコードと一致するレコードが結合テーブルに存在しない場合、結合後のテーブルからそのレコードが削除されます。 ターゲット テーブルがレイヤーの属性テーブルである場合、それらに結合されているデータを持たないフィーチャはマップに表示されません。

    入力テーブル結合テーブル結果

    入力フィールド

    タイプ

    結合フィールド

    入力フィールド

    タイプ

    結合フィールド

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    3

    300

    4

    400

  • エイリアス、表示設定、数値形式などのフィールド プロパティは、結合が追加または削除された場合も維持されます。

  • 入力テーブルは、一度に 1 つの結合が可能です。

  • 結合はレイヤーの継続期間のみ有効です。 レイヤーは、ArcGIS Pro セッションを保存するか、[レイヤーをファイルへ保存 (Save Layer To File)] ツールを使用してレイヤー ファイルに保存することで、保持できます。

    スクリプト ツールで作成された結合の結果を確認するには、ツールがレイヤーを派生した出力パラメーターとして含む必要があります。 同様に、結合された結果を確認するには、モデル ツールで、[更新された入力テーブル] パラメーターを派生した出力パラメーターとして設定する必要があります。

  • デフォルトとして、ツール実行後の入力テーブルでは、フィールドの前に入力の名前とピリオド (.) が追加され、結合テーブルのすべてのフィールドの前に結合テーブルの名前とピリオドが追加されます。

    • たとえば、AB というフィールドがある landuse を、CD というフィールドがある lookup_tab に結合すると、ツール実行後のレイヤーまたはテーブル ビューのフィールドは landuse.Alanduse.Blookup_tab.Clookup_tab.D になります。

  • 結合のキーとなる、入力テーブルおよび結合テーブル内の各フィールドにインデックスを付けると、パフォーマンスを向上させることができます。 [結合フィールドのインデックスを作成] パラメーターをオンにすると、結合する両方のフィールドに属性インデックスが追加されます。 または、結合する各フィールドには、[属性インデックスの追加 (Add Attribute Index)] ツールを使用してインデックスを付けることができます。

  • 入力のレイヤーまたはテーブル ビューのフィールドが [フィーチャ レイヤーの作成 (Make Feature Layer)] ツールまたは [テーブル ビューの作成 (Make Table View)] ツールの [フィールド情報] パラメーターを使用して変更 (名前の変更または非表示設定) された場合でも、このフィールド変更は、結合後の出力のレイヤーまたはテーブル ビューには含まれません。

  • 結合テーブルのフィルター設定は、入力レイヤーまたはテーブル ビューに適用されます。 フィルター設定を削除するには、[テーブル結合の解除 (Remove Join)] ツールを使用するか、フィルター設定をレイヤーから手動で削除します。

  • [結合の整合チェック (Validate Join)] ツールを使用すると、レイヤーまたはテーブルに有効なフィールド名または Object ID フィールドがあるかどうか、結合より一致するレコードが生成されるか、および結合のその他のプロパティを判定するため、2 つのレイヤーまたはテーブル間の結合について整合チェックを行うことができます。

    結合の整合チェックを行うボタンは、簡単に使用できるよう、このツールのダイアログ ボックスにあります。

  • レイヤーでの選択は、[テーブルの結合 (Add Join)] ツールでは使用されませんが、[フィールドの結合 (Join Field)] ツールでは使用されます。

パラメーター

ラベル説明データ タイプ
入力テーブル

結合テーブルに結合するレイヤーまたはテーブル ビュー。

Mosaic Layer; Raster Layer; Table View
レイヤー、テーブル ビューのキーとなるフィールド

結合のキーとなる、入力のレイヤーまたはテーブル ビューのフィールド。

Field
結合テーブル

入力レイヤーまたはテーブル ビューの結合先となるテーブルまたはテーブル ビュー。

Mosaic Layer; Raster Layer; Table View
結合テーブル フィールド

結合のキーとなる値が格納されている、結合テーブル内のフィールド。

Field
すべてのターゲット フィーチャを保持する
(オプション)

結合先のテーブルに含まれるレコードに一致する入力内のレコードのみを出力に含めます。

  • オン - 入力のレイヤーまたはテーブル ビュー内のすべてのレコードを出力に含めます。 これは外部結合とも呼ばれます。 これがデフォルトです。
  • オフ - 結合先のテーブルに含まれる行に一致する入力内のレコードのみを出力に含めます。 これは内部結合とも呼ばれます。
Boolean
結合フィールドのインデックスを作成
(オプション)

テーブル属性のインデックスが結合する両方のフィールドに追加されるかどうかを指定します。

  • オン - 両方の結合フィールドにインデックスが作成されます。 テーブルにインデックスがすでに存在する場合、新しいインデックスは追加されません。
  • オフ - インデックスは追加されません。 これがデフォルトです。
Boolean

派生した出力

ラベル説明データ タイプ
更新された入力レイヤーまたはテーブル ビュー

更新された入力データセット。

Table View; Raster Layer; Mosaic Layer

arcpy.management.AddJoin(in_layer_or_view, in_field, join_table, join_field, {join_type}, {index_join_fields})
名前説明データ タイプ
in_layer_or_view

結合テーブルに結合するレイヤーまたはテーブル ビュー。

Mosaic Layer; Raster Layer; Table View
in_field

結合のキーとなる、入力のレイヤーまたはテーブル ビューのフィールド。

Field
join_table

入力レイヤーまたはテーブル ビューの結合先となるテーブルまたはテーブル ビュー。

Mosaic Layer; Raster Layer; Table View
join_field

結合のキーとなる値が格納されている、結合テーブル内のフィールド。

Field
join_type
(オプション)

結合先のテーブルに含まれるレコードに一致する入力内のレコードのみを出力に含めます。

  • KEEP_ALL入力のレイヤーまたはテーブル ビュー内のすべてのレコードを出力に含めます。 これは外部結合とも呼ばれます。 これがデフォルトです。
  • KEEP_COMMON結合先のテーブルに含まれる行に一致する入力内のレコードのみを出力に含めます。 これは内部結合とも呼ばれます。
Boolean
index_join_fields
(オプション)

テーブル属性のインデックスが結合する両方のフィールドに追加されるかどうかを指定します。

  • INDEX_JOIN_FIELDS両方の結合フィールドにインデックスが作成されます。 テーブルにインデックスがすでに存在する場合、新しいインデックスは追加されません。
  • NO_INDEX_JOIN_FIELDSインデックスは追加されません。 これがデフォルトです。
Boolean

派生した出力

名前説明データ タイプ
out_layer_or_view

更新された入力データセット。

Table View; Raster Layer; Mosaic Layer

コードのサンプル

AddJoin の例 1 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、イミディエイト モードで AddJoin 関数を使用する方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
veg_joined_table = arcpy.AddJoin_management("vegetation", "HOLLAND95", 
                                            "vegtable", "HOLLAND95")
arcpy.CopyFeatures_management(veg_joined_table, "vegjoin")
AddJoin の例 2 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトは、AddJoin 関数をワークフローの一部として使用し、テーブルをフィーチャクラスに結合してから指定したフィーチャを抽出する方法を示しています。

# Name: AttributeSelection.py
# Purpose: Join a table to a featureclass and select the desired attributes

# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
# The qualifiedFieldNames environment is used by Copy Features when persisting 
# the join field names.
arcpy.env.qualifiedFieldNames = False

# Set local variables
inFeatures = "vegtype"
joinTable = "vegtable"
joinField = "HOLLAND95"
expression = "vegtable.HABITAT = 1"
outFeature = "vegjoin"

# Join the feature layer to a table
veg_joined_table = arcpy.AddJoin_management(inFeatures, joinField, joinTable, 
                                            joinField)

# Select desired features from veg_layer
arcpy.SelectLayerByAttribute_management(veg_joined_table, "NEW_SELECTION", 
                                        expression)

# Copy the layer to a new permanent feature class
arcpy.CopyFeatures_management(veg_joined_table, outFeature)

環境

特殊なケース

ライセンス情報

  • Basic: Yes
  • Standard: Yes
  • Advanced: Yes

関連トピック