フィールドの結合 (Join Field) (データ管理)

サマリー

共通属性フィールドに基づいて、テーブルの内容を別のテーブルに永続的に結合します。 入力テーブルが更新され、結合テーブル内のフィールドが格納されます。 結合テーブルからのフィールドの中から、入力テーブルに追加するフィールドを選択することができます。

使用法

  • [レイヤー、テーブル ビューのキーとなるフィールド] パラメーターの値および [結合テーブル フィールド] パラメーターの値に基づいて [入力テーブル] 値内のレコードを [結合テーブル] 値内のレコードと照合します。 結合時には必要に応じて、特定のフィールドを [結合テーブル] 値から選択し、[入力テーブル] 値に付加できます。

  • [入力テーブル] 値には、フィーチャクラス (シェープファイルを含む) またはテーブルを指定できます。

  • 結合時は [入力テーブル] 値内のすべてのフィールドが保持されます。 必要に応じて、[結合テーブル] 値から特定のフィールドを選択し、出力に追加することも可能です。 [転送フィールド] パラメーターを使用して、これらのフィールドを追加します。

  • [結合テーブル] 値内のレコードは、[入力テーブル] 値内の複数のレコードと照合できます。

  • オプションの [転送フィールド] パラメーター用にフィールドを選択しない場合、[結合テーブル] 値のすべてのフィールドが出力に結合されます。 フィールド名、エイリアス、またはプロパティを変更するには、[転送方法] パラメーターを [フィールド マッピングの使用] に設定します。

  • 結合はフィールドのタイプ (テキスト、日付または数値) に基づいて実行できます。

  • テキスト フィールドに基づく結合では、大文字と小文字が区別されます。

  • 数値形式が異なるフィールド同士でも、それぞれの値が等しい限り結合できます。 たとえば、Float 型のフィールドと Short 型のフィールドを結合できます。

  • 入力テーブルに結合した場合、Global ID タイプまたは Object ID タイプの結合テーブルのフィールドは転送されません。

    [レイヤー、テーブル ビューのキーとなるフィールド] 値と [結合テーブル フィールド] 値にはそれぞれ異なったフィールド名を付けることができます。

  • 結合フィールドに入力テーブル内のフィールドと同じ名前が付いている場合、結合フィールドの名前が他と重複することのないように、結合フィールドの末尾に _1 (あるいは _2、_3、... など) が付加されます。

  • [転送方法] パラメーターに [転送フィールドの選択] オプションが指定され、[結合テーブル フィールド] パラメーター値内のフィールド値が一意でない場合は、各値の最初の値のみが使用されます。 最初の値以外の値が考慮されるようにする (1 対多の結合) には、[転送方法] パラメーターを [フィールド マッピングの使用] に設定します。 1 対多の結合を実行するには、[入力テーブル] パラメーター値に Object ID フィールドがあって、[結合テーブル] パラメーター値と同じワークスペースに存在する必要があります。

  • 出力データセット内のフィールドとそれらのフィールドの内容を管理するには、[フィールド マップ] パラメーターを使用します。

    • フィールドの順序を変更するには、フィールド名を選択して、新しい位置にドラッグします。
    • 出力フィールドのデフォルトのデータ タイプは、最初に検出した (その名前の) 入力フィールドのデータ タイプと同じになります。 データ タイプをいつでも手動で他の任意の有効なデータ タイプに変更できます。
    • 使用できるマージ ルールは、最初、最後、結合、合計、平均、中央値、最頻値、最小、最大、標準偏差、個数です。
    • [結合] マージ ルールを使用している場合、スペース、カンマ、ピリオド、ダッシュなど、区切り文字を指定できます。 スペースを使用する場合は、入力ボックスの先頭にポインターを置き、Space キーを 1 回押してください。
    • 書式設定オプションを使用して、テキスト フィールドの開始位置と終了位置を指定できます。
    • ゼロによる除算が発生するため、1 個しかないデータの標準偏差を計算しないでください。したがって、入力ソースがただ 1 つである場合には、標準偏差オプションを使用すべきではありません。

    スクリプトでフィールドをマッピングする方法の詳細

  • [フィールド マップ] パラメーターが結合マージ ルールで指定されると、結合値の順序は、値が一意でない場合、[結合テーブル フィールド] パラメーターの行の順序と一致するものと保証する方法がありません。 たとえば、ネズミ、ネコ、イヌの ANIMAL 属性値を持つ 3 つのフィーチャが結合した場合、その結果の順序はネズミ、ネコ、イヌである必要はありません。

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

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

パラメーター

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

結合テーブルの結合先となるテーブルまたはフィーチャクラス。

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

結合のキーになる入力テーブル内のフィールド。

Field
結合テーブル

入力テーブルに結合されるテーブル。

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

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

Field
転送フィールド
(オプション)

入力テーブルと結合テーブルの間の結合に基づいて、入力テーブルに転送される、結合テーブルのフィールド。

Field
転送方法
(オプション)

結合フィールドとフィールド タイプを出力に転送する方法を指定します。

  • 転送フィールドの選択結合テーブルのフィールドとフィールド タイプが出力に転送されます。 これがデフォルトです。
  • フィールド マッピングの使用結合テーブルから出力へのフィールドとフィールド タイプの転送は、[フィールド マップ] パラメーターによって制御されます。
String
フィールド マップ
(オプション)

出力に含まれる属性フィールド、およびそれに対応するフィールド プロパティとソース フィールド。 デフォルトでは、入力のすべてのフィールドが含まれます。

フィールドの追加、削除、名前変更、並べ替えを行うことができ、フィールドのプロパティを変更することもできます。

マージ ルールによって、複数の入力フィールドの値を単一の出力値にマージまたは結合する方法を指定できます。 出力フィールドの値を指定する方法を決定するために使用できるマージ ルールは次のとおりです。

  • 最初 - 入力フィールドの最初の値を使用します。
  • 最後 - 入力フィールドの最後の値を使用します。
  • 結合 - 入力フィールドの値を結合します。
  • 合計 - 入力フィールドの値の合計を計算します。
  • 平均 - 入力フィールドの値の平均を計算します。
  • 中央値 - 入力フィールドの値の中央値を計算します。
  • 最頻値 - 最も頻度が高い値を使用します。
  • 最小 - すべての入力フィールドの値のうちの最小値を使用します。
  • 最大 - すべての入力フィールドの値のうちの最大値を使用します。
  • 標準偏差 - すべての入力フィールドの値に、標準偏差の分類法を使用します。
  • 個数 - 計算に含まれるレコード数を検出します。

Field Mappings

派生した出力

ラベル説明データ タイプ
更新された入力テーブル

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

Table View; Raster Layer; Mosaic Layer

arcpy.management.JoinField(in_data, in_field, join_table, join_field, {fields}, {fm_option}, {field_mapping})
名前説明データ タイプ
in_data

結合テーブルの結合先となるテーブルまたはフィーチャクラス。

Mosaic Layer; Raster Layer; Table View
in_field

結合のキーになる入力テーブル内のフィールド。

Field
join_table

入力テーブルに結合されるテーブル。

Mosaic Layer; Raster Layer; Table View
join_field

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

Field
fields
[fields,...]
(オプション)

入力テーブルと結合テーブルの間の結合に基づいて、入力テーブルに転送される、結合テーブルのフィールド。

Field
fm_option
(オプション)

結合フィールドとフィールド タイプを出力に転送する方法を指定します。

  • NOT_USE_FM結合テーブルのフィールドとフィールド タイプが出力に転送されます。 これがデフォルトです。
  • USE_FM結合テーブルから出力へのフィールドとフィールド タイプの転送は、field_mapping パラメーターによって制御されます。
String
field_mapping
(オプション)

出力に含まれる属性フィールド、およびそれに対応するフィールド プロパティとソース フィールド。 デフォルトでは、入力のすべてのフィールドが含まれます。

フィールドの追加、削除、名前変更、並べ替えを行うことができ、フィールドのプロパティを変更することもできます。

マージ ルールによって、複数の入力フィールドの値を単一の出力値にマージまたは結合する方法を指定できます。 出力フィールドの値を指定する方法を決定するために使用できるマージ ルールは次のとおりです。

  • 最初 - 入力フィールドの最初の値を使用します。
  • 最後 - 入力フィールドの最後の値を使用します。
  • 結合 - 入力フィールドの値を結合します。
  • 合計 - 入力フィールドの値の合計を計算します。
  • 平均 - 入力フィールドの値の平均を計算します。
  • 中央値 - 入力フィールドの値の中央値を計算します。
  • 最頻値 - 最も頻度が高い値を使用します。
  • 最小 - すべての入力フィールドの値のうちの最小値を使用します。
  • 最大 - すべての入力フィールドの値のうちの最大値を使用します。
  • 標準偏差 - すべての入力フィールドの値に、標準偏差の分類法を使用します。
  • 個数 - 計算に含まれるレコード数を検出します。

このパラメーターを定義するには、PythonFieldMappings クラスを使用します。

Field Mappings

派生した出力

名前説明データ タイプ
out_layer_or_view

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

Table View; Raster Layer; Mosaic Layer

コードのサンプル

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

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

import arcpy
arcpy.env.workspace = "C:/data/data.gdb"
arcpy.management.JoinField("zion_park", "zonecode", "zion_zoning", "zonecode", 
                           ["land_use", "land_cover"])
JoinField 例 2 (スタンドアロン スクリプト)

以下のスタンドアロン Python スクリプトは、フィーチャクラスにテーブルを結合するために使用される JoinField 関数を示しています。このスクリプトでは、テーブルのフィールドのうちの 2 つだけが、結合の対象となります。

# PermanentJoin.py
# Purpose: Join two fields from a table to a feature class 

# Import system modules
import arcpy

# Set the current workspace 
arcpy.env.workspace = "c:/data/data.gdb"

# Set the local parameters
inFeatures = "zion_park"
joinField = "zonecode"
joinTable = "zion_zoning"
fieldList = ["land_use", "land_cover"]

# Join two feature classes by the zonecode field and only carry 
# over the land use and land cover fields
arcpy.management.JoinField(inFeatures, joinField, joinTable, joinField, 
                           fieldList)