Crear tabla de consulta (Administración de datos)

Resumen

Aplica una consulta SQL a una base de datos y los resultados se representan en una capa o vista de tabla. La consulta se puede utilizar para unir varias tablas o para devolver un subconjunto de campos o filas desde los datos originales de la base de datos.

Esta herramienta acepta datos de una conexión de una conexión OLE DB o geodatabase.

Uso

  • La capa creada por la herramienta es temporal y, una vez finalizada la sesión, no permanece en el sistema a menos que se guarde el documento.

  • Todas las tablas o clases de entidad de entrada deben ser del mismo espacio de trabajo de entrada.

  • Si un campo Shape se agrega a la lista de campos, el resultado es una capa; de otro modo, es una vista de tabla.

  • Si el resultado de la salida es una capa, puede persistir en un archivo de capa utilizando la herramienta Guardar en archivo de capa o en una clase de entidad utilizando la herramienta Copiar entidades.

  • El orden de los campos en la lista de campos es el orden en que aparecerán los campos en la vista de tabla o capa de salida.

  • Puede ofrecer una opción de campo clave y una lista de campos clave. Esta información define cómo las filas se identifican unívocamente y se utiliza para agregar a los datos un campo Object ID generado dinámicamente. Sin un campo Object ID, no se admitirán selecciones.

  • Puede elegir varios campos de la lista de campos clave si se necesita una combinación de los campos para definir valores únicos.

  • Si se utiliza una expresión SQL pero no devuelve registros que coinciden, la clase de entidad de salida estará vacía.

  • Las clases de entidades se pueden unir, pero la lista de campos debe contener como mucho un campo de geometría de tipo.

  • Para obtener detalles sobre la sintaxis del parámetro Expresión, consulte el modo SQL.

  • Cuando las tablas de entrada pertenecen a una geodatabase de archivos, las tablas generalmente se unen en el orden enumerado en el parámetro Tablas de entrada. Por ejemplo, si la Tabla 1 se encuentra enumerada antes de la Tabla 2, la Tabla 2 se unirá obteniendo una fila de la Tabla 1, luego obteniendo las filas coincidentes de la Tabla 2. Sin embargo, si esto resultara en la consulta en un campo no indexado de la Tabla 2 e invertir el orden resultara en la consulta en un campo indexado de la Tabla 1, el orden se invertiría en un intento por maximizar el rendimiento. Esta es la única lógica de optimización de consulta posible que se usa cuando está utilizando datos de geodatabase de archivos con esta herramienta. En general, las uniones en las geodatabases de archivos funcionan mejor cuando son de uno a muchos o de uno a uno.

Parámetros

EtiquetaExplicaciónTipo de datos
Tablas de entrada

Nombre de la tabla o tablas que se utilizarán en la consulta. Si se enumeran varias tablas, el parámetro Expresión se puede utilizar para definir cómo se deberán unir.

La tabla de entrada puede proceder de una conexión de base de datos o a geodatabase.

Table View; Raster Layer
Nombre de la tabla

Nombre de la vista de tabla o capa que se creará.

Table View; Raster Layer
Opciones del campo clave

Especifica cómo se generará un campo Object ID (si es el caso) para la consulta. Las vistas de tabla y capas de ArcGIS requieren un campo Object ID. Un campo Object ID es un campo de enteros que identifica de forma única las filas de los datos que se están utilizando.

  • Usar campos claveLos campos especificados en el parámetro Campos clave se utilizarán para identificar de forma única una fila en la tabla de salida. Puede tratarse de un único campo o de varios campos que, cuando se combinan, identifican de forma única una fila en la tabla de salida. Si no se especifican campos de la lista de campos clave, se aplica la opción Generar campo clave. Esta es la opción predeterminada.
  • Generar campo claveSi no se ha especificado ningún campo clave, se generará un campo Object ID que identifica de forma única cada fila de la tabla de salida.
  • Sin campo claveNo se generará ningún campo de Object ID. En la vista de tabla no se podrán realizar selecciones.
    Nota:

    Si ya existe un campo Object ID, se utilizará incluso si se elige esta opción.

  • Usar campos claveLos campos especificados en el parámetro in_key_field se utilizarán para identificar de forma única una fila en la tabla de salida. Puede tratarse de un único campo o de varios campos que, cuando se combinan, identifican de forma única una fila en la tabla de salida. Si no se especifican campos de la lista de campos clave, se aplica la opción ADD VIRTUAL_KEY_FIELD.
  • Generar campo claveSi no se ha especificado ningún campo clave, se generará un campo Object ID que identifica de forma única cada fila de la tabla de salida.
  • Sin campo claveNo se generará ningún campo de Object ID. En la vista de tabla no se podrán realizar selecciones.
    Nota:

    Si ya existe un campo Object ID, se utilizará incluso si se elige esta opción.

String
Campos clave
(Opcional)

Campo o combinación de campos que se utilizarán para identificar una fila de la consulta como única. Este parámetro solo se utiliza cuando el parámetro Opciones del campo clave se configura en Usar campos clave.

Field
Campos
(Opcional)

Campos que se incluirán en la vista de tabla o capa. Si se establece un alias para un campo, este es el nombre que aparece. Si no se especifican campos, se incluyen todos los campos de todas las tablas. Si un campo Shape se agrega a la lista de campos, el resultado es una capa; de otro modo, es una vista de tabla.

Value Table
Expresión
(Opcional)

Una expresión SQL utilizada para seleccionar un subconjunto de registros.

SQL Expression

arcpy.management.MakeQueryTable(in_table, out_table, in_key_field_option, {in_key_field}, {in_field}, {where_clause})
NombreExplicaciónTipo de datos
in_table
[in_table,...]

Nombre de la tabla o tablas que se utilizarán en la consulta. Si se enumeran varias tablas, se puede utilizar el parámetro where_clause para definir cómo se deberán unir.

La tabla de entrada puede proceder de una conexión de base de datos o a geodatabase.

Table View; Raster Layer
out_table

Nombre de la vista de tabla o capa que se creará.

Table View; Raster Layer
in_key_field_option

Especifica cómo se generará un campo Object ID (si es el caso) para la consulta. Las vistas de tabla y capas de ArcGIS requieren un campo Object ID. Un campo Object ID es un campo de enteros que identifica de forma única las filas de los datos que se están utilizando.

  • USE_KEY_FIELDSLos campos especificados en el parámetro in_key_field se utilizarán para identificar de forma única una fila en la tabla de salida. Puede tratarse de un único campo o de varios campos que, cuando se combinan, identifican de forma única una fila en la tabla de salida. Si no se especifican campos de la lista de campos clave, se aplica la opción ADD VIRTUAL_KEY_FIELD.
  • ADD_VIRTUAL_KEY_FIELDSi no se ha especificado ningún campo clave, se generará un campo Object ID que identifica de forma única cada fila de la tabla de salida.
  • NO_KEY_FIELDNo se generará ningún campo de Object ID. En la vista de tabla no se podrán realizar selecciones.
    Nota:

    Si ya existe un campo Object ID, se utilizará incluso si se elige esta opción.

String
in_key_field
[in_key_field,...]
(Opcional)

Campo o combinación de campos que se utilizarán para identificar una fila de la consulta como única. Este parámetro solo es necesario si el parámetro in_key_field_option tiene el valor USE_KEY_FIELDS.

Field
in_field
[[field, {alias}],...]
(Opcional)

Campos que se incluirán en la vista de tabla o capa. Si se establece un alias para un campo, este es el nombre que aparece. Si no se especifican campos, se incluyen todos los campos de todas las tablas. Si un campo Shape se agrega a la lista de campos, el resultado es una capa; de otro modo, es una vista de tabla.

Value Table
where_clause
(Opcional)

Una expresión SQL utilizada para seleccionar un subconjunto de registros.

SQL Expression

Muestra de código

Ejemplo 1 de MakeQueryTable (ventana de Python)

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

import arcpy
arcpy.env.workspace = "C:/data/data.gdb"
arcpy.management.MakeQueryTable(["Counties","codemog"], "queryout", "ADD_VIRTUAL_KEY_FIELD", "",
                                [["Counties.OBJECTID", 'ObjectID'], ["Counties.NAME", 'Name'],
                                 ["codemog.Males", 'Males'], ["codemog.Females", 'Females']],
                                "Counties.FIPS = codemog.Fips and Counties.STATE_NAME = 'California'")
Ejemplo 2 de MakeQueryTable (script independiente)

El siguiente script es un ejemplo de cómo se utiliza la función MakeQueryTable en el entorno de scripts de Python.

# MakeQueryTableOLEDB.py
# Description: Create a query table from two OLE DB tables using a limited set of
#               fields and establishing an equal join.
 
# Import system modules
import arcpy
 
# Local variables...
tableList = ["c:/Connections/balrog.odc/vtest.COUNTIES",\
             "c:/Connections/balrog.odc/vtest.CODEMOG"]

fieldList = [["vtest.COUNTIES.OBJECTID", 'ObjectID'], ["vtest.COUNTIES.NAME", 'Name']\
             ["vtest.CODEMOG.Males", 'Males'], ["vtest.CODEMOG.Females", 'Females']]
whereClause = "vtest.COUNTIES.FIPS = vtest.CODEMOG.Fips" +\
              "and vtest.COUNTIES.STATE_NAME = 'California'"
keyField = "vtest.COUNTIES.OBJECTID"
lyrName = "CountyCombined"

# Make Query Table...
arcpy.management.MakeQueryTable(tableList, lyrName,"USE_KEY_FIELDS", keyField, fieldList, whereClause)

# Print the total rows
print(arcpy.management.GetCount(lyrName))
 
# Print the fields
fields = arcpy.ListFields(lyrName)
for field in fields:
    print(field.name)

# Save as a dBASE file
arcpy.management.CopyRows(lyrName, "C:/temp/calinfo.dbf")