Validar unión (Administración de datos)

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, si la unión 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, analiza una unión potencial. La unión que se valida con esta herramienta se puede crear con la herramienta 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 claveDescripción

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

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

  • Cuando la unión produce una unión de uno a muchos, el resultado de la unión se puede ver en la tabla de atributos, donde un mensaje de advertencia indicará si la tabla tiene Id. de objetos duplicados. Debido a que muchas herramientas de geoprocesamiento no admiten datos con Id. de objetos duplicados y el procesamiento de dichos datos puede generar resultados inesperados, se recomienda que primero copie la capa unida a una nueva clase de entidad mediante la herramienta Exportar entidades. A continuación, use la nueva clase de entidad como entrada para otras herramientas de geoprocesamiento.

Parámetros

EtiquetaExplicaciónTipo de datos
Capa de entrada o vista de tabla

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
Campo de unión de entrada

Campo en la capa o vista de tabla de entrada sobre el que se basará la unión.

Field
Tabla de unión

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
Campo Tabla a unir

El campo en la tabla de unión que contiene los valores sobre los cuales se basará la unión.

Field
Tabla de Salida
(Opcional)

La tabla de salida que contiene los mensajes de validación de forma tabulada.

Table

Salida derivada

EtiquetaExplicaciónTipo de datos
Recuento de coincidencias

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.

Long
Recuento de filas

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.

Long

arcpy.management.ValidateJoin(in_layer_or_view, in_field, join_table, join_field, {output_msg})
NombreExplicaciónTipo 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

NombreExplicaciónTipo 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.

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

Long

Muestra de código

Ejemplo 1 de ValidateJoin (ventana de Python)

El siguiente script de la ventana de Python demuestra cómo utilizar la función ValidateJoin de modo inmediato.

import arcpy
arcpy.management.ValidateJoin_management("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
arcpy.AddJoin_management("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
Ejemplo 2 de ValidateJoin (script independiente)

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")