Programa consultas

En esta página, se describe cómo programar consultas recurrentes en BigQuery.

Descripción general

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 en lenguaje de manipulación de datos (DML). La string de consulta y la tabla de destino se pueden parametrizar para permitirte organizar los resultados de la consulta por fecha y hora.

Antes de comenzar

Antes de crear una consulta programada, ten en cuenta lo siguiente:

Permisos necesarios

Antes de programar una consulta:

  • Asegúrate de que la persona que crea la transferencia tenga los siguientes permisos obligatorios en BigQuery:

    • los permisos bigquery.transfers.update para crear la transferencia
    • los permisos bigquery.datasets.update en el conjunto de datos de destino

    La función de Cloud IAM bigquery.admin predefinida incluye los permisos bigquery.transfers.update y bigquery.datasets.update. Para obtener más información sobre las funciones de Cloud IAM en BigQuery, consulta Funciones y permisos predefinidos.

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 interfaz de línea de comandos 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 MARCA DE TIEMPO 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 FECHA 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 no existe la tabla de destino para tus resultados cuando configuras la consulta programada, BigQuery intenta crear la tabla por ti.

Si tu consulta es DDL o DML, ten en cuenta lo siguiente:

  • En Cloud Console, elige la región o ubicación de procesamiento. La ubicación de procesamiento se requiere en consultas DDL o DML que crean la tabla de destino.
  • En la IU web clásica de BigQuery, deja la tabla de destino en blanco.

Si la tabla de destino ya existe, debes actualizar el esquema de la tabla de destino en función de los resultados de la consulta si agregas columnas al esquema (ALLOW_FIELD_ADDITION) o disminuye la rigurosidad del modo de una columna de REQUIRED a NULLABLE (ALLOW_FIELD_RELAXATION). En todos los demás casos, 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 tu consulta es DDL o DML, ten en cuenta lo siguiente:

  • En Cloud Console, la opción de preferencia de escritura no aparecerá.
  • En la IU web clásica de BigQuery, deja Preferencia de escritura en blanco.

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

Con las consultas programadas, se pueden crear tablas de destino particionadas o no particionadas. La partición no está disponible en Cloud Console, pero sí lo está en los métodos de configuración de la lU web clásica de BigQuery, CLI y las API. Si usas una consulta DDL o DML con partición, deja el campo de partición en blanco.

Existen dos tipos de partición de tablas en BigQuery:

  • Tablas particionadas por tiempo de transferencia: tablas que se particionan según el tiempo de ejecución programado de la consulta.
  • Tablas particionadas por columna: tablas que se particionan según una columna TIMESTAMP o DATE.

Para las tablas particionadas por columna, ten en cuenta lo siguiente:

  • En la IU web clásica de BigQuery, si la tabla de destino se particiona en una columna, debes especificar el nombre de la columna en el campo de partición cuando configuras una consulta programada. Para tablas particionadas por tiempo de transferencia, deja el campo de partición en blanco.

Para las tablas particionadas por tiempo de transferencia, haz lo siguiente:

  • Indica la fecha de partición en el nombre de la tabla de destino. Consulta la sintaxis para plantillas de nombres de tablas que se explica más abajo.

Ejemplos de partición

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, 20180101. 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:


offset
Compensación horaria expresada en horas (h), minutos (m) y segundos (s), en ese orden.
Los días (d) no son compatibles.
Se permiten decimales, por ejemplo, 1.5h.

time_format
Una string de formato. Los parámetros de formato más comunes son los años (%Y), los meses (%m), y los días (%d).
En las tablas particionadas, YYYYMMDD es el sufijo obligatorio, equivalente a “%Y%m%d”.

Obtén más información sobre el formato de elementos de fecha y hora.

Notas de uso:
  • 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 marcarlas 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|"%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 a tu proyecto de GCP. La cuenta de servicio puede ejecutar trabajos asociados con sus propias credenciales de servicio, en lugar de las credenciales de un usuario final, como una canalización de procesamiento por lotes o una consulta programada.

Obtén más información sobre cómo autenticar con cuentas de servicio en Introducción a la autenticación.

  • Tendrás la opción de configurar la consulta programada con una cuenta de servicio en Configurar una consulta programada, en Opciones avanzadas.

  • Puede actualizar una consulta programada existente con las credenciales de una cuenta de servicio mediante la interfaz de línea de comandos (CLI). Consulta Cómo actualizar las credenciales de una consulta programada.

  • Actualmente, no se admite la actualización de una consulta programada para usar las credenciales de la cuenta de servicio en la IU web de BigQuery.

  • No se admite la creación o actualización de consultas programadas para usar cuentas de servicio en la IU web clásica.

Configura una consulta programada

Console

  1. Abre la IU web de BigQuery en Cloud Console.

    Ir a Cloud Console

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

    Programar consulta en la IU web de BigQuery

  3. Las opciones de consulta programada se abren en el panel New scheduled query (Nueva consulta programada).

  4. En el panel New scheduled query (Nueva consulta programada), ten en cuenta lo siguiente:

    • En Name for the scheduled query (Nombre de la consulta programada), ingresa un nombre como My scheduled query. El nombre de la consulta programada puede ser cualquier valor que te permita identificarla con facilidad si necesitas modificarla más tarde.
    • (Opcional) En Opciones de programa (Schedule options), puedes dejar el valor predeterminado Diario (Daily) (cada 24 horas, según la hora de creación) o puedes hacer clic en Programar hora de inicio (Schedule start time) para cambiar la hora. También puedes cambiar el intervalo a Semanal, Mensual o Personalizado. Cuando seleccionas Personalizado, se espera una especificación de tiempo similar a Cron, por ejemplo, every 3 hours. El período más corto permitido es de 15 minutos. Consulta el campo schedule en TransferConfig para conocer otros valores de API válidos.

      Parte superior de Nueva consulta programada

  5. Para una consulta de SQL estándar SELECT, 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 Nombre de tabla (Table name), 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 o WRITE_APPEND si quieres agregar los datos a la tabla.

      • Esta opción no se encuentra disponible para las consultas DDL o DML.

      Nuevo destino de consulta programada.

  6. 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 tus CMEK para que elijas una.

    • Autentica con una cuenta de servicio: Si tienes una cuenta de servicio asociada a tu proyecto de GCP, puedes asociar una con tu consulta programada en lugar tus propias credenciales de usuario (opcional). En Credencial de consulta programada, haz clic en el menú para ver una lista de las cuentas de servicio que tienes disponibles.

      Opciones avanzadas de consulta programada.

  7. Configuraciones adicionales:

    • Si lo deseas, puedes marcar Send email notifications (Enviar notificaciones por correo electrónico) para activar las notificaciones por correo de las ejecuciones de transferencia con errores.

    • Si se trata de una consulta DDL o DML, elige una región en Processing location (Ubicación de procesamiento).

    • En Pub/Sub topic (Tema de Pub/Sub), ingresa el nombre de tu tema de Pub/Sub, por ejemplo, projects/myproject/topics/mytopic (opcional).

      Nueva consulta programada DDL/DML.

  8. Haz clic en el botón Schedule (Programar).

IU clásica

  1. Ve a la IU web clásica de BigQuery.

    Ir a la IU web clásica de BigQuery

  2. Ejecuta la consulta que te interesa.

    Consulta programada en la IU web clásica de BigQuery.

  3. Cuando estés satisfecho con los resultados, haz clic en Schedule query (Programar consulta). Las opciones de consulta programada se abren debajo del cuadro de consulta.

  4. En la página Nueva consulta programada, haz lo siguiente:

    • En Destination dataset (Conjunto de datos de destino), selecciona el conjunto de datos que corresponda.
    • En Nombre visible (Display name), ingresa un nombre para la consulta programada, como My scheduled query. El nombre de la consulta programada puede ser cualquier valor que te permita identificarla con facilidad si necesitas modificarla más tarde.
    • En Tabla de destino (Destination table), haz lo siguiente:
      • Para una consulta de SQL estándar, ingresa el nombre de tu tabla de destino.
      • Para una consulta DDL o DML, deja este campo en blanco.
    • En Write Preference (Preferencia de escritura), haz lo siguiente:
      • Si se trata de una consulta de SQL estándar, selecciona WRITE_TRUNCATE para reemplazar la tabla de destino o WRITE_APPEND si quieres adjuntar datos a la tabla.
      • Si se trata de una consulta DDL o DML, selecciona Unspecified (Sin especificar).
    • Opcionalmente, haz lo siguiente en Partitioning Field (Campo de partición):

    • Opcionalmente, en Destination table KMS key (Clave KMS de tabla de destino), puedes ingresar una clave de encriptación administrada por el cliente, si usas claves de encriptación administradas por el cliente.

      Nueva consulta programada.

    • (Opcional) En Programa (Schedule), puedes dejar el valor predeterminado Diario (Daily) (cada 24 horas, según la hora de creación) o puedes hacer clic en Editar para cambiar la hora. También puedes cambiar el intervalo a Semanal, Mensual o Personalizado. Cuando seleccionas Personalizado, se espera una especificación de tiempo similar a Cron, por ejemplo, every 3 hours. El período más corto permitido es de 15 minutos. Consulta el campo schedule en TransferConfig para conocer otros valores de API válidos.

      Programa de consultas.

    • Si lo deseas, expande la sección Advanced (Avanzado) y configura las notificaciones.

      • En Tema de Cloud Pub/Sub (Cloud Pub/Sub topic), ingresa el nombre de tu tema de Cloud Pub/Sub, por ejemplo, projects/myproject/topics/mytopic.
      • Marca Send email notifications (Enviar notificaciones por correo electrónico) para activar las notificaciones por correo electrónico de las ejecuciones de transferencia con errores.

        Tema de Pub/Sub.

  5. Haz clic en Add (Agregar).

CLI

Opción 1: Usa el comando de bq query.

Con este método, debes agregar las opciones de marcas destination_table (o target_dataset), --schedule y --display_name a tu comando de bq query para crear una consulta programada.

bq query \
--display_name=name \
--destination_table=table \
--schedule=interval

Donde:

  • name es el nombre visible de la consulta programada. El nombre visible puede ser cualquier valor que te permita identificar la transferencia con facilidad si necesitas modificarla más tarde.
  • table es 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/DML.
    • Usa --destination_table o --target_dataset, pero no ambos.
  • interval, cuando se usa con bq 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' \
    --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 CLI de Servicio de transferencia de datos de BigQuery para configurar la 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 o 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 consultas DDL/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. Nota: El uso de cuentas de servicio con consultas programadas se encuentra en versión Beta.

bq mk \
--transfer_config \
--project_id=project_id \
--target_dataset=dataset \
--display_name=name \
--params='parameters' \
--data_source=data_source

Donde:

  • dataset es el conjunto de datos de destino para la configuración de la transferencia.
    • Este parámetro es opcional para las consultas DDL o DML. Se requiere para todas las demás consultas.
  • name es el nombre visible de la configuración de transferencia. El nombre visible puede ser cualquier valor que te permita identificar la consulta programada (transferencia) con facilidad si necesitas modificarla más tarde.
  • parameters contiene los parámetros para la configuración de 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 DDL o DML. Se requiere para todas las demás consultas.
    • En el parámetro write_disposition, puedes elegir WRITE_TRUNCATE para truncar (reemplazar) la tabla de destino o WRITE_APPEND si quieres adjuntar los resultados de la consulta a la tabla de destino.
      • Este parámetro es opcional para las consultas DDL o 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).
  • data_source es 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","service_account_name=abcdef-test-sa@abcdef-test.iam.gserviceaccount.com"}' \
--data_source=scheduled_query

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.

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

from google.cloud import bigquery_datatransfer_v1
import google.protobuf.json_format

client = bigquery_datatransfer_v1.DataTransferServiceClient()

# TODO(developer): Set the project_id to the project that contains the
#                  destination dataset.
# project_id = "your-project-id"

# TODO(developer): Set the destination dataset. The authorized user must
#                  have owner permissions on the dataset.
# dataset_id = "your_dataset_id"

# TODO(developer): The first time you run this sample, set the
# authorization code to a value from the URL:
# https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=433065040935-hav5fqnc9p9cht3rqneus9115ias2kn1.apps.googleusercontent.com&scope=https://www.googleapis.com/auth/bigquery%20https://www.googleapis.com/auth/drive&redirect_uri=urn:ietf:wg:oauth:2.0:oob
#
# authorization_code = "_4/ABCD-EFGHIJKLMNOP-QRSTUVWXYZ"
#
# You can use an empty string for authorization_code in subsequent runs of
# this code sample with the same credentials.
#
# authorization_code = ""

# Use standard SQL syntax for the query.
query_string = """
SELECT
  CURRENT_TIMESTAMP() as current_time,
  @run_time as intended_run_time,
  @run_date as intended_run_date,
  17 as some_integer
"""

parent = client.project_path(project_id)

transfer_config = google.protobuf.json_format.ParseDict(
    {
        "destination_dataset_id": dataset_id,
        "display_name": "Your Scheduled Query Name",
        "data_source_id": "scheduled_query",
        "params": {
            "query": query_string,
            "destination_table_name_template": "your_table_{run_date}",
            "write_disposition": "WRITE_TRUNCATE",
            "partitioning_field": "",
        },
        "schedule": "every 24 hours",
    },
    bigquery_datatransfer_v1.types.TransferConfig(),
)

response = client.create_transfer_config(
    parent, transfer_config, authorization_code=authorization_code
)

print("Created scheduled query '{}'".format(response.name))

Cómo ver el estado de una consulta programada

IU web

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 esa consulta programada.

Genera una lista de consultas programadas.

IU clásica

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 al respecto.

Genera una lista de consultas programadas.

CLI

Las consultas programadas son un tipo de transferencia. Para mostrar los detalles de una consulta programada, primero puedes usar la CLI de Servicio de transferencia de datos de BigQuery para generar una lista de tus configuraciones 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 mostrar los detalles de una sola consulta programada, ingresa el comando bq show y proporciona la de esa consulta programada/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.

Cómo actualizar las credenciales de una consulta programada

IU web

Sigue estos pasos para actualizar las credenciales existentes en una consulta programada:

  1. Busca y consulta el estado de una consulta programada.

  2. Haz clic en el botón MORE (MÁS) y selecciona Update credentials (Actualizar credenciales).

    Actualiza las credenciales de consulta programadas.

Actualmente, IU web no admite el cambio de las credenciales utilizadas en una consulta programada a una cuenta de servicio.

IU clásica

  1. Busca y consulta el estado de una consulta programada.

  2. Si haces clic en una consulta programada de la lista, aparecerá el botón Update credentials (Actualizar credenciales) debajo de los detalles de esa consulta programada.

    Actualiza las credenciales de consulta programadas.

CLI

Las consultas programadas son un tipo de transferencia. Para actualizar las credenciales de una consulta programada, puedes usar la CLI de Servicio de transferencia de datos de BigQuery para 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 \

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 datos históricos dentro de un período que especifiques. Tu consulta se ejecuta mediante combinaciones de run_date y run-time que corresponden a las fechas que configuraste en tu 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.

Botón de programar reabastecimiento

Todos los tiempos de ejecución elegidos están dentro de tu período seleccionado, incluida la primera fecha y excluida la última fecha.

Establecer fechas históricas

Ejemplo 1

Tu consulta programada está configurada para ejecutarse every day 09:00 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 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 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.

IU clásica

Después de hacer clic en Agregar para guardar la consulta programada, se mostrarán los detalles de la consulta programada. Debajo de los detalles, haz clic en el botón Iniciar ejecuciones manuales (Start Manual Runs) para especificar un período histórico.

Botón de inicio de ejecuciones manuales

Puedes definir aún mejor el período para tener una hora de inicio y finalización, o dejar los campos de hora como 00:00:00.

Establecer fechas históricas

Ejemplo 1

Supón que configuras tu consulta programada para que se ejecute every day 14:00 y aplicas el siguiente período histórico:

Start Time = 2/21/2018 00:00:00 AM
End Time = 2/24/2018 00:00:00 AM

La consulta se ejecutará en los siguientes momentos:

  • 2/21/2018 14:00:00
  • 22/2/2018 2:00 p.m.
  • 2/23/2018 14:00:00

Ejemplo 2

Si tu consulta programada está configurada para ejecutarse every fri at 01:05 y aplicas el siguiente período histórico:

Start Time = 2/1/2018 00:00:00 (un jueves)
End Time = 2/24/2018 00:00:00 AM (también un jueves)

La consulta se ejecutará en los siguientes momentos:

  • 2/2/2018 01:05:00
  • 9/2/2018 01:05 a.m.

CLI

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

Donde:

  • start_time y end_time son 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 es el nombre de recurso de la consulta programada (o transferencia). El Nombre del recurso también se conoce como la configuración de la 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

API

Usa el método projects.locations.transferConfigs.scheduleRun y proporciona la ruta del recurso TransferConfig.

Cuotas

Una consulta programada se ejecuta con las credenciales y el proyecto del creador, como si estuvieras ejecutando la consulta tú mismo. Las consultas programadas están sujetas a las mismas Cuotas y límites que las consultas manuales.

Precios

Las consultas programadas tienen el mismo precio que las consultas de BigQuery manuales.

Problemas conocidos y limitaciones

Regiones

Las consultas entre regiones no son compatibles y la tabla de destino para tu consulta programada debe estar en la misma región que los datos que se consultan. Consulta Ubicaciones de conjuntos de datos para obtener más información sobre regiones y multirregiones.

Google Drive

Puedes consultar los datos de Google Drive en una consulta programada. Si programas una consulta existente, es posible que debas hacer clic en “Actualizar credenciales” (Update Credentials) en la pantalla de detalles de la consulta programada. Espera de 10 a 20 minutos para que se aplique el cambio. Es posible que debas borrar la caché de tu navegador. Las credenciales se actualizan de forma automática para las nuevas consultas programadas.

Actualizar credenciales