[入力テーブル] パラメーター値は、属性テーブルを含むフィーチャ レイヤー、テーブル ビュー、またはラスター レイヤーにすることができます。 データ パスが使用されると、レイヤーが結合とともに作成されます。 結合は、データではなく常にレイヤーに格納されます。
永続的な結合を作成するには、[フィールドの結合 (Join Field)] ツールを使用するか、結合したレイヤーを [フィーチャのコピー (Copy Features)]、[行のコピー (Copy Rows)]、[フィーチャのエクスポート (Export Features)]、または [テーブルのエクスポート (Export Table)] ツールのいずれかへの入力として使用します。 結果を新しいフィーチャクラスまたはテーブルに保存する場合、環境設定の完全に記述したフィールド名を保持を使用すると、結合後の出力フィールドの名前を、フィールドの取得元のテーブルの名前で修飾するかどうかを制御できます。 出力がシェープファイルの場合を除き、レイヤーから出力にフィールド エイリアスが保存されます。
[クエリ レイヤーの作成 (Make Query Layer)] ツール、[データベース ビューの作成 (Create Database View)] ツール、または [集約クエリ レイヤーの作成 (Make Aggregation Query Layer)] ツールを使用すると、結合パフォーマンスが最適化され、エンタープライズ ジオデータベースまたは SQLite データベース データを結合する際には、さらに多くの機能を使用できます。
入力がフィーチャクラスまたはデータセット パスの場合、このツールは、ツールの結果が適用された新しいレイヤーを作成して返します。
結合によって 1 対多の結合が生成された場合、結合の結果は属性テーブルで確認でき、テーブルに重複するオブジェクト ID が存在する場合、警告メッセージが表示されます。 多くのジオプロセシング ツールは重複したオブジェクト ID を含むデータをサポートしておらず、そのようなデータを処理した際に予期しない結果が生じる可能性があるため、最初に [フィーチャのエクスポート (Export Features)] ツールを使用して結合したレイヤーを新しいフィーチャクラスにコピーすることをお勧めします。 その後、新しいフィーチャクラスを他のジオプロセシング ツールの入力として使用します。
必要に応じて、[結合方法] パラメーターを [1 対 1 の結合] に設定して、オブジェクト ID の重複を避けます。
[結合方法] パラメーターには、基数を調整するための状態が 3 つあります。 デフォルトは空白で、データ ソースが 1 対多の結合を試行できるようにします。 [1 対多の結合] オプションは、オブジェクト ID フィールドを持つ特定のデータ ソースでのみ動作します。 [1 対 1 の結合] オプションは、テーブルの最初の一致を使用します。その結果、オブジェクト ID フィールドが変更されるか、テーブルのコピー先のワークスペースが変更されると、出力が異なる可能性があります。 1 対 1 の結合は大文字と小文字を区別しませんが、1 対多の結合は大文字と小文字を区別します。
次のテーブルには、さまざまな入力で結合を行った場合の考えられる結果が含まれます。
最初のテーブルは、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 対 1 の結合を行うことができます。 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 |
[フィールド演算 (Calculate Field)] ツールは、1 対多のレイヤーを使用している場合は最初に見つかったレコードを更新し、残りの重複レコードをスキップします。 テーブル ビューで結合レイヤー フィールド値を手動で編集すると、最後に行った編集内容が残ります。
エイリアス、表示設定、数値形式などのフィールド プロパティは、結合が追加または削除された場合も維持されます。
結合はレイヤーの継続期間のみ有効です。 レイヤーは、ArcGIS AllSource セッションを保存するか、[レイヤーをファイルへ保存 (Save Layer To File)] ツールを使用してレイヤー ファイルに保存することで、保持できます。
スクリプト ツールで作成された結合の結果を確認するには、ツールがレイヤーを派生した出力パラメーターとして含む必要があります。 同様に、結合された結果を確認するには、モデル ツールで、[更新された入力レイヤーまたはテーブル ビュー] パラメーターを派生した出力パラメーターとして設定する必要があります。
デフォルトとして、ツール実行後のテーブルでは、フィールドの前に入力の名前とピリオド (.) が追加され、結合テーブルのすべてのフィールドの前に結合テーブルの名前とピリオドが追加されます。
たとえば、A と B というフィールドがある landuse を、C と D というフィールドがある lookup_tab に結合すると、ツール実行後のレイヤーまたはテーブル ビューのフィールドは landuse.A、landuse.B、lookup_tab.C、lookup_tab.D になります。
レイヤーには一意のフィールド名が必要です。 入力テーブルと結合テーブルの名前が同じで異なるワークスペースに存在する場合、結合を実行すると定義が不適切なレイヤーが作成されます。
入力フィールドと結合フィールドにインデックスを付けると、パフォーマンスが向上します。 [結合フィールドのインデックスを作成] パラメーターをオンにすると、両方のフィールドに属性インデックスが追加されます。 または、結合する各フィールドには、[属性インデックスの追加 (Add Attribute Index)] ツールを使用してインデックスを付けることができます。
結合結果が想定外または未完了の場合は、入力フィールドと結合フィールドにインデックスが付けられているかどうかを確認します。 フィールドにインデックスがない場合は、インデックスを追加してみてください。 フィールドにインデックスがある場合は、インデックスを削除して再度追加し、インデックスに関する問題を修正してください。 あるいは、[インデックスの再構築 (Rebuild Indexes)] パラメーターをオンにし、既存のインデックスを削除して再構築します。
-
入力のレイヤーまたはテーブル ビューのフィールドが [フィーチャ レイヤーの作成 (Make Feature Layer)] ツールまたは [テーブル ビューの作成 (Make Table View)] ツールの [フィールド情報] パラメーターを使用して変更 (名前の変更または非表示設定) された場合でも、このフィールド変更は、結合後の出力のレイヤーまたはテーブル ビューには含まれません。
結合テーブルの定義クエリは、新しいアクティブなクエリを追加することで入力レイヤーまたはテーブル ビューに適用されます。 前回のクエリは保持され非アクティブに設定されるため、必要に応じて結合されたテーブルから無効にすることができます。 定義クエリを削除するには、[テーブル結合の解除 (Remove Join)] ツールを使用します。
結合テーブルに定義クエリがある場合、[すべての入力レコードを保持] パラメーターによる影響はありません。 必要に応じて、or OBJECTID is null を追加し、定義クエリを手動で更新して修正できます。
[結合の検証 (Validate Join)] ツールを使用すると、レイヤーまたはテーブルに有効なフィールド名および Object ID フィールドがあるかどうか、結合によって一致するレコードが生成されるか、結合が 1 対 1 であるか 1 対多であるかなどの結合のプロパティを判定するため、2 つのレイヤーまたはテーブル間の結合について検証を行うことができます。
結合の検証を行うボタンは、簡単に使用できるよう、ツールのダイアログ ボックスにあります。
[テーブルの結合 (Add Join)] ツールでは、入力テーブルまたは結合テーブルの選択セットは無視されます。 [フィールドの結合 (Join Field)] ツールでは、選択セットがサポートされています。 選択したサブセットのみで結合するには、選択レイヤーを作成して、そのレイヤーを [テーブルの結合 (Add Join)] ツールの入力として使用します。 結合レイヤーのプロパティは、選択レイヤーの作成時にコピーされます。