Verbindung überprüfen (Data Management)

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, es analysiert eine potenzielle Verbindung mit den aktuellen Daten. Da alle Verbindungen potenziell Eins-zu-Viele-Verbindungen werden können, wird in den Layer-Eigenschaften immer die Beziehungsart "Eins-zu-Viele" angezeigt. Eine Verbindung kann sich von "Eins-zu-Eins" in "Eins-zu-Viele" ändern, wenn sich die Daten ändern. 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üsselwortBeschreibung

      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-, der 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.

  • 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.

  • Wenn von der Verbindung eine Eins-zu-Viele-Verbindung erzeugt wird, kann das Ergebnis der Verbindung in der Attributtabelle angezeigt werden. Dort gibt eine Warnmeldung an, ob die Tabelle doppelte Objekt-IDs enthält. Da viele Geoverarbeitungswerkzeuge Daten mit doppelten Objekt-IDs nicht unterstützen und das Verarbeiten solcher Daten zu unerwarteten Ergebnissen führen kann, sollten Sie den verbundenen Layer zuerst mit dem Werkzeug Features exportieren in eine neue Feature-Class kopieren. Verwenden Sie dann die neue Feature-Class als Eingabe für andere Geoverarbeitungswerkzeuge.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Layer oder -Tabellensicht

Der Layer oder die Tabellensicht mit der Verbindung zur Join-Tabelle, die überprüft wird.

Mosaic Layer; Raster Layer; Table View
Eingabe-Join-Feld

Das Feld im Eingabe-Layer oder der Tabellensicht, auf dem die Verbindung basiert.

Field
Join-Tabelle

Die Tabelle oder Tabellensicht mit der Verbindung zur Eingabe-Layer- oder -Tabellensicht, die überprüft wird.

Mosaic Layer; Raster Layer; Table View
Join-Tabellen-Feld

Das Feld in der Join-Tabelle, das die Werte enthält, auf denen die Verbindung basiert.

Field
Ausgabetabelle
(optional)

Die Ausgabetabelle mit den Meldungen zur Überprüfung in Tabellenform.

Table

Abgeleitete Ausgabe

BeschriftungErläuterungDatentyp
Anzahl an Übereinstimmungen

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
Anzahl an Zeilen

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

arcpy.management.ValidateJoin(in_layer_or_view, in_field, join_table, join_field, {output_msg})
NameErläuterungDatentyp
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

NameErläuterungDatentyp
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

ValidateJoin: Beispiel 1 (Python-Fenster)

Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion ValidateJoin im unmittelbaren Modus verwendet wird.

import arcpy
arcpy.management.ValidateJoin("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
arcpy.management.AddJoin("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
ValidateJoin: Beispiel 2 (eigenständiges Skript)

Dieses eigenständige Skript zeigt die Funktion ValidateJoin als Teil eines Workflow, 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.management.ValidateJoin(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.management.AddJoin(inFeatures, joinField, joinTable, joinField)

    # Copy the joined layer to a new permanent feature class
    arcpy.management.CopyFeatures(joined, outFeatures)

print(f"Output Features: {outFeatures} had matches {matched} and created {row_count} records")

Verwandte Themen