Agregar unión (Administración de datos)

Resumen

Une una capa a otra capa o tabla basándose en un campo común. Se admiten capas de entidades, vistas de tabla y capas ráster con una tabla de atributos ráster.

Los registros del valor del parámetro Tabla de unión coincidirán con los registros del valor del parámetro Tabla de entrada. Cuando los valores del campo de entrada y del campo de unión son iguales se produce una coincidencia. Esta unión es temporal.

Ilustración

Ilustración de la herramienta Agregar unión

Uso

  • El valor del parámetro Tabla de entrada puede ser una capa de entidades, una vista de tabla o una capa ráster con una tabla de atributos. Si se utiliza una ruta de datos, la capa se creará con la unión. La unión siempre residirá en la capa, no con los datos.

  • Para hacer una unión permanente, utilice la herramienta Unir campo o use la capa unida como entrada para una de las siguientes herramientas: Copiar entidades, Copiar filas, Exportar entidades o Exportar tabla. Al guardar los resultados en una nueva clase de entidad o tabla, se puede utilizar el entorno Mantener nombres de campos plenamente calificados para controlar si los nombres de campos de salida unidos están calificados con el nombre de la tabla de la que procede el campo. Los alias de campo se conservan desde la capa hasta la salida, excepto cuando la salida es un shapefile.

  • Utilice las herramientas Crear capa de consulta, Crear vista de base de datos o Crear capa de consulta de agregación para optimizar el rendimiento de la unión y para obtener más funciones cuando desee unir geodatabases empresariales o datos de una base de datos SQLite.

  • Si la entrada es una clase de entidad o una ruta de dataset, esta herramienta creará y devolverá una nueva capa con el resultado de la herramienta aplicada.

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

    Si lo desea, establezca el parámetro Operación de unión en Unir uno al primero para evitar Id. de objetos duplicados.

  • El parámetro Operación de unión tiene tres estados para ajustar la cardinalidad. El valor predeterminado está en blanco y permitirá que la fuente de datos intente una unión de uno a muchos. La opción Unir uno a muchos funcionará solo en fuentes de datos específicas que tengan un campo de Id. de objeto. La opción Unir uno al primero utilizará la primera coincidencia de la tabla, lo que puede generar resultados diferentes si se cambia el campo de Id. de objeto o si cambia el espacio de trabajo en el que se copia la tabla. Las uniones de uno a primero no distinguen entre mayúsculas y minúsculas; las uniones de uno a muchos distinguen entre mayúsculas y minúsculas.

  • Las siguientes tablas incluyen resultados posibles de realizar una unión con varias entradas.

    La primera tabla muestra una unión de uno a muchos. Mantener solo los registros coincidentes no tendrá efecto, ya que todos los registros tienen coincidencias.

    Tabla de entradaTabla de uniónResultado

    Campo de entrada

    Tipo

    Campo de unión

    Valor

    Campo de entrada

    Tipo

    Campo de unión

    Valor

    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

    Ejemplo de Agregar unión: unión de uno a muchos cuando cada tabla tiene un campo de Id. de objeto

    La segunda tabla utiliza una tabla de unión sin ningún campo Id. de objeto; solo es posible una unión de uno a uno. Una unión de uno a uno también es posible solo si cada tabla procede de un espacio de trabajo diferente. Las uniones de uno a uno no son una coincidencia que distingue mayúsculas de minúsculas.

    Tabla de entradaTabla de uniónResultado

    Campo de entrada

    Tipo

    Campo de unión

    Valor

    Campo de entrada

    Tipo

    Campo de unión

    Valor

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    3

    300

    4

    400

    Ejemplo de Agregar unión: unión de uno a uno cuando ninguna de las tablas tiene un campo de Id. de objeto

    En la última tabla, la tabla de entrada tiene más registros que la tabla de unión. Conservar todos los registros mantendrá todos los registros coincidentes más los registros de la tabla de entrada que no coinciden.

    Tabla de entradaTabla de uniónResultado

    Campo de entrada

    Tipo

    Campo de unión

    Valor

    Campo de entrada

    Tipo

    Campo de unión

    Valor

    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

    <Nulo>

    <Nulo>

    4

    D

    <Nulo>

    <Nulo>

    Ejemplo de Agregar unión: unión de uno a muchos cuando cada tabla tiene un campo de Id. de objeto y el parámetro Mantener todos los registros de entrada está activado

    La tabla de entrada debe tener un campo de Id. de objeto para realizar una unión de uno a muchos y estar en el mismo espacio de trabajo.

  • Los registros de la tabla de unión se pueden hacer coincidir con más de un registro si la tabla de unión tiene un campo de Id. de objeto; de lo contrario, se realizará una unión de uno a uno.

  • Cuando une tablas, la opción predeterminada es mantener todos los registros. Si un registro de la tabla de entrada no coincide con otro en la tabla de unión, se establecen valores nulos determinados en ese registro para todos los campos que se anexan a la tabla de entrada desde la tabla de unión.

    Tabla de entradaTabla de uniónResultado

    Campo de entrada

    Tipo

    Campo de unión

    Valor

    Campo de entrada

    Tipo

    Campo de unión

    Valor

    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

    <Nulo>

    <Nulo>

    4

    D

    <Nulo>

    <Nulo>

    Cuando se desactiva el parámetro Conservar todos los registros de entrada, si un registro de la tabla de entrada no tiene una coincidencia en la tabla de unión, ese registro se elimina de la salida resultante. Si la tabla de entrada es la tabla de atributos de una capa, las entidades que no tienen datos unidos no se muestran en el mapa.

    Tabla de entradaTabla de uniónResultado

    Campo de entrada

    Tipo

    Campo de unión

    Valor

    Campo de entrada

    Tipo

    Campo de unión

    Valor

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    3

    300

    4

    400

  • La herramienta Calcular campo actualizará el primer registro encontrado cuando se utilice una capa de uno a muchos y omitirá el resto de registros duplicados. Al editar manualmente los valores de campo de la capa unida en la vista de tabla, se mantiene la última edición realizada.

  • Las propiedades de campos, tales como los alias, la visibilidad y el formato de número se mantienen cuando se agrega o se quita una unión.

  • La unión persiste solo lo que dure la capa. Una capa se puede retener guardando la sesión de ArcGIS AllSource o guardándola en un archivo de capa con la herramienta Guardar capa en archivo.

    Para ver los resultados de una unión creada en una herramienta de script, la herramienta debe incluir la capa como un parámetro de salida derivado. Del mismo modo, el parámetro Capa de entrada o vista de tabla actualizadas se debe establecer como un parámetro de salida derivado en una herramienta de modelo para ver los resultados unidos.

  • En la tabla resultante, los campos recibirán de prefijo el nombre de la entrada y un punto (.) y, de forma predeterminada, todos los campos de la tabla de unión recibirán de prefijo el nombre de la tabla de unión y un punto.

    Por ejemplo, al unir landuse, que tiene los campos A y B, a lookup_tab, que tiene los campos C y D, se generará una capa o una vista de tabla con los campos landuse.A, landuse.B, lookup_tab.C y lookup_tab.D.

  • Una capa debe tener nombres de campo únicos. Si tanto la tabla de entrada como la tabla de unión tienen el mismo nombre y están en espacios de trabajo diferentes, no se puede preformar una unión sin crear una capa mal definida.

  • Indexar el campo de entrada y el campo de unión puede mejorar el rendimiento. Si el parámetro Indexar campos de unión está activado, se agrega un índice de atributos a ambos campos. Como alternativa, es posible indexar cada campo de unión con la herramienta Agregar índice de atributos.

  • Si los resultados de la unión son inesperados o incompletos, revise si el campo de entrada y el campo de unión están indexados. Si los campos no están indexados, intente agregar un índice. Si los campos están indexados, intente borrar y volver a agregar el índice para corregir cualquier problema con el índice. Como alternativa, active el parámetro Reconstruir índices de campos de unión para eliminar los índices existentes y reconstruirlos.

  • Si los campos de la capa o vista de tabla de entrada se modificaron (se les cambió el nombre o se ocultaron) con el parámetro Información del campo de la herramienta Crear capa de entidades o Crear vista de tabla, las modificaciones del campo no se incluirán en la capa unida de salida o en la vista de tabla.

  • La consulta de definición de la tabla de unión se aplicará a la capa o vista de tabla de entrada agregando una consulta activa nueva. La consulta anterior se mantiene y se configura como inactiva para que resulte posible deshabilitar la consulta desde la tabla unida si es necesario. La consulta de definición se puede eliminar con la herramienta Quitar unión.

  • Si la tabla de unión tiene una consulta de definición, el parámetro Mantener todos los registros de entrada no tendrá ningún efecto. La actualización manual de la consulta de definición mediante la adición de or OBJECTID is null puede solucionar este problema, si procede.

  • La herramienta Validar unión se puede utilizar para validar una unión entre dos capas o tablas con el fin de 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.

    El cuadro de diálogo de la herramienta contiene un botón para validar la unión que facilita esta operación.

  • Las selecciones en las tablas de entrada o de unión se ignoran en la herramienta Agregar unión. La herramienta Unir campo admite selecciones. Para que solo se haga la unión con un subconjunto seleccionado, cree la capa de selección y úsela como entrada de la herramienta Agregar unión. Las propiedades de la capa de unión se copian cuando crea una capa de selección.

Parámetros

EtiquetaExplicaciónTipo de datos
Tabla de entrada

Capa o vista de tabla a la que se unirá la tabla a unir.

Mosaic Layer; Raster Layer; Table View
Campo 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

Tabla o vista de tabla que se unirá a la capa o vista de tabla de entrada.

Mosaic Layer; Raster Layer; Table View
Campo de unión

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

Field
Conservar todos los registros de entrada
(Opcional)

Especifica si la salida solo incluirá los registros de la entrada que coinciden con un registro de la tabla a unir.

  • Activado: todos los registros de la capa o vista de tabla de entrada se incluirán en la salida. También se conoce como unión externa. Esta es la opción predeterminada.
  • Desactivado: la salida solo incluirá los registros de la entrada que coinciden con un fila de la tabla de unión. También se conoce como unión interna.
Boolean
Campos de unión de índice
(Opcional)

Especifica si se agregarán índices de atributo de tabla al campo de entrada y al campo de unión.

  • Activado: se indexarán ambos campos. Si la tabla tiene un índice existente, no se agregará un índice nuevo.
  • Desactivado: no se agregarán índices. Esta es la opción predeterminada.
Boolean
Reconstruir índices de campos unidos
(Opcional)

Especifica si los índices del campo de entrada y del campo de unión se eliminarán y reconstruirán.

  • Activado: se eliminarán los índices existentes y se agregará uno nuevo.
  • Desactivado: los índices existentes no se eliminarán ni se reconstruirán. Esta es la opción predeterminada.
Boolean
Operación Unión
(Opcional)

Especifica si la unión será de uno a muchos o de uno a primero cuando los datos tengan una cardinalidad de uno a muchos.

Si no se especifica ningún valor de parámetro, la operación de unión se basará en la fuente de datos.

  • Unir uno a primeroLa operación de unión utilizará la primera coincidencia.
  • Unir uno a muchosLa operación de unión realizará varias coincidencias que distingan entre mayúsculas y minúsculas.
String

Salida derivada

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

El dataset de entrada actualizado.

Table View; Raster Layer; Mosaic Layer

arcpy.management.AddJoin(in_layer_or_view, in_field, join_table, join_field, {join_type}, {index_join_fields}, {rebuild_index}, {join_operation})
NombreExplicaciónTipo de datos
in_layer_or_view

Capa o vista de tabla a la que se unirá la tabla a unir.

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

Tabla o vista de tabla que se unirá a la capa o vista de tabla de entrada.

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
join_type
(Opcional)

Especifica si la salida solo incluirá los registros de la entrada que coinciden con un registro de la tabla a unir.

  • KEEP_ALLTodos los registros de la capa o vista de tabla de entrada se incluirán en la salida. También se conoce como unión externa. Esta es la opción predeterminada.
  • KEEP_COMMONLa salida solo incluirá los registros de la entrada que coinciden con un fila de la tabla de unión. También se conoce como unión interna.
Boolean
index_join_fields
(Opcional)

Especifica si se agregarán índices de atributo de tabla al campo de entrada y al campo de unión.

  • INDEX_JOIN_FIELDSSe indexarán ambos campos. Si la tabla tiene un índice existente, no se agregará un índice nuevo.
  • NO_INDEX_JOIN_FIELDSNo se agregarán índices. Esta es la opción predeterminada.
Boolean
rebuild_index
(Opcional)

Especifica si los índices del campo de entrada y del campo de unión se eliminarán y reconstruirán.

  • REBUILD_INDEXSe eliminarán los índices existentes y se agregará uno nuevo.
  • NO_REBUILD_INDEXLos índices existentes no se eliminarán ni se reconstruirán. Esta es la opción predeterminada.
Boolean
join_operation
(Opcional)

Especifica si la unión será de uno a muchos o de uno a primero cuando los datos tengan una cardinalidad de uno a muchos.

Si no se especifica ningún valor de parámetro, la operación de unión se basará en la fuente de datos.

  • JOIN_ONE_TO_FIRSTLa operación de unión utilizará la primera coincidencia.
  • JOIN_ONE_TO_MANYLa operación de unión realizará varias coincidencias que distingan entre mayúsculas y minúsculas.
String

Salida derivada

NombreExplicaciónTipo de datos
out_layer_or_view

El dataset de entrada actualizado.

Table View; Raster Layer; Mosaic Layer

Muestra de código

Ejemplo 1 de AddJoin (ventana de Python)

La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la función AddJoin de modo inmediato.

import arcpy
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
veg_joined_table = arcpy.management.AddJoin("vegetation", "HOLLAND95", 
                                            "vegtable", "HOLLAND95")
arcpy.management.CopyFeatures(veg_joined_table, "vegjoin")
Ejemplo 2 de AddJoin (script independiente)

Este script independiente muestra la función AddJoin como parte de un flujo de trabajo para unir una tabla a una clase de entidad y extraer las entidades especificadas.

# Name: AttributeSelection.py
# Purpose: Join a table to a feature class and select the desired attributes

# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
# The qualifiedFieldNames environment is used by Copy Features when persisting 
# the join field names.
arcpy.env.qualifiedFieldNames = False

# Set local variables
inFeatures = "vegtype"
joinTable = "vegtable"
joinField = "HOLLAND95"
expression = "vegtable.HABITAT = 1"
outFeature = "vegjoin"

# Join the feature layer to a table
veg_joined_table = arcpy.management.AddJoin(inFeatures, joinField, joinTable, 
                                            joinField)

# Select desired features from veg_layer
arcpy.management.SelectLayerByAttribute(veg_joined_table, "NEW_SELECTION", 
                                        expression)

# Copy the layer to a new permanent feature class
result = arcpy.management.CopyFeatures(veg_joined_table, outFeature)

# See field names and aliases
resultFields = arcpy.ListFields(result)
print([field.name for field in resultFields])
print([field.aliasName for field in resultFields])

Temas relacionados