Resumen
Valida una unión entre dos capas o tablas para determinar si las capas o tablas tienen nombres de campo y campos ObjectID válidos, si la unión produce registros coincidentes, es una unión de uno a uno o de uno a muchos y otras propiedades de la unión.
Esta herramienta no produce una unión, sino que solo analiza una unión potencial. La unión que se valida con esta herramienta se puede crear con las herramientas Agregar unión o Campo de unión. Esta herramienta informa de los resultados de la validación de la unión en forma de mensajes y opcionalmente como una tabla de salida.
Uso
Esta herramienta crea mensajes para indicar las características de la unión validada, incluido lo siguiente:
- El recuento de filas y el recuento de coincidencias de la unión especificada entre la capa de entrada o la vista de la tabla y la tabla de unión. Si la unión no produce ninguna coincidencia, se incluirá un mensaje de advertencia. El recuento de filas y el recuento de coincidencias también se devuelven como salidas derivadas de la herramienta.
- Si las tablas de unión no tienen ObjectID, se incluirá un mensaje de advertencia.
- La cardinalidad de la unión (si produce resultados de uno a uno o de uno a muchos).
- Si los campos de unión tienen caracteres de inicio no válidos o problemáticos en cualquier parte de su nombre, se incluirá un mensaje de advertencia.
- Si los campos de unión usan palabras clave reservadas de SQL, se incluirá un mensaje de advertencia.
- Los campos de unión se indexan o no tienen ningún índice de atributos. Los índices de campo proporcionan un rendimiento óptimo con algunos formatos de datos.
- Las tablas de unión corresponden al mismo espacio de trabajo. Si la capa de entrada o la vista de tabla y la tabla de unión se almacenan en el mismo espacio de trabajo o base de datos, el rendimiento de la unión será considerablemente superior. Aunque es posible realizar uniones entre tablas de bases de datos diferentes, el rendimiento es menor, dado que no es posible utilizar la base de datos para realizar la unión.
Esta herramienta puede producir una tabla de salida opcional que enumera los problemas encontrados en la unión validada. La tabla de salida contendrá los siguientes campos:
- TYPE: una palabra clave utilizada para indicar una característica o cuestión específica que se detecta en la unión validada. Sus valores son los siguientes:
Palabra clave Description GPM_INVALID_CHARACTER_IN_NAME
El nombre del campo contiene un carácter no válido.
GPM_INVALID_FIRST_CHARACTERS_MSG
El campo comienza por un carácter no válido.
GPM_RESERVED_SQL_KEYWORD
El nombre del campo contiene palabras clave reservadas de SQL.
GPM_NO_MATCH_JOIN
La unión no produce ninguna coincidencia.
GPM_NO_OBJECTID_JOIN
La capa o vista de tabla no tiene ningún campo ObjectID.
GPM_NOT_INDEX_FIELD
El campo no está indexado.
DIFFERENT_WORKSPACE
Las tablas están almacenadas en espacios de trabajo o bases de datos diferentes.
- TABLE_NAME: el nombre de la tabla que produjo los mensajes de validación o advertencia de unión.
- FIELD_NAME: el nombre del campo de la capa de entrada o la vista de tabla o la tabla de unión que produjo el mensaje o la advertencia de validación de unión.
- DESC: una descripción más detallada del mensaje o advertencia de validación, con información sobre cómo resolver un problema.
- TYPE: una palabra clave utilizada para indicar una característica o cuestión específica que se detecta en la unión validada. Sus valores son los siguientes:
Esta herramienta valida la cardinalidad de la unión (ya sea de uno a uno o de uno a muchos). Los registros de la tabla de unión pueden coincidir con más de un registro en la capa o vista de tabla de entrada. De modo parecido, varios registros de la tabla de unión pueden coincidir con un registro en la capa o vista de tabla de entrada, lo que genera una unión de uno a muchos.
Sintaxis
ValidateJoin(in_layer_or_view, in_field, join_table, join_field, {output_msg})
Parámetro | Explicación | Tipo de datos |
in_layer_or_view | La capa o vista de tabla con la unión a la tabla de unión que se validará. | Mosaic Layer; Raster Layer; Table View |
in_field | Campo en la capa o vista de tabla de entrada sobre el que se basará la unión. | Field |
join_table | La tabla o vista de tabla con la unión a la capa de entrada o vista de tabla que se validará. | Mosaic Layer; Raster Layer; Table View |
join_field | El campo en la tabla de unión que contiene los valores sobre los cuales se basará la unión. | Field |
output_msg (Opcional) | La tabla de salida que contiene los mensajes de validación de forma tabulada. | Table |
Salida derivada
Nombre | Explicación | Tipo de datos |
match_count | El número de registros únicos de la capa o tabla de entrada que coinciden con un registro de la capa o tabla de unión. | Largo |
row_count | El número de registros producidos por la unión entre la entrada y las capas o tablas de unión. Las uniones de uno a varios contarán cada par de registros coincidentes. Debido a las uniones de uno a muchos, el recuento de filas de salida puede ser mayor que el número de coincidencias. | Largo |
Muestra de código
El siguiente script de la ventana de Python demuestra cómo utilizar la función ValidateJoin en modo inmediato.
import arcpy
arcpy.ValidateJoin_management("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
arcpy.AddJoin_management("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
Este script independiente muestra la función ValidateJoin como parte de un flujo de trabajo para unir una tabla a una clase de entidad.
# 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")
Entornos
Información de licenciamiento
- Basic: Sí
- Standard: Sí
- Advanced: Sí