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

概要

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

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

テーブル結合 (Add Join)

使用法

  • 属性テーブルを含むフィーチャ レイヤー、テーブル ビュー、またはラスター レイヤーを入力する必要があります。

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

  • [結合テーブル] のレコードを、入力のレイヤーまたはテーブル ビュー内の複数のレコードに一致させることができます。

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

    結合によってすべてのレコードを保持する例

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

    結合によって一致するレコードのみを保持する例

  • 入力のレイヤーまたはテーブル ビューには ObjectID フィールドが必要です。[結合テーブル]ObjectID を含める必要はありません。

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

  • 同じテーブル名を使用した結合がすでに存在する場合、たとえば、レイヤー A がテーブル B と結合している場合に、ツールを実行してテーブル B と再び結合しようとすると、結合がすでに存在することを知らせる警告が表示されます。

  • 結合はセッションの継続期間のみ有効です。他のセッションで使用するために結合を維持するには、[レイヤー ファイルの保存 (Save To Layer File)] ツールを使用して、レイヤーをレイヤー ファイルに保存してください。この操作はレイヤーに対してのみ可能です。テーブル ビューはこの方法では保存できません。

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

    • たとえば、AB というフィールドがある landuse を、CD というフィールドがある lookup_tab に結合すると、ツール実行後のレイヤーまたはテーブル ビューのフィールドは llanduse.Alanduse.Blookup_tab.Clookup_tab.D になります。
    • カバレッジ フィーチャクラスおよび INFO テーブルの場合は、テーブルとフィールド名の区切り文字がピリオドではなくコロン (:) になります。

  • 永続的な結合を行う場合は、[フィールドの結合 (Join Field)] ツールを使用できます。結合を永続的にするためのもう 1 つの方法としては、結合したフィーチャ レイヤーを新しいフィーチャクラスに、または結合したテーブル ビューを新しいテーブルに保存します。結果を新しいフィーチャクラスまたはテーブルに保存する場合、環境設定の修飾されたフィールド名を使用すると、結合後の出力フィールドの名前を、フィールドの取得元のテーブルの名前で修飾するかどうかを制御できます。

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

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

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

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

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

構文

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"
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: はい

関連トピック