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

概要

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

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

[テーブルの結合 (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)] ツールでは使用されます。

構文

arcpy.management.AddJoin(in_layer_or_view, in_field, join_table, join_field, {join_type})
パラメーター説明データ タイプ
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

派生した出力

名前説明データ タイプ
out_layer_or_view

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

テーブル ビュー; ラスター レイヤー; モザイク レイヤー

コードのサンプル

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: はい
  • Standard: はい
  • Advanced: はい

関連トピック