Esta página describe cómo programar consultas recurrentes en BigQuery.
Puedes programar consultas para que se ejecuten de forma recurrente. Las consultas programadas deben estar escritas en SQL estándar, que puede incluir declaraciones en lenguaje de definición de datos (DDL) y lenguaje de manipulación de datos (DML). Puedes organizar los resultados de las consultas por fecha y hora mediante la parametrización de la cadena de consulta y la tabla de destino.
Cuando creas o actualizas la programación de una consulta, la hora programada de la consulta se convierte de tu hora local a UTC. UTC no se ve afectado por el horario de verano.
Antes de comenzar
Las consultas programadas usan las características del Servicio de transferencia de datos de BigQuery. Verifica si completaste todas las acciones obligatorias en la página sobre cómo habilitar el Servicio de transferencia de datos de BigQuery.
Permisos necesarios
Antes de programar una consulta:
Asegúrate de que la persona que crea la transferencia tenga los siguientes permisos obligatorios en BigQuery:
- Para crear la transferencia, puedes combinar los permisos
bigquery.jobs.create
ybigquery.transfers.get
o usar el permisobigquery.transfers.update
. - El permiso
bigquery.jobs.create
se usa para ejecutar la consulta programada. - El permiso
bigquery.datasets.update
se usa en el conjunto de datos de destino.
La función de IAM predefinida
bigquery.jobUser
incluye los permisosbigquery.jobs.create
. Para obtener más información sobre las funciones de IAM en BigQuery, consulta Funciones y permisos predefinidos.- Para crear la transferencia, puedes combinar los permisos
Antes de modificar una consulta programada, debes hacer lo siguiente:
- Asegúrate de que la persona que modifica la consulta programada tenga los siguientes permisos obligatorios en BigQuery:
- los permisos
bigquery.jobs.create
y la persona deben ser el creador del programa. - Permisos
bigquery.transfers.update
.
- los permisos
Opciones de configuración
String de consulta
La string de consulta debe ser válida y estar escrita en SQL estándar. Cada ejecución de una consulta programada puede recibir los siguientes parámetros de consulta.
Antes de programar una consulta, usa la herramienta de línea de comandos de bq
para probar una string de consulta de forma manual con los parámetros @run_time
y @run_date
.
Parámetros disponibles
Parámetro | Tipo de SQL estándar | Valor |
---|---|---|
@run_time |
TIMESTAMP | Representado en la hora UTC. Para las consultas programadas con regularidad, run_time representa el tiempo previsto de ejecución. Por ejemplo, si la consulta programada tiene la configuración “cada 24 horas”, la diferencia de run_time entre dos consultas consecutivas será de 24 horas exactas, aunque el tiempo de ejecución real pueda variar un poco. |
@run_date |
DATE | Representa una fecha lógica del calendario. |
Ejemplo
El parámetro @run_time
es parte de la string de consulta en este ejemplo, que realiza una consulta a un conjunto de datos públicos llamado hacker_news.stories
.
SELECT @run_time AS time, title, author, text FROM `bigquery-public-data.hacker_news.stories` LIMIT 1000
Tabla de destino
Si la tabla de destino con tus resultados no existe cuando configuras la consulta programada, BigQuery intenta crear la tabla por ti.
Si usas una consulta DDL o DML, en Cloud Console, elige la región o la Ubicación de procesamiento. La ubicación de procesamiento se requiere en consultas DDL o DML que crean la tabla de destino.
Si la tabla de destino existe, BigQuery puede actualizar el esquema de la tabla de destino según los resultados de las consultas. Para permitir esto, agrega columnas mediante ALLOW_FIELD_ADDITION
o disminuye la rigurosidad del modo de una columna de REQUIRED
a NULLABLE
con ALLOW_FIELD_RELAXATION
.
De lo contrario, los cambios de esquema de la tabla entre ejecuciones provocan que la consulta programada falle.
Las consultas pueden hacer referencia a tablas de diferentes proyectos y conjuntos de datos. Cuando configuras tu consulta programada, no necesitas incluir el conjunto de datos de destino en el nombre de la tabla. Debes especificar el conjunto de datos de destino por separado.
Preferencia de escritura
La preferencia de escritura que selecciones determina cómo se escriben los resultados de tu consulta en una tabla de destino existente.
WRITE_TRUNCATE
: Si la tabla ya existe, BigQuery reemplaza los datos de la tabla.WRITE_APPEND
: Si la tabla ya existe, BigQuery adjunta los datos a la tabla.
Si usas una consulta DDL o DML, no puedes usar la opción de preferencia de escritura.
Solo se crea, trunca o adjunta una tabla de destino si BigQuery puede completar la consulta con éxito. Las acciones de creación, truncamiento o adjuntado se producen como una actualización atómica cuando finaliza el trabajo.
Agrupamiento en clústeres
Con las consultas programadas, se puede crear agrupamiento en clústeres solo en tablas nuevas, si estas se hacen con una declaración de DDL CREATE TABLE AS SELECT
. Consulta
Crea una tabla agrupada en clústeres a partir del resultado de una consulta
en la página Cómo usar instrucciones del lenguaje de definición de datos.
Opciones de partición
Las consultas programadas pueden crear tablas de destino particionadas o no particionadas.
La partición está disponible en Cloud Console, la herramienta de línea de comandos de bq
y los métodos de configuración de la API. Si usas una consulta DDL o DML con partición, deja el Campo de partición de la tabla de destino en blanco.
Hay dos tipos de partición de tablas en BigQuery:
- Tablas particionadas por tiempo de transferencia: Son tablas que se particionan según el tiempo de ejecución de la consulta programada.
- Tablas particionadas en una columna: Son tablas que se particionan según una columna de
TIMESTAMP
oDATE
.
Para las tablas particionadas por columnas, en Cloud Console, especifica el nombre de la columna en el Campo de partición de la tabla de destino cuando configures una consulta programada.
Para las tablas particionadas por tiempo de transferencia, deja el Campo de partición de la tabla de destino en blanco y, luego, indica la partición por fecha en el nombre de la tabla de destino. Para obtener más información, consulta Sintaxis de plantillas de parámetros.
Ejemplos de partición
- Tabla sin partición
- Tabla de destino:
mytable
- Campo de partición: dejar en blanco
- Tabla de destino:
- Tabla particionada por tiempo de transferencia
- Tabla de destino:
mytable$YYYYMMDD
- Campo de partición: dejar en blanco
- Tabla de destino:
- Tabla particionada por columnas
- Tabla de destino:
mytable
- Campo de partición: nombre de la columna
TIMESTAMP
oDATE
que se usa para particionar la tabla
- Tabla de destino:
Parámetros disponibles
Cuando configuras la consulta programada, puedes especificar cómo deseas particionar la tabla de destino con los parámetros de tiempo de ejecución.
Parámetro | Tipo de plantilla | Valor |
---|---|---|
run_time |
Marca de tiempo con formato | En hora UTC, según el programa. Para las consultas programadas con regularidad, run_time representa el tiempo previsto de ejecución. Por ejemplo, si la consulta programada tiene la configuración “cada 24 horas”, la diferencia de run_time entre dos consultas consecutivas será de 24 horas exactas, aunque el tiempo de ejecución real pueda variar un poco.Consulta TransferRun.runTime . |
run_date |
String de fecha | La fecha del parámetro run_time tiene el siguiente formato: %Y-%m-%d ; por ejemplo, 2018-01-01 . Este formato es compatible con tablas particionadas por tiempo de transferencia. |
Sistema de plantillas
Las consultas programadas admiten parámetros de tiempo de ejecución en el nombre de la tabla de destino con una sintaxis de plantilla.
Sintaxis de plantillas de parámetros
La sintaxis de plantillas admite plantillas de string y compensación horaria simples. Los parámetros se referencian en los siguientes formatos:
{run_date}
{run_time[+\-offset]|"time_format"}
Parámetro | Propósito |
---|---|
run_date |
A este parámetro lo reemplaza la fecha en formato YYYYMMDD . |
run_time |
Este parámetro admite las siguientes propiedades:
|
- No se permiten espacios en blanco entre run_time, la compensación horaria y el formato de hora.
- Para incluir llaves literales en la string, puedes marcarlas como
‘\{‘ and ‘\}’
. - Para incluir comillas textuales o una barra vertical en time_format, como
“YYYY|MM|DD”
, puedes escaparlas en la string de formato como‘\”’
o‘\|’
.
Ejemplos de plantillas de parámetros
Estos ejemplos demuestran la especificación de nombres de tablas de destino con diferentes formatos de hora y compensación del tiempo de ejecución.run_time (UTC) | Parámetro con plantilla | Nombre de la tabla de destino de salida |
---|---|---|
2018-02-15 00:00:00 | mytable | mytable |
2018-02-15 00:00:00 | mytable_{run_time|"%Y%m%d"} | mytable_20180215 |
2018-02-15 00:00:00 | mytable_{run_time+25h|"%Y%m%d"} | mytable_20180216 |
2018-02-15 00:00:00 | mytable_{run_time-1h|"%Y%m%d"} | mytable_20180214 |
2018-02-15 00:00:00 | mytable_{run_time+1.5h|"%Y%m%d%H"}
o mytable_{run_time+90m|"%Y%m%d%H"} |
mytable_2018021501 |
2018-02-15 00:00:00 | {run_time+97s|"%Y%m%d"}_mytable_{run_time+97s|"%H%M%S"} | 20180215_mytable_000137 |
Usa una cuenta de servicio
Puedes configurar una consulta programada para autenticar con una cuenta de servicio. Una cuenta de servicio es una Cuenta de Google asociada con tu proyecto de Google Cloud. La cuenta de servicio puede ejecutar trabajos, como consultas programadas o canalizaciones de procesamiento por lotes, con sus propias credenciales de servicio, en lugar de las credenciales de un usuario final.
Obtén más información sobre cómo autenticar con cuentas de servicio en Introducción a la autenticación.
Puedes configurar la consulta programada con una cuenta de servicio en Configura una consulta programada, en Opciones avanzadas.
Puedes actualizar una consulta programada existente con las credenciales de una cuenta de servicio mediante la herramienta de línea de comandos de
bq
. Consulta Actualiza las credenciales de una consulta programada.Por el momento, no se admite la actualización de una consulta programada en Cloud Console para usar las credenciales de la cuenta de servicio.
Configura una consulta programada
Console
Abre la página de BigQuery en Cloud Console.
Ejecuta la consulta que te interesa. Cuando estés satisfecho con los resultados, haz clic en Programar consulta (Schedule query) y Crear nueva consulta programada.
Las opciones de consulta programada se abren en el panel Nueva consulta programada (New scheduled query).
En el panel New scheduled query (Nueva consulta programada), ten en cuenta lo siguiente:
- En Name for the scheduled query, ingresa un nombre como
My scheduled query
. El nombre de la consulta programada puede ser cualquier valor que puedas identificar más adelante si necesitas modificar la consulta. De forma predeterminada, la consulta se ejecuta todos los días (opcional). Puedes cambiar las Opciones de programación predeterminadas de la siguiente manera:
- Para cambiar la frecuencia, cambia la
opción Se repite de Diariamente a la frecuencia deseada. Para
especificar una frecuencia personalizada, selecciona Personalizada y, luego, ingresa una
especificación de tiempo similar a Cron en el campo Programación personalizada;
por ejemplo
every 3 hours
. El período más corto permitido es de 15 minutos. Consulta el camposchedule
enTransferConfig
para obtener una descripción de los valores válidos. - Para cambiar la hora de inicio, selecciona la opción Seleccionar hora de inicio, ingresa la fecha y hora de inicio deseadas, y, luego, guarda los cambios.
- Para especificar la hora de finalización, selecciona la opción Seleccionar hora de finalización, ingresa la fecha y hora de finalización deseadas y, luego, guarda los cambios.
- Si deseas guardar la consulta sin una programación, para ejecutarla a pedido más adelante, selecciona On Demand como la opción Se repite.
- Para cambiar la frecuencia, cambia la
opción Se repite de Diariamente a la frecuencia deseada. Para
especificar una frecuencia personalizada, selecciona Personalizada y, luego, ingresa una
especificación de tiempo similar a Cron en el campo Programación personalizada;
por ejemplo
- En Name for the scheduled query, ingresa un nombre como
Para una consulta
SELECT
de SQL estándar, debes proporcionar información sobre el conjunto de datos de destino.- En Dataset name (Nombre del conjunto de datos), elige el conjunto de datos de destino apropiado.
- En Table name (Nombre de tabla), ingresa el nombre de tu tabla de destino.
- Esta opción no se encuentra disponible para las consultas DDL o DML.
En Destination table write preference (Preferencia de escritura de tabla de destino), selecciona
WRITE_TRUNCATE
para reemplazar la tabla de destino oWRITE_APPEND
si quieres agregar los datos a la tabla.- Esta opción no se encuentra disponible para las consultas DDL o DML.
Opciones avanzadas (opcional):
CMEK: Opcionalmente, si usas claves de encriptación administradas por el cliente, puedes seleccionar Customer-managed key (Clave administrada por el cliente) en Advanced options (Opciones avanzadas). Aparecerá una lista de las CMEK disponibles para que elijas.
Autentica con una cuenta de servicio: si tienes una o más cuentas de servicio asociadas a tu proyecto de Google Cloud, puedes asociar una cuenta de servicio con tu consulta programada en lugar de usar tus credenciales de usuario (opcional). En Credencial de consulta programada (Scheduled query credential), haz clic en el menú para ver una lista de las cuentas de servicio que tienes disponibles.
Configuraciones adicionales:
(Opcional) Marca Enviar notificaciones por correo electrónico (Send email notifications) para activar las notificaciones por correo de las ejecuciones de transferencia con errores.
Si se trata de consultas DDL y DML, elige una región o ubicación de procesamiento (Processing location).
En Tema de Pub/Sub (Pub/Sub topic), ingresa el nombre de tu tema de Pub/Sub, por ejemplo,
projects/myproject/topics/mytopic
(opcional).
Haz clic en el botón Programar (Schedule).
bq
Opción 1: Usa el comando bq query
.
Para crear una consulta programada, agrega las opciones destination_table
(o target_dataset
), --schedule
y --display_name
a tu comando bq query
.
bq query \ --display_name=name \ --destination_table=table \ --schedule=interval
Reemplaza lo siguiente:
name
. El nombre visible de la consulta programada. El nombre visible puede ser cualquier valor que puedas identificar más adelante si necesitas modificar la consulta.table
. La tabla de destino para los resultados de la consulta.--target_dataset
es una forma alternativa de asignar un nombre al conjunto de datos de destino para los resultados de la consulta cuando se usa con consultas DDL y DML.- Usa
--destination_table
o--target_dataset
, pero no ambas opciones.
interval
. Cuando se usa conbq query
, convierte una consulta en una consulta programada recurrente. Es necesario tener un programa con la frecuencia con la que se debe ejecutar la consulta. Ejemplos:--schedule='every 24 hours'
--schedule='every 3 hours'
Marcas opcionales:
--project_id
es el ID del proyecto. Si no se especifica--project_id
, se usa el proyecto predeterminado.--replace
trunca la tabla de destino y escribe resultados nuevos con cada ejecución de la consulta programada.--append_table
adjunta resultados a la tabla de destino.
Por ejemplo, con el siguiente comando, se crea una consulta programada llamada My Scheduled Query
con la consulta simple SELECT 1 from mydataset.test
.
La tabla de destino es mytable
en el conjunto de datos mydataset
. La consulta programada se crea en el proyecto predeterminado de la siguiente manera:
bq query \
--use_legacy_sql=false \
--destination_table=mydataset.mytable \
--display_name='My Scheduled Query' \
--schedule='every 24 hours' \
--replace=true \
'SELECT
1
FROM
mydataset.test'
Opción 2: Usa el comando bq mk
.
Las consultas programadas son un tipo de transferencia. Si quieres programar una consulta, puedes usar la herramienta de línea de comandos de bq
para realizar una configuración de transferencia.
Las consultas deben estar en dialecto de SQL estándar para poder programarlas.
Ingresa el comando bq mk
y proporciona la marca de creación de transferencias --transfer_config
. También se requieren las siguientes marcas:
--data_source
--target_dataset
(opcional para consultas DDL y DML)--display_name
--params
Marcas opcionales:
--project_id
es el ID del proyecto. Si no se especifica--project_id
, se usa el proyecto predeterminado.--schedule
indica con qué frecuencia quieres que se ejecute la consulta. Si no se especifica--schedule
, el valor predeterminado es “cada 24 horas”, según la hora de creación.En las consultas de DDL y DML, también puedes proporcionar la marca
--location
para indicar una región específica de procesamiento. Si no se especifica--location
, se usa la ubicación global de Google Cloud.--service_account_name
es para autenticar tu consulta programada con una cuenta de servicio en lugar de tu cuenta de usuario individual.
bq mk \ --transfer_config \ --project_id=project_id \ --target_dataset=dataset \ --display_name=name \ --params='parameters' \ --data_source=data_source
Reemplaza lo siguiente:
dataset
. El conjunto de datos de destino para la configuración de transferencia.- Este parámetro es opcional para las consultas de DDL y DML. Se requiere para todas las demás consultas.
name
. El nombre visible de la configuración de transferencia. El nombre visible puede ser cualquier valor que puedas identificar más adelante si necesitas modificar la consulta.parameters
. Contiene los parámetros para la configuración de la transferencia creada en formato JSON. Por ejemplo:--params='{"param":"param_value"}'
- Para una consulta programada, debes proporcionar el parámetro
query
. - El parámetro
destination_table_name_template
es el nombre de tu tabla de destino.- Este parámetro es opcional para las consultas de DDL y DML. Se requiere para todas las demás consultas.
- En el parámetro
write_disposition
, puedes elegirWRITE_TRUNCATE
para truncar (reemplazar) la tabla de destino oWRITE_APPEND
si quieres adjuntar los resultados de la consulta a la tabla de destino.- Este parámetro es opcional para las consultas de DDL y DML. Se requiere para todas las demás consultas.
- El parámetro
destination_table_kms_key
es para claves de encriptación administradas por el cliente (opcional). - El parámetro
--service_account_name
es para autenticar con una cuenta de servicio en lugar de una cuenta de usuario individual (opcional).
- Para una consulta programada, debes proporcionar el parámetro
data_source
. La fuente de datos:scheduled_query
.
Por ejemplo, el siguiente comando crea una configuración de transferencia de consulta programada con el nombre My Scheduled Query
mediante la consulta simple SELECT 1
from mydataset.test
. La tabla de destino mytable
se trunca para cada operación de escritura, y el conjunto de datos de destino es mydataset
. La consulta programada se crea en el proyecto predeterminado y se autentica con una cuenta de servicio:
bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Scheduled Query' \
--params='{"query":"SELECT 1 from mydataset.test","destination_table_name_template":"mytable","write_disposition":"WRITE_TRUNCATE"}' \
--data_source=scheduled_query \
--service_account_name=abcdef-test-sa@abcdef-test.iam.gserviceaccount.com
La primera vez que ejecutes el comando, recibirás un mensaje similar al siguiente:
[URL omitted] Please copy and paste the above URL into your web browser and
follow the instructions to retrieve an authentication code.
Sigue las instrucciones del mensaje y pega el código de autenticación en la línea de comandos.
API
Usa el método projects.locations.transferConfigs.create
y proporciona una instancia del recurso TransferConfig
.
Java
Para aprender a instalar y usar la biblioteca cliente de BigQuery, consulta las bibliotecas cliente de BigQuery. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Python
Para aprender a instalar y usar la biblioteca cliente de BigQuery, consulta las bibliotecas cliente de BigQuery. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de BigQuery.
Configura una consulta programada con una cuenta de servicio
Java
Para aprender a instalar y usar la biblioteca cliente de BigQuery, consulta las bibliotecas cliente de BigQuery. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Python
Para aprender a instalar y usar la biblioteca cliente de BigQuery, consulta las bibliotecas cliente de BigQuery. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de BigQuery.
Accede al estado de una consulta programada
Console
Para ver el estado de tus consultas programadas, haz clic en Scheduled queries (Consultas programadas) en el panel de navegación. Actualiza la página para ver el estado actualizado de tus consultas programadas. Haz clic en una consulta programada para obtener más detalles sobre ella.
bq
Las consultas programadas son un tipo de transferencia. Para mostrar los detalles de una consulta programada, primero puedes usar la herramienta de línea de comandos de bq
a fin de hacer una lista de las opciones de configuración de transferencia.
Ingresa el comando bq ls
y proporciona la marca de transferencia --transfer_config
. También se requieren las siguientes marcas:
--transfer_location
Por ejemplo:
bq ls \
--transfer_config \
--transfer_location=us \
Para que se muestren los detalles de una sola consulta programada, ingresa el comando bq show
y proporciona transfer_path
de esa consulta programada o configuración de transferencia.
Por ejemplo:
bq show \
--transfer_config \
projects/862514376110/locations/us/transferConfigs/5dd12f26-0000-262f-bc38-089e0820fe38 \
API
Usa el método projects.locations.transferConfigs.list
y proporciona una instancia del recurso TransferConfig
.
Java
Para aprender a instalar y usar la biblioteca cliente de BigQuery, consulta las bibliotecas cliente de BigQuery. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Python
Para aprender a instalar y usar la biblioteca cliente de BigQuery, consulta las bibliotecas cliente de BigQuery. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de BigQuery.
Actualiza una consulta programada
Console
Para actualizar una consulta programada, sigue estos pasos:
- En el panel de navegación, haz clic en Consultas programadas.
- En la lista de consultas programadas, haz clic en el nombre de la consulta que deseas cambiar.
- En la página Detalles de la consulta programada que se abre, haz clic en Editar.
- Opcional: cambia el texto de la consulta en el panel de edición de consultas.
- Haz clic en Programar consulta y, luego, selecciona Actualizar consulta programada.
- Opcional: cambia cualquier otra opción de programación para la consulta.
- Haz clic en Actualizar.
Actualiza las credenciales de una consulta programada
Si programas una consulta existente, es posible que debas actualizar las credenciales del usuario en la consulta. Las credenciales se actualizan de forma automática para las nuevas consultas programadas.
A continuación, se presentan algunas situaciones que podrían requerir la actualización de credenciales:
- Deseas consultar los datos de Drive en una consulta programada.
Recibes un error INVALID_USER cuando intentas programar la consulta:
Error code 5 : Authentication failure: User Id not found. Error code: INVALID_USERID
Console
Sigue estos pasos para actualizar las credenciales existentes en una consulta programada:
Haz clic en el botón MORE (MÁS) y selecciona Update credentials (Actualizar credenciales).
Espera entre 10 y 20 minutos para que se aplique el cambio. Es posible que debas borrar la caché de tu navegador.
bq
Las consultas programadas son un tipo de transferencia. Para actualizar las credenciales de una consulta programada, puedes usar la herramienta de línea de comandos de bq
a fin de actualizar la configuración de la transferencia.
Ingresa el comando bq update
y proporciona la marca de transferencia --transfer_config
. También se requieren las siguientes marcas:
--update_credentials
Marca opcional:
--service_account_name
es para autenticar tu consulta programada con una cuenta de servicio en lugar de tu cuenta de usuario individual.
Por ejemplo, el siguiente comando actualiza una configuración de transferencia de consulta programada para autenticar con una cuenta de servicio:
bq update \
--transfer_config \
--update_credentials \
--service_account_name=abcdef-test-sa@abcdef-test.iam.gserviceaccount.com projects/862514376110/locations/us/transferConfigs/5dd12f26-0000-262f-bc38-089e0820fe38 \
Java
Para aprender a instalar y usar la biblioteca cliente de BigQuery, consulta las bibliotecas cliente de BigQuery. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Python
Para aprender a instalar y usar la biblioteca cliente de BigQuery, consulta las bibliotecas cliente de BigQuery. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de BigQuery.
Configura una ejecución manual en fechas históricas
Además de programar una consulta para que se ejecute en el futuro, también puedes activar ejecuciones inmediatas de forma manual. Sería necesario activar una ejecución inmediata si tu consulta usa el parámetro run_date
y si hubo problemas durante una ejecución anterior.
Por ejemplo, todos los días a las 09:00, consultas una tabla de origen para las filas que coinciden con la fecha actual. Sin embargo, descubres que los datos no se agregaron a la tabla de origen durante los últimos tres días. En esta situación, puedes configurar la consulta para que se ejecute en función de datos históricos dentro de un período que especifiques. Tu consulta se ejecuta mediante combinaciones de los parámetros run_date
y run_time
que corresponden a las fechas que configuraste en la consulta programada.
Una vez configurada una consulta programada, puedes ejecutar la consulta con un período histórico de la siguiente manera:
Console
Después de hacer clic en Programar para guardar tu consulta programada, puedes hacer clic en el botón Consultas programadas para ver la lista de consultas programadas en el momento. Haz clic en cualquier nombre visible para ver los detalles del programa de la consulta. En la parte superior derecha de la página, haz clic en Programar reabastecimiento (Schedule backfill) para especificar un período histórico.
Los tiempos de ejecución seleccionados están todos dentro del rango seleccionado, incluida la primera fecha y excluida la última fecha.
Ejemplo 1
Tu consulta programada está configurada para ejecutarse every day 09:00
según la hora del Pacífico. Te faltan datos del 1, 2 y 3 de enero. Selecciona el siguiente período histórico:
Start Time = 1/1/19
End Time = 1/4/19
Tu consulta se ejecuta con los parámetros run_date
y run_time
, que corresponden a las siguientes fechas y horas:
- 1/1/19 09:00 a.m. hora del Pacífico
- 2/1/19 09:00 a.m. hora del Pacífico
- 3/1/19 09:00 a.m. hora del Pacífico
Ejemplo 2
Tu consulta programada está configurada para ejecutarse every day 23:00
según la hora del Pacífico. Te faltan datos del 1, 2 y 3 de enero. Selecciona los siguientes períodos históricos (se seleccionan fechas posteriores porque el estándar UTC tiene una fecha diferente a las 11:00 p.m. hora del Pacífico):
Start Time = 1/2/19
End Time = 1/5/19
Tu consulta se ejecuta con los parámetros run_date
y run_time
, que corresponden a las siguientes fechas y horas:
- 2/1/19 09:00 a.m. UTC o 1/1/2019 11:00 p.m. hora del Pacífico
- 3/1/19 09:00 a.m. UTC o 2/1/2019 11:00 p.m. hora del Pacífico
- 1/4/19 09:00 UTC o 1/3/2019 23:00 hora del Pacífico
Después de configurar ejecuciones manuales, actualiza la página para verlas en la lista de ejecuciones.
bq
Para ejecutar la consulta de forma manual en un período histórico, haz lo siguiente:
Ingresa el comando bq mk
y proporciona la marca de ejecución de transferencias --transfer_run
. También se requieren las siguientes marcas:
--start_time
--end_time
bq mk \ --transfer_run \ --start_time='start_time' \ --end_time='end_time' \ resource_name
Reemplaza lo siguiente:
start_time
yend_time
. Marcas de tiempo que terminan en Z o contienen un desplazamiento de zona horaria válido. Ejemplos:- 2017-08-19T12:11:35.00Z
- 2017-05-25T00:00:00+00:00
resource_name
. El nombre del recurso de la consulta programada (o de la transferencia). El nombre del recurso también se conoce como la configuración de transferencia.
Por ejemplo, el siguiente comando programa un reabastecimiento para el recurso de consulta programada (o la configuración de transferencia): projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
.
bq mk \
--transfer_run \
--start_time 2017-05-25T00:00:00Z \
--end_time 2017-05-25T00:00:00Z \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
Para obtener más información, consulta bq mk --transfer_run
.
API
Usa el método projects.locations.transferConfigs.scheduleRun y proporciona la ruta del recurso TransferConfig.
Java
Para aprender a instalar y usar la biblioteca cliente de BigQuery, consulta las bibliotecas cliente de BigQuery. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Python
Para aprender a instalar y usar la biblioteca cliente de BigQuery, consulta las bibliotecas cliente de BigQuery. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de BigQuery.
Borra una consulta programada
Java
Para aprender a instalar y usar la biblioteca cliente de BigQuery, consulta las bibliotecas cliente de BigQuery. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Python
Para aprender a instalar y usar la biblioteca cliente de BigQuery, consulta las bibliotecas cliente de BigQuery. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de BigQuery.
Cuotas
Las consultas programadas se ejecutan con las credenciales y el proyecto del creador, como si estuvieras ejecutando la consulta tú mismo.
A pesar de que las consultas programadas usan funciones del Servicio de transferencia de datos de BigQuery, estas no son transferencias y no están sujetas a la cuota de los trabajos de carga. En cambio, están sujetas a las mismas cuotas y límites de BigQuery que las consultas manuales.
Precios
Las consultas programadas tienen el mismo precio que las consultas de BigQuery manuales.
Regiones admitidas
Las consultas programadas se admiten en las siguientes ubicaciones.
Ubicaciones regionales
Descripción de la región | Nombre de la región | |
---|---|---|
América | ||
Iowa | us-central1 |
|
Las Vegas | us-west4 |
|
Los Ángeles | us-west2 |
|
Montreal | northamerica-northeast1 |
|
Virginia del Norte | us-east4 |
|
Oregón | us-west1 |
|
Salt Lake City | us-west3 |
|
São Paulo | southamerica-east1 |
|
Carolina del Sur | us-east1 |
|
Europa | ||
Bélgica | europe-west1 |
|
Finlandia | europe-north1 |
|
Fráncfort | europe-west3 |
|
Londres | europe-west2 |
|
Netherlands | europe-west4 |
|
Varsovia | europe-central2 |
|
Zúrich | europe-west6 |
|
Asia-Pacífico | ||
Hong Kong | asia-east2 |
|
Yakarta | asia-southeast2 |
|
Bombay | asia-south1 |
|
Osaka | asia-northeast2 |
|
Seúl | asia-northeast3 |
|
Singapur | asia-southeast1 |
|
Sídney | australia-southeast1 |
|
Taiwán | asia-east1 |
|
Tokio | asia-northeast1 |
Ubicaciones multirregionales
Descripción de la multirregión | Nombre de la multirregión |
---|---|
Centros de datos dentro de los estados miembros de la Unión Europea1 | EU |
Centros de datos en Estados Unidos | US |
1 Los datos ubicados en la multirregión EU
no se almacenan en los centros de datos de europe-west2
(Londres) ni de europe-west6
(Zúrich).