Ejecuta trabajos de consulta interactivos y por lotes
En este documento, se describe cómo ejecutar trabajos de consulta interactivos (a pedido) y por lotes.
Los resultados de las consultas se almacenan en una tabla temporal o permanente. Puedes elegir si deseas adjuntar o sobrescribir datos en una tabla existente o si deseas crear una tabla nueva si no existe ninguna con el mismo nombre.
Permisos necesarios
Para ejecutar un trabajo de consulta, necesitas el permiso bigquery.jobs.create
de Identity and Access Management (IAM) en el proyecto que ejecuta el trabajo de consulta.
Cada una de las siguientes funciones predefinidas de IAM incluye los permisos que necesitas para ejecutar un trabajo de consulta:
roles/bigquery.admin
roles/bigquery.jobUser
roles/bigquery.user
También necesitas el permiso bigquery.tables.getData
en todas las tablas y vistas a las que hace referencia la consulta. Además, cuando consultas una vista, necesitas este permiso en todas las tablas y vistas subyacentes.
Sin embargo, si usas vistas autorizadas o conjuntos de datos autorizados, no necesitas acceso a los datos de origen subyacentes.
Cada uno de los siguientes roles predefinidos de IAM incluye el permiso que necesitas en todas las tablas y vistas a las que hace referencia la consulta:
roles/bigquery.admin
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.dataViewer
Para obtener más información sobre las funciones de IAM en BigQuery, consulta Funciones y permisos predefinidos.
Ejecuta consultas interactivas
De forma predeterminada, BigQuery ejecuta trabajos de consulta interactivos, lo que significa que la consulta se ejecuta en cuanto sea posible. Las consultas interactivas se toman en cuenta para tu límite de frecuencia simultánea y límite diario.
Para ejecutar una consulta interactiva que escribe en una tabla temporal, sigue estos pasos:
Console
En la consola, abre la página de BigQuery.
Haz clic en Redactar consulta nueva.
Ingresa una consulta válida de SQL en BigQuery en el área de texto Editor de consulta.
Para cambiar la ubicación de procesamiento de datos (opcional), haz clic en Más y, luego, en Configuración de consulta. Debajo de Ubicación de procesamiento, haz clic en Selección automática y elige la ubicación de tus datos. Por último, haz clic en Guardar para actualizar la configuración de la consulta.
Haz clic en Ejecutar.
Esto crea un trabajo de consulta que escribe el resultado en una tabla temporal.
bq
Ingresa el comando bq query
y agrega el texto de tu consulta.
Opcional: Proporciona la marca --location
y configura el valor en tu ubicación.
Puedes especificar las siguientes marcas opcionales. Esta lista incluye algunas de las marcas más comunes. Para obtener una lista completa de las marcas del comando query
, consulta bq query
en la referencia de la herramienta de línea de comandos de bq
.
Especifica la:
- La marca
--destination_table
, para crear una tabla permanente basada en los resultados de la consulta. Si deseas escribir los resultados de la consulta en una tabla que no se encuentra en tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos con el siguiente formato: project_id:dataset. Si no se especifica--destination_table
, se genera un trabajo de consulta que escribe el resultado en una tabla temporal (en caché). - La marca
--append_table
para agregar los resultados de la consulta a una tabla de destino. - La marca
--destination_kms_key
para usar una clave de Cloud Key Management Service a fin de encriptar los datos de la tabla de destino. - La marca
--use_legacy_sql=false
para usar la sintaxis de SQL estándar. Puedes establecer una sintaxis predeterminada para la herramienta de línea de comandos debq
mediante el archivo.bigqueryrc
. - La marca
--label
, para aplicar una etiqueta al trabajo de consulta en el formato key:value. Repite esta marca para especificar varios archivos. - La marca
--max_rows
o-n
para especificar la cantidad de filas que se mostrarán en los resultados de la consulta. - La marca
--maximum_bytes_billed
para limitar los bytes facturados por la consulta. Si la consulta supera el límite, falla (sin incurrir en cargos). Si no se especifica, los bytes facturados se configuran en el valor predeterminado del proyecto. - La marca
--udf_resource
para cargar y evaluar un archivo de código que se usará como recurso de función definido por el usuario. Puedes especificar un URI de Cloud Storage o la ruta de acceso a un archivo de código local. Repite esta marca para especificar varios archivos.
Ingresa el siguiente comando para ejecutar una consulta interactiva mediante la sintaxis de SQL estándar:
bq --location=location query \ --use_legacy_sql=false \ 'query'
Aquí:
- location es el nombre de la ubicación en la que se procesa la consulta. La marca
--location
es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes establecer el valor de la marca comoasia-northeast1
. Puedes configurar un valor predeterminado para la ubicación mediante el archivo .bigqueryrc. - query es una consulta en la sintaxis de SQL estándar.
Ejemplos:
Ingresa el siguiente comando para escribir los resultados de consultas interactivas en una tabla de destino llamada mytable
en mydataset
. El conjunto de datos se encuentra en tu proyecto predeterminado. La consulta recupera datos desde el conjunto de datos públicos Datos de nombres de EE.UU..
bq query \
--destination_table mydataset.mytable \
--use_legacy_sql=false \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number DESC'
Ingresa el siguiente comando para escribir los resultados de consultas interactivas en una tabla de destino llamada mytable
en mydataset
. El conjunto de datos está en myotherproject
, no en tu proyecto predeterminado. La consulta obtiene datos de una tabla no particionada: el conjunto de datos públicos Datos de nombres de EE.UU..
bq query \
--destination_table myotherproject:mydataset.mytable \
--use_legacy_sql=false \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number DESC'
API
Para ejecutar una consulta con la API, inserta un trabajo nuevo y propaga la propiedad jobs#configuration.query. Especifica tu ubicación en la propiedad location
de la sección jobReference
del recurso de trabajo.
Busca resultado mediante una llamada a getQueryResults
.
Busca hasta que jobComplete
sea igual a true
. Verifica si hay errores y advertencias en la lista errors
.
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración para C# incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de C# de BigQuery.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Go de BigQuery.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la Documentación de referencia de la API de Node.js de BigQuery.
PHP
Antes de probar este ejemplo, sigue las instrucciones de configuración para PHP que se encuentran en la Guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de PHP de BigQuery.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de BigQuery.
Ruby
Antes de probar este ejemplo, sigue las instrucciones de configuración para Ruby incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Ruby.
Ejecuta consultas por lotes
BigQuery también ofrece consultas por lotes. BigQuery pone en cola cada consulta por lotes en tu nombre y comienza la consulta en cuanto los recursos inactivos estén disponibles en el grupo de recursos compartidos de BigQuery. Esto suele ocurrir en unos minutos. Si BigQuery no inicia la consulta en 24 horas, BigQuery cambia la prioridad del trabajo a interactivo.
Las consultas por lotes no cuentan para tu límite de frecuencia simultánea, lo que puede facilitar el inicio de muchas consultas a la vez. Las consultas por lotes utilizan los mismos recursos que las consultas interactivas (bajo demanda). Si usas consultas por lotes y consultas interactivas con tarifa plana, comparte tus espacios asignados.
Para ejecutar una consulta por lotes, sigue estos pasos:
Console
En la consola, abre la página de BigQuery.
Haz clic en el botón Redactar nueva consulta.
Ingresa una consulta de SQL válida en el área de texto del Editor de consultas.
Haz clic en el botón Más y, luego, en Configuración de consulta.
Selecciona la opción Por lotes en la sección Prioridad del trabajo.
En Ubicación de procesamiento, haz clic en Sin especificar y elige la ubicación de tus datos (opcional).
Haz clic en Guardar para actualizar la configuración de la consulta.
Haz clic en Ejecutar.
bq
Ingresa el comando bq query
y agrega el texto de tu consulta. Especifica la marca --batch
para ejecutar una consulta por lotes.
Proporciona la marca --location
y configura el valor como tu ubicación (opcional).
Puedes especificar las siguientes marcas opcionales. Esta lista incluye algunas de las marcas más comunes. Para obtener una lista completa de las marcas del comando query
, consulta bq query
en la referencia de la herramienta de línea de comandos de bq
.
Especifica la:
- La marca
--destination_table
, para crear una tabla permanente basada en los resultados de la consulta. Si deseas escribir los resultados de la consulta en una tabla que no se encuentra en tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos con el siguiente formato: project_id:dataset. Si no se especifica--destination_table
, se genera un trabajo de consulta que escribe el resultado en una tabla temporal (en caché). - La marca
--append_table
para agregar los resultados de la consulta a una tabla de destino. - La marca
--destination_kms_key
para usar una clave de Cloud Key Management Service a fin de encriptar los datos de la tabla de destino. - La marca
--use_legacy_sql=false
para usar la sintaxis de SQL estándar. Puedes establecer una sintaxis predeterminada para la herramienta de línea de comandos debq
mediante el archivo.bigqueryrc
. - La marca
--label
, para aplicar una etiqueta al trabajo de consulta en el formato key:value. Repite esta marca para especificar varios archivos. - La marca
--max_rows
o-n
para especificar la cantidad de filas que se mostrarán en los resultados de la consulta. - La marca
--maximum_bytes_billed
para limitar los bytes facturados por la consulta. Si la consulta supera el límite, falla (sin incurrir en cargos). Si no se especifica, los bytes facturados se configuran en el valor predeterminado del proyecto. - La marca
--udf_resource
para cargar y evaluar un archivo de código que se usará como recurso de función definido por el usuario. Puedes especificar un URI de Cloud Storage o la ruta de acceso a un archivo de código local. Repite esta marca para especificar varios archivos.
Ingresa el siguiente comando para ejecutar una consulta por lotes con la sintaxis de SQL estándar:
bq --location=location query \ --batch \ --use_legacy_sql=false \ 'query'
Aquí:
- location es el nombre de la ubicación en la que se procesa la consulta. La marca
--location
es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes establecer el valor de la marca comoasia-northeast1
. Puedes configurar un valor predeterminado para la ubicación mediante el archivo .bigqueryrc. - query es una consulta en la sintaxis de SQL estándar.
Ejemplos:
Ingresa el siguiente comando para escribir los resultados de consultas por lotes en una tabla de destino llamada mytable
en mydataset
. El conjunto de datos se encuentra en tu proyecto predeterminado. La consulta recupera datos desde el conjunto de datos públicos Datos de nombres de EE.UU..
bq query \
--batch \
--destination_table mydataset.mytable \
--use_legacy_sql=false \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number DESC'
Ingresa el siguiente comando para escribir los resultados de consultas por lotes en una tabla de destino llamada mytable
en mydataset
. El conjunto de datos está en myotherproject
, no en tu proyecto predeterminado. La consulta obtiene datos de una tabla no particionada: el conjunto de datos públicos Datos de nombres de EE.UU..
bq query \
--batch \
--destination_table myotherproject:mydataset.mytable \
--use_legacy_sql=false \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number DESC'
API
Para ejecutar una consulta con la API, inserta un nuevo trabajo y propaga la propiedad de configuración del trabajo query
. Especifica tu ubicación en la propiedad location
de la sección jobReference
del recurso de trabajo (opcional).
Cuando propagues las propiedades del trabajo de consulta, incluye la propiedad configuration.query.priority
con el valor establecido en BATCH
.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Go de BigQuery.
Java
Para ejecutar una consulta por lotes, establece la prioridad de consulta en QueryJobConfiguration.Priority.BATCH cuando crees una QueryJobConfiguration.
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la Documentación de referencia de la API de Node.js de BigQuery.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de BigQuery.
¿Qué sigue?
- Si deseas obtener información sobre cómo administrar los trabajos de consulta, visita Administra trabajos.
- Si deseas obtener información sobre cómo ver el historial de consultas, visita Visualiza los detalles del trabajo.
- Si deseas obtener información sobre cómo guardar y compartir consultas, visita Guarda y comparte consultas.