Resumen
Esta herramienta 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 base de datos o a 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 Forma 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 indica el orden en que aparecerán los campos en la capa o vista de tabla de salida.
La herramienta le permite brindar 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 de ObjectID generado dinámicamente. Sin un campo de ObjectID, no se admitirán selecciones.
La lista de campos clave le permite elegir varios campos si se necesita la combinación de estos 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 Generar una expresión de consulta o Referencia de SQL para expresiones de consulta utilizadas en ArcGIS.
El botón Agregar campo en los parámetros Campos y Campos clave solo se utiliza en ModelBuilder. En ModelBuilder, donde no se ejecutó la herramienta anterior, o sus datos derivados no existen, es probable que los parámetros Campos y Campos clave no se completen con nombres de campo. El botón Agregar campo le permite agregar campos esperados para que pueda completar el cuadro de diálogo Crear tabla de consulta y continuar creando el modelo.
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 sobre un campo no indexado de la Tabla 2 e invertir el orden resultara en la consulta sobre 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 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 y de uno a uno.
Sintaxis
MakeQueryTable_management (in_table, out_table, in_key_field_option, {in_key_field}, {in_field}, {where_clause})
Parámetro | Explicación | Tipo 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 será creado por la herramienta. | Table View; Raster Layer |
in_key_field_option | Las capas y vistas de tabla de ArcGIS requieren un campo de ObjectID. Un campo de ObjectID es un campo de enteros que se utiliza para identificar de forma única las filas de los datos que se están utilizando. En esta herramienta, este parámetro se utiliza para indicar cómo se generará un campo ObjectID (de hacerlo) para la consulta. El valor predeterminado es Usar campos clave (USE_KEY_FIELDS en Python).
| String |
in_key_field [in_key_field,...] (Opcional) | Especifica un campo o una combinación de campos que se pueden utilizar para identificar una fila de la consulta como única. Este parámetro se utiliza solo cuando se encuentra establecida la opción 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 Forma 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)
La siguiente secuencia de comandos de la ventana de Python demuestra cómo utilizar la función MakeQueryTable en el modo inmediato.
import arcpy
arcpy.env.workspace = "C:/data/data.gdb"
arcpy.MakeQueryTable_management(["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 (secuencia de comandos independiente)
La siguiente secuencia de comandos es un ejemplo de cómo se utiliza la herramienta MakeQueryTable en el entorno de secuencias de comandos 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.MakeQueryTable_management(tableList, lyrName,"USE_KEY_FIELDS", keyField, fieldList, whereClause)
# Print the total rows
print(arcpy.GetCount_management(lyrName))
# Print the fields
fields = arcpy.ListFields(lyrName)
for field in fields:
print(field.name)
# Save as a dBASE file
arcpy.CopyRows_management(lyrName, "C:/temp/calinfo.dbf")
Entornos
Información sobre licencias
- ArcGIS Desktop Basic: Sí
- ArcGIS Desktop Standard: Sí
- ArcGIS Desktop Advanced: Sí