Zusammenfassung
Überprüft eine Verbindung zwischen zwei Layern oder Tabellen, um zu bestimmen, ob die Layer oder Tabellen gültige Feldnamen und Objekt-ID-Felder enthalten, ob die Verbindung übereinstimmende Datensätze generiert und ob die Verbindung eine Eins-zu-Eins- oder Eins-zu-Viele-Verbindung ist, und um weitere Eigenschaften der Verbindung zu bestimmen.
Dieses Werkzeug generiert keine Verbindung, sondern analysiert lediglich eine potenzielle Verbindung. Die Verbindung, die durch dieses Werkzeug überprüft wird, kann mit den Werkzeugen Verbindung hinzufügen oder Feld verbinden erstellt werden. Die Ergebnisse der Überprüfung der Verbindung werden durch dieses Werkzeug als Meldungen und optional als Ausgabetabelle zurückgegeben.
Verwendung
Dieses Werkzeug erstellt zur Angabe der Merkmale der überprüften Verbindung die folgenden Meldungen:
- Die Anzahl der Zeilen und die Anzahl der Übereinstimmungen der angegebenen Verbindung zwischen der Eingabe-Layer- oder -Tabellensicht und der Join-Tabelle. Wenn die Verbindung keine Übereinstimmungen generiert, wird eine Warnmeldung eingefügt. Die Anzahl der Zeilen und die Anzahl der Übereinstimmungen werden auch als abgeleitete Ausgaben des Werkzeugs zurückgegeben.
- Wenn die Join-Tabellen keine Objekt-IDs enthalten, wird eine Warnmeldung eingefügt.
- Die Kardinalität der Verbindung (ob sie Eins-zu-Eins-Ergebnisse oder Eins-zu-Viele-Ergebnisse generiert).
- Wenn die Join-Felder ungültige Anfangszeichen oder ihre Namen problematische Zeichen enthalten, wird eine Warnmeldung eingefügt.
- Wenn die Join-Felder reservierte SQL-Schlüsselwörter verwenden, wird eine Warnmeldung eingefügt.
- Die Join-Felder sind indiziert oder haben keinen Attributindex. Feldindizes ermöglichen eine optimale Performance für bestimmte Datenformate.
- Die Join-Tabellen stammen aus dem gleichen Workspace. Wenn die Eingabe-Layer- oder -Tabellensicht und die Join-Tabelle in demselben Workspace oder derselben Datenbank gespeichert werden, ist die Performance der Verbindung wesentlich schneller. Verbindungen zwischen Tabellen in verschiedenen Datenbanken sind möglich. Allerdings ist dann die Performance beeinträchtigt, da die Datenbank nicht zum Herstellen der Verbindung verwendet werden kann.
Dieses Werkzeug kann eine optionale Ausgabetabelle mit einer Liste der gefundenen Probleme in der überprüften Verbindung generieren. Die Ausgabetabelle enthält die folgenden Felder:
- TYPE: Ein Schlüsselwort zur Angabe eines bestimmten Merkmals oder Problems, das in der überprüften Verbindung gefunden wurde. Die folgenden Werte sind möglich:
Schlüsselwort Beschreibung GPM_INVALID_CHARACTER_IN_NAME
Das Feld enthält in seinem Namen ein ungültiges Zeichen.
GPM_INVALID_FIRST_CHARACTERS_MSG
Das Feld enthält ein ungültiges erstes Zeichen.
GPM_RESERVED_SQL_KEYWORD
Das Feld enthält in seinem Namen reservierte SQL-Schlüsselwörter.
GPM_NO_MATCH_JOIN
Die Verbindung generiert keine Übereinstimmungen.
GPM_NO_OBJECTID_JOIN
Die Eingabe-Layer- oder -Tabellensicht enthält kein Objekt-ID-Feld.
GPM_NOT_INDEX_FIELD
Das Feld ist nicht indiziert.
DIFFERENT_WORKSPACE
Die Tabellen werden in verschiedenen Workspaces oder Datenbanken gespeichert.
- TABLE_NAME: Der Name der Tabelle, die die Meldung oder Warnung zur Überprüfung der Verbindung generiert hat.
- FIELD_NAME: Der Name des Feldes in der Eingabe-Layer- oder -Tabellensicht oder Join-Tabelle, das die Meldung oder Warnung zur Überprüfung der Verbindung generiert hat.
- DESC: Genauere Beschreibung der Meldung oder Warnung zur Überprüfung mit Informationen zum Lösen eines Problems.
- TYPE: Ein Schlüsselwort zur Angabe eines bestimmten Merkmals oder Problems, das in der überprüften Verbindung gefunden wurde. Die folgenden Werte sind möglich:
Die Kardinalität der Verbindung (ob Eins-zu-Eins- oder Eins-zu-Viele-Verbindung) wird durch dieses Werkzeug überprüft. Datensätze aus der Join-Tabelle können mehr als einem Datensatz aus dem Eingabe-Layer oder der Tabellensicht zugeordnet werden. Analog können Datensätze aus der Join-Tabelle genau einem Datensatz aus dem Eingabe-Layer oder der Tabellensicht zugeordnet werden, wodurch eine Eins-zu-Viele-Verbindung entsteht.
Syntax
ValidateJoin(in_layer_or_view, in_field, join_table, join_field, {output_msg})
Parameter | Erklärung | Datentyp |
in_layer_or_view | Der Layer oder die Tabellensicht mit der Verbindung zur Join-Tabelle, die überprüft wird. | Mosaic Layer; Raster Layer; Table View |
in_field | Das Feld im Eingabe-Layer oder der Tabellensicht, auf dem die Verbindung basiert. | Field |
join_table | Die Tabelle oder Tabellensicht mit der Verbindung zur Eingabe-Layer- oder -Tabellensicht, die überprüft wird. | Mosaic Layer; Raster Layer; Table View |
join_field | Das Feld in der Join-Tabelle, das die Werte enthält, auf denen die Verbindung basiert. | Field |
output_msg (optional) | Die Ausgabetabelle mit den Meldungen zur Überprüfung in Tabellenform. | Table |
Abgeleitete Ausgabe
Name | Erklärung | Datentyp |
match_count | Die Anzahl der eindeutigen Datensätze aus dem Eingabe-Layer oder der Eingabetabelle, die mit einem Datensatz im Join-Layer oder in der Join-Tabelle übereinstimmen. | Long |
row_count | Die Anzahl der eindeutigen Datensätze, die durch die Verbindung zwischen den Eingabe- und Join-Layern oder -Tabellen generiert wurden. Eins-zu-Viele-Verbindungen zählen jedes übereinstimmende Paar aus Datensätzen. Wegen der Eins-zu-Viele-Verbindungen kann die in der Ausgabe angegebene Anzahl der Zeilen größer als die Anzahl der Übereinstimmungen sein. | Long |
Codebeispiel
Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion ValidateJoin im unmittelbaren Modus verwendet wird.
import arcpy
arcpy.ValidateJoin_management("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
arcpy.AddJoin_management("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
Dieses eigenständige Skript zeigt die Funktion ValidateJoin als Teil eines Workflows, um eine Tabelle mit einer Feature-Class zu verbinden.
# Name: AttributeJoin.py
# Purpose: Join a table to a feature class and find one-to-many matches
# 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" # both tables have HOLLAND95 field
outFeatures = "Vegtype_Joined"
# Join the feature layer to a table
val_res = arcpy.ValidateJoin_management(inFeatures, joinField, joinTable, joinField)
matched = int(val_res[0])
row_count = int(val_res[1])
print(arcpy.GetMessages()) # Tool messages about the Join
# Validate the join returns matched rows before proceeding
if matched >= 1:
joined = arcpy.AddJoin_management(inFeatures, joinField, joinTable, joinField)
# Copy the joined layer to a new permanent feature class
arcpy.CopyFeatures_management(joined, outFeatures)
print(f"Output Features: {outFeatures} had matches {matched} and created {row_count} records")
Umgebungen
Lizenzinformationen
- Basic: Ja
- Standard: Ja
- Advanced: Ja