Trabajar con reservas de slots

La API BigQuery Reservation te permite comprar ranuras dedicadas (llamadas compromisos), crear grupos de ranuras (llamados reservas) y asignar proyectos, carpetas y organizaciones a esas reservas.

Las reservas te permiten asignar un número concreto de ranuras a una carga de trabajo. Por ejemplo, puede que no quieras que una carga de trabajo de producción compita con cargas de trabajo de prueba por las ranuras. Puedes crear una reserva llamada prod y asignar tus cargas de trabajo de producción a esta reserva. Para obtener más información, consulta Reservas.

Crear reservas

Permisos obligatorios

Para crear una reserva, necesitas el siguiente permiso de Gestión de Identidades y Accesos (IAM):

Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye este permiso:

  • BigQuery Resource Editor
  • BigQuery Resource Admin

Para obtener más información sobre los roles de gestión de identidades y accesos en BigQuery, consulta el artículo sobre roles y permisos predefinidos.

Crear una reserva con slots específicos

Selecciona una de las opciones siguientes:

Consola

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el menú de navegación, haz clic en Gestión de la capacidad.

  3. Haz clic en Crear reserva.

  4. En el campo Nombre de la reserva, introduce un nombre para la reserva.

  5. En la lista Ubicación, selecciona la ubicación. Si seleccionas una ubicación de BigQuery Omni, tu opción de edición se limitará a la edición Enterprise.

  6. En la lista Edición, selecciona la edición. Las funciones de la edición de BigQuery, como el escalado automático, solo están disponibles en una edición. Para obtener más información, consulta la introducción a las ediciones de BigQuery.

  7. En la lista Selector de tamaño máximo de reserva, selecciona el tamaño máximo de reserva.

  8. Opcional: En el campo Espacios publicitarios de referencia, introduce el número de espacios publicitarios de referencia de la reserva.

    El número de ranuras de autoescalado disponibles se determina restando el valor de Ranuras base del valor de Tamaño máximo de reserva. Por ejemplo, si creas una reserva con 100 espacios de base y un tamaño máximo de reserva de 400, tu reserva tendrá 300 espacios de escalado automático. Para obtener más información sobre los intervalos de referencia, consulta el artículo Usar reservas con intervalos de referencia y de autoescalado.

  9. Para inhabilitar la función de compartir espacios inactivos y usar solo la capacidad de espacio especificada, haga clic en el interruptor Ignorar espacios inactivos.

  10. Para desplegar la sección Configuración avanzada, haz clic en la flecha de expansión.

  11. Opcional: Para definir la simultaneidad de trabajos objetivo, activa el interruptor Anular la simultaneidad de trabajos objetivo automática e introduce la simultaneidad de trabajos objetivo.

  12. El desglose de los espacios se muestra en la tabla Estimación de costes. En la tabla Resumen de capacidad se muestra un resumen de la reserva.

  13. Haz clic en Guardar.

La nueva reserva se muestra en la pestaña Reservas de espacios.

SQL

Para crear una reserva, usa la declaración de DDL CREATE RESERVATION.

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, introduce la siguiente instrucción:

    CREATE RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    OPTIONS (
      slot_capacity = NUMBER_OF_BASELINE_SLOTS,
      edition = EDITION,
      autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);

    Haz los cambios siguientes:

    • ADMIN_PROJECT_ID: el ID de proyecto del proyecto de administración que posee el recurso de reserva
    • LOCATION: la ubicación de la reserva. Si seleccionas una ubicación de BigQuery Omni, la opción de edición se limitará a la edición Enterprise.
    • RESERVATION_NAME: el nombre de la reserva

      El nombre solo puede contener caracteres alfanuméricos en minúscula o guiones, debe empezar por una letra y no puede terminar con un guion. Además, puede tener 64 caracteres como máximo.

    • NUMBER_OF_BASELINE_SLOTS: número de referencia de los espacios que se van a asignar a la reserva. No puedes definir las opciones slot_capacity y edition en la misma reserva.
    • EDITION: la edición de la reserva. Al asignar una reserva a una edición, se producen cambios en las funciones y los precios. Para obtener más información, consulta Introducción a las ediciones de BigQuery.
    • NUMBER_OF_AUTOSCALING_SLOTS: número de ranuras de autoescalado asignadas a la reserva. Es igual al valor del tamaño máximo de la reserva menos el número de espacios publicitarios de referencia.

  3. Haz clic en Ejecutar.

Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.

bq

Para crear una reserva, usa el comando bq mk con la marca --reservation:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation \
    --slots=NUMBER_OF_BASELINE_SLOTS \
    --ignore_idle_slots=false \
    --edition=EDITION \
    --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \
    --max_slots=MAXIMUM_NUMBER_OF_SLOTS
    --scaling_mode=SCALING_MODE
    RESERVATION_NAME

Haz los cambios siguientes:

  • ADMIN_PROJECT_ID: el ID del proyecto
  • LOCATION: la ubicación de la reserva. Si seleccionas una ubicación de BigQuery Omni, tu opción de edición se limitará a la edición Enterprise.
  • NUMBER_OF_BASELINE_SLOTS: número de espacios publicitarios básicos que se asignarán a la reserva.

  • RESERVATION_NAME: el nombre de la reserva. El nombre solo puede contener caracteres alfanuméricos en minúscula o guiones, debe empezar por una letra y no puede terminar con un guion. Además, puede tener 64 caracteres como máximo.

  • EDITION: la edición de la reserva. Al asignar una reserva a una edición, se producen cambios en las funciones y los precios. Para obtener más información, consulta Introducción a las ediciones de BigQuery.

  • NUMBER_OF_AUTOSCALING_SLOTS: número de ranuras de autoescalado asignadas a la reserva. Es igual al valor del tamaño máximo de la reserva menos el número de espacios publicitarios de referencia. No se puede configurar con las marcas --max_slots ni --scaling_mode.

  • MAXIMUM_NUMBER_OF_SLOTS: número máximo de ranuras que puede consumir la reserva. Este valor debe configurarse con la marca --scaling_mode (Vista previa).

  • SCALING_MODE: el modo de escalado de la reserva. Las opciones son ALL_SLOTS, IDLE_SLOTS_ONLY o AUTOSCALE_ONLY. Este valor debe configurarse con la marca --scaling_mode (Vista previa).

Para obtener información sobre la marca --ignore_idle_slots, consulta la sección Ranuras inactivas. El valor predeterminado es false.

Terraform

Usa el recurso google_bigquery_reservation.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar la autenticación para bibliotecas de cliente.

En el siguiente ejemplo se crea una reserva llamada my-reservation:

resource "google_bigquery_reservation" "default" {
  name              = "my-reservation"
  location          = "us-central1"
  slot_capacity     = 100
  edition           = "ENTERPRISE"
  ignore_idle_slots = false # Use idle slots from other reservations
  concurrency       = 0     # Automatically adjust query concurrency based on available resources
  autoscale {
    max_slots = 200 # Allow the reservation to scale up to 300 slots (slot_capacity + max_slots) if needed
  }
}

Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud

Preparar Cloud Shell

  1. Abre Cloud Shell.
  2. Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.

    Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.

Preparar el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

  1. En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión .tf. Por ejemplo, main.tf. En este tutorial, nos referiremos al archivo como main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.

    Copia el código de ejemplo en el archivo main.tf que acabas de crear.

    También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
    terraform init

    Si quieres usar la versión más reciente del proveedor de Google, incluye la opción -upgrade:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
    terraform plan

    Haga las correcciones necesarias en la configuración.

  2. Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply

    Espera hasta que Terraform muestre el mensaje "Apply complete!".

  3. Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.

Python

Instala el paquete google-cloud-bigquery-reservation antes de usar este código de ejemplo. Crea un ReservationServiceClient. Describe la reserva que quieres crear con una Reservation. Crea la reserva con el método create_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the number of slots in the
# reservation.
slot_capacity = 100

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

parent = reservation_client.common_location_path(project_id, location)

reservation = reservation_types.Reservation(slot_capacity=slot_capacity)
reservation = reservation_client.create_reservation(
    parent=parent,
    reservation=reservation,
    reservation_id=reservation_id,
)

print(f"Created reservation: {reservation.name}")

Crear una reserva predecible

Antes de crear una reserva con un número máximo de espacios, debes habilitar la equidad basada en reservas.

Habilitar la equidad basada en reservas

Para habilitar la equidad basada en reservas, asigna el valor true a la enable_reservation_based_fairness marca.

Para actualizar la equidad basada en reservas de un proyecto, necesitas el permiso bigquery.config.update en el proyecto que mantiene la propiedad de las reservas. El rol predefinido BigQuery Admin incluye este permiso.

Para obtener más información sobre cómo actualizar la configuración predeterminada de un proyecto, consulta Gestionar ajustes de configuración.

ALTER PROJECT `PROJECT_NAME` SET OPTIONS (
    `region-LOCATION.enable_reservation_based_fairness`= true);

Haz los cambios siguientes:

Crear una reserva predecible

Para crear una reserva predecible con un número máximo de ranuras, selecciona una de las siguientes opciones:

Consola

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el panel de navegación, vaya a la sección Gestión de la capacidad y, a continuación, haga clic en Crear reserva.

  3. En el campo Nombre de la reserva, introduce un nombre para la reserva.

  4. En la lista Ubicación, selecciona la ubicación. Si seleccionas una ubicación de BigQuery Omni, tu opción de edición se limitará a la edición Enterprise.

  5. En la lista Edición, selecciona la edición. El autoescalado solo está disponible en una edición. Para obtener más información, consulta Información sobre las ediciones de BigQuery.

  6. En la lista Selector de tamaño máximo de reserva, selecciona el tamaño máximo de reserva.

  7. Opcional: En el campo Espacios publicitarios de referencia, introduce el número de espacios publicitarios de referencia de la reserva.

    El número de ranuras de autoescalado disponibles se determina restando el valor de Ranuras base del valor de Tamaño máximo de reserva. Por ejemplo, si creas una reserva con 100 espacios de base y un tamaño máximo de reserva de 400, tu reserva tendrá 300 espacios de escalado automático. Para obtener más información sobre los intervalos de referencia, consulta el artículo Usar reservas con intervalos de referencia y de autoescalado.

  8. Para inhabilitar la función de compartir espacios inactivos y usar solo la capacidad de espacio especificada, haga clic en el interruptor Ignorar espacios inactivos.

  9. Para desplegar la sección Configuración avanzada, haz clic en la flecha de expansión.

    1. En la lista ¿Cómo se usan los espacios inactivos?, selecciona la opción de configuración.
  10. El desglose de los espacios se muestra en la tabla Estimación de costes. En la tabla Resumen de capacidad se muestra un resumen de la reserva.

  11. Haz clic en Guardar.

La nueva reserva se muestra en la pestaña Reservas de espacios.

bq

Para crear una reserva predecible, usa el comando bq mk con la marca --reservation y define los valores de max_slots y scaling_mode:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation \
    --slots=NUMBER_OF_BASELINE_SLOTS \
    --ignore_idle_slots=false \
    --edition=EDITION \
    --max_slots=MAXIMUM_NUMBER_OF_SLOTS \
    --scaling_mode=SCALING_MODE
    RESERVATION_NAME

Haz los cambios siguientes:

  • ADMIN_PROJECT_ID: el ID del proyecto
  • LOCATION: la ubicación de la reserva. Si seleccionas una ubicación de BigQuery Omni, tu opción de edición se limitará a la edición Enterprise.
  • NUMBER_OF_BASELINE_SLOTS: número de espacios publicitarios básicos que se asignarán a la reserva.

  • RESERVATION_NAME: el nombre de la reserva

  • EDITION: la edición de la reserva. Al asignar una reserva a una edición, se producen cambios en las funciones y los precios. Para obtener más información, consulta Introducción a las ediciones de BigQuery.

  • MAXIMUM_NUMBER_OF_SLOTS: número máximo de ranuras que puede consumir la reserva. Este valor debe configurarse con la marca --scaling_mode (Vista previa).

  • SCALING_MODE: el modo de escalado de la reserva. Las opciones son ALL_SLOTS, IDLE_SLOTS_ONLY o AUTOSCALE_ONLY. Este valor debe configurarse con la marca --scaling_mode (Vista previa).

Para obtener información sobre la marca --ignore_idle_slots, consulta la sección Ranuras inactivas. El valor predeterminado es false.

Para obtener más información sobre las reservas predecibles, consulta el artículo Reservas predecibles.

Actualizar reservas

Puedes hacer los siguientes cambios en una reserva:

  • Cambia el tamaño de la reserva añadiendo o quitando espacios.
  • Configura si las consultas de esta reserva usan ranuras inactivas.
  • Cambiar la cantidad de ranuras de referencia o de autoescalado asignadas a una reserva.
  • Define la simultaneidad de tareas de destino.

Para cambiar la edición de una reserva, primero elimina la reserva y, después, crea una reserva con la edición actualizada.

Permisos obligatorios

Para actualizar una reserva, necesitas el siguiente permiso de gestión de identidades y accesos (IAM):

Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye este permiso:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Para obtener más información sobre los roles de gestión de identidades y accesos en BigQuery, consulta el artículo sobre roles y permisos predefinidos.

Cambiar el tamaño de una reserva

Puedes añadir o quitar franjas horarias de una reserva.

Consola

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el menú de navegación, haz clic en Gestión de la capacidad.

  3. Haz clic en la pestaña Reservas de espacios.

  4. Busca la reserva que quieras modificar.

  5. Abre la opción Acciones.

  6. Haz clic en Editar.

  7. En el cuadro de diálogo Selector de tamaño máximo de reserva, introduce el tamaño máximo de reserva.

  8. En el campo Ranuras de referencia, introduce el número de ranuras de referencia.

  9. Para desplegar la sección Configuración avanzada, haz clic en la flecha de expansión.

  10. Opcional: Para definir la simultaneidad de trabajos objetivo, activa el interruptor Anular la simultaneidad de trabajos objetivo automática e introduce la simultaneidad de trabajos objetivo.

  11. Haz clic en Guardar.

SQL

Para cambiar el tamaño de una reserva, usa la ALTER RESERVATION SET OPTIONSdeclaración del lenguaje de definición de datos (DDL).

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, introduce la siguiente instrucción:

    ALTER RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    SET OPTIONS (
      slot_capacity = NUMBER_OF_BASELINE_SLOTS,
      autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);

    Haz los cambios siguientes:

    • ADMIN_PROJECT_ID: el ID de proyecto del proyecto de administración que posee el recurso de reserva
    • LOCATION: la ubicación de la reserva, por ejemplo, europe-west9.
    • RESERVATION_NAME: el nombre de la reserva. El nombre solo puede contener caracteres alfanuméricos en minúscula o guiones, debe empezar por una letra y no puede terminar con un guion. Además, puede tener 64 caracteres como máximo.

    • NUMBER_OF_BASELINE_SLOTS: número de espacios de referencia que se asignarán a la reserva.
    • NUMBER_OF_AUTOSCALING_SLOTS: número de ranuras de autoescalado asignadas a la reserva. Es igual al valor del tamaño máximo de la reserva menos el número de espacios publicitarios de referencia.

  3. Haz clic en Ejecutar.

Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.

bq

Para actualizar el tamaño de una reserva, usa el comando bq update con la marca --reservation:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --slots=NUMBER_OF_BASELINE_SLOTS \
    --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \
    --reservation RESERVATION_NAME

Haz los cambios siguientes:

  • ADMIN_PROJECT_ID: el ID del proyecto
  • LOCATION: la ubicación de la reserva
  • NUMBER_OF_BASELINE_SLOTS: número de espacios publicitarios básicos que se asignarán a la reserva.
  • RESERVATION_NAME: el nombre de la reserva. El nombre solo puede contener caracteres alfanuméricos en minúscula o guiones, debe empezar por una letra y no puede terminar con un guion. Además, puede tener 64 caracteres como máximo.
  • NUMBER_OF_AUTOSCALING_SLOTS: número de ranuras de autoescalado asignadas a la reserva. Es igual al valor del tamaño máximo de la reserva menos el número de espacios publicitarios de referencia.

Python

Instala el paquete google-cloud-bigquery-reservation antes de usar este código de ejemplo. Crea un ReservationServiceClient. Describe las propiedades actualizadas con un Reservation y la propiedad FieldMask.paths. Actualiza la reserva con el método update_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the new number of slots in the
# reservation.
slot_capacity = 50

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)
from google.protobuf import field_mask_pb2

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation = reservation_types.Reservation(
    name=reservation_name,
    slot_capacity=slot_capacity,
)
field_mask = field_mask_pb2.FieldMask(paths=["slot_capacity"])
reservation = reservation_client.update_reservation(
    reservation=reservation, update_mask=field_mask
)

print(f"Updated reservation: {reservation.name}")
print(f"\tslot_capacity: {reservation.slot_capacity}")

Configurar si las consultas usan ranuras inactivas

La marca --ignore_idle_slots controla si las consultas que se ejecutan en una reserva pueden usar las ranuras inactivas de otras reservas. Para obtener más información, consulta la sección Ranuras inactivas. Puedes actualizar esta configuración en una reserva que ya tengas.

Para actualizar una reserva, usa el comando bq update con la marca --reservation . En el siguiente ejemplo se asigna true a --ignore_idle_slots, lo que significa que la reserva solo usará los espacios asignados a la reserva.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --ignore_idle_slots=true \
    --reservation RESERVATION_NAME

Haz los cambios siguientes:

  • ADMIN_PROJECT_ID: el ID del proyecto
  • LOCATION: la ubicación de la reserva
  • RESERVATION_NAME: el nombre de la reserva. El nombre solo puede contener caracteres alfanuméricos en minúscula o guiones, debe empezar por una letra y no puede terminar con un guion. Además, puede tener 64 caracteres como máximo.

Mostrar la configuración de espacios inactivos

Para consultar el ajuste Espacios inactivos de una reserva, sigue estos pasos:

SQL

Consulta la columna ignore_idle_slots de la vista INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT.

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, introduce la siguiente instrucción:

    SELECT
      reservation_name,
      ignore_idle_slots
    FROM
      `ADMIN_PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT;

    Haz los cambios siguientes:

    • ADMIN_PROJECT_ID: el ID del proyecto de administración que posee los recursos de reserva
    • LOCATION: la ubicación de las reservas

  3. Haz clic en Ejecutar.

Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.

bq

Usa el comando bq ls con la marca --reservation:

bq ls --reservation \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION

Haz los cambios siguientes:

  • ADMIN_PROJECT_ID: el ID del proyecto de administración que posee los recursos de reserva
  • LOCATION: la ubicación de las reservas

El campo ignoreIdleSlots contiene el ajuste de configuración.

Eliminar reservas

Cuando eliminas una reserva, las tareas que se estén ejecutando con los slots de esa reserva fallarán. Para evitar errores, permite que los trabajos en curso se completen antes de eliminar la reserva.

Permisos obligatorios

Para eliminar una reserva, necesita el siguiente permiso de gestión de identidades y accesos (IAM):

Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye este permiso:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Para obtener más información sobre los roles de gestión de identidades y accesos en BigQuery, consulta el artículo sobre roles y permisos predefinidos.

.

Eliminar una reserva

Consola

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el menú de navegación, haz clic en Gestión de la capacidad.

  3. Haz clic en la pestaña Reservas.

  4. Busca la reserva que quieras eliminar.

  5. Abre la opción Acciones.

  6. Haz clic en Eliminar.

  7. En el cuadro de diálogo Eliminar reserva, haz clic en Eliminar.

SQL

Para eliminar una reserva, utiliza la declaración de DDL DROP RESERVATION.

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, introduce la siguiente instrucción:

    DROP RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`;

    Haz los cambios siguientes:

  3. Haz clic en Ejecutar.

Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.

bq

Para eliminar una reserva, usa el comando bq rm con la marca --reservation:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation RESERVATION_NAME

Haz los cambios siguientes:

  • ADMIN_PROJECT_ID: el ID del proyecto de administración que tiene el recurso de reserva.
  • LOCATION: la ubicación de la reserva
  • RESERVATION_NAME: el nombre de la reserva. El nombre solo puede contener caracteres alfanuméricos en minúscula o guiones, debe empezar por una letra y no puede terminar con un guion. Además, puede tener 64 caracteres como máximo.

Python

Instala el paquete google-cloud-bigquery-reservation antes de usar este código de ejemplo. Crea un ReservationServiceClient. Elimina la reserva con el método delete_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)
reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation_client.delete_reservation(name=reservation_name)

print(f"Deleted reservation: {reservation_name}")

Controlar el acceso a las reservas

Para solicitar asistencia o enviar comentarios sobre esta función, ponte en contacto con bigquery-wlm-feedback@google.com.

Puedes controlar qué usuarios tienen acceso a determinadas reservas. Para que un usuario pueda anular una reserva en su consulta, debe tener el permiso reservations.use en esa reserva.

Permisos obligatorios

Para obtener el permiso que necesitas para especificar una reserva concreta para tu trabajo, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Editor de reservas (roles/bigquery.reservationEditor) en el recurso de reserva. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene el permiso reservations.use , que es necesario para especificar una reserva concreta para tu trabajo.

También puedes obtener este permiso con roles personalizados u otros roles predefinidos.

Controlar el acceso a una reserva

Para definir una condición de gestión de identidades y accesos (IAM) en una reserva, haz una de las siguientes acciones:

Consola

  1. En la consola, ve a la página Gestión de identidades y accesos. Google Cloud

    Ir a Gestión de identidades y accesos

  2. Selecciona un proyecto, una carpeta o una organización.

  3. Selecciona una cuenta principal a la que quieras asignar el rol bigquery.resourceEditor:

  • Para conceder el rol bigquery.resourceEditor a un principal que ya tiene otros roles en el recurso, busca una fila que contenga el principal, haz clic en Editar principal en esa fila y, a continuación, en Añadir otro rol.

  • Para conceder el rol bigquery.resourceEditor a una entidad de seguridad que no tenga ningún rol en el recurso, haz clic en Conceder acceso y, a continuación, introduce un identificador de la entidad de seguridad (por ejemplo, my-user@example.com).

  1. En la lista desplegable, selecciona el rol bigquery.resourceEditor que quieras asignar.
  2. Añade una condición al rol. Por ejemplo, puedes añadir una condición que asigne el rol a todas las reservas que terminen en /reservation1.
  3. Haz clic en Guardar. Se concede el rol a la entidad principal en el recurso.

bq

Para conceder acceso a la reserva, usa el comando bq set-iam-policy:

  bq set-iam-policy projects/project1/locations/US << EOF
  resource: "RESOURCE"
  policy {
    bindings {
      role: "roles/bigquery.resourceAdmin"
        members: "user:USER"
        condition {
          title: "title"
          expression: "EXPRESSION"
        }
      }
    }
  update_mask { paths: "bindings" }
  EOF

Haz los cambios siguientes:

  • RESOURCE: el nombre del recurso de reserva.
  • USER: el correo del usuario al que vas a asignar el rol.
  • EXPRESSION: la expresión en la que se basa la concesión del rol. Por ejemplo, resource.name.endsWith(\"/res1\")

Para obtener más información sobre IAM, consulta Gestionar el acceso a otros recursos.