Visualização de RESERVAS

A visualização INFORMATION_SCHEMA.RESERVATIONS contém uma lista quase em tempo real de todas as reservas atuais no projeto de administração. Cada linha representa uma única reserva atual. Uma reserva atual é uma reserva que não foi excluída. Para mais informações sobre reservas, consulte Introdução às reservas.

Permissão necessária

Para consultar a visualização INFORMATION_SCHEMA.RESERVATIONS, você precisa da permissão bigquery.reservations.list do Identity and Access Management (IAM) para o projeto. Cada um dos seguintes papéis predefinidos do IAM inclui a permissão necessária:

  • roles/bigquery.resourceAdmin
  • roles/bigquery.resourceEditor
  • roles/bigquery.resourceViewer
  • roles/bigquery.user
  • roles/bigquery.admin

Para mais informações sobre as permissões do BigQuery, consulte Controle de acesso com o IAM.

Esquema

A visualização INFORMATION_SCHEMA.RESERVATIONS tem o seguinte esquema:

Nome da coluna Tipo de dados Valor
ddl STRING A instrução DDL usada para criar essa reserva.
project_id STRING ID do projeto de administração.
project_number INTEGER Número do projeto de administração.
reservation_name STRING Nome de reserva fornecido pelo usuário.
ignore_idle_slots BOOL Se for falso, qualquer consulta que usa essa reserva poderá usar slots ociosos de outros compromissos de capacidade.
slot_capacity INTEGER Valor de referência da reserva.
target_job_concurrency INTEGER O número desejado de consultas que podem ser executadas simultaneamente, limitado pelos recursos disponíveis. Se for zero, esse valor será calculado automaticamente com base nos recursos disponíveis.
autoscale STRUCT

Informações sobre a capacidade de escalonamento automático da reserva. Os campos incluem:

  • current_slots: o número de slots adicionados à reserva pelo escalonamento automático.
  • max_slots: o número máximo de slots que podem ser adicionados à reserva pelo escalonamento automático.
edition STRING A edição associada a esta reserva. Para mais informações sobre edições, consulte Introdução às edições do BigQuery.

Escopo e sintaxe

As consultas nessa visualização precisam incluir um qualificador de região. Se você não especificar um qualificador regional, os metadados serão recuperados de todas as regiões. A tabela a seguir explica o escopo da região dessa visualização:

Nome da visualização Escopo do recurso Escopo da região
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS[_BY_PROJECT] Nível do projeto REGION
Substitua:

  • Opcional: PROJECT_ID: o ID do seu projeto do Google Cloud. Se não for especificado, o projeto padrão será usado.
+ REGION: qualquer nome da região do conjunto de dados. Por exemplo, region-us.

Como mesclar as visualizações de reserva e de job

As visualizações de job contêm a coluna reservation_id. Se o job for executado em um projeto com uma reserva atribuída a ele, reservation_id seguirá este formato: reservation-admin-project:reservation-location.reservation-name.

Para mesclar entre as visualizações de reserva e de job, é possível mesclar entre a coluna de visualizações de jobreservation_id e as colunas de visualizações de reserva. project_id e reservation_name de dados. O exemplo a seguir mostra um uso da cláusula JOIN entre a reserva e as visualizações do job.

Exemplo

O exemplo a seguir mostra o uso do slot, a capacidade do slot e a reserva atribuída para um projeto com uma atribuição de reserva na última hora. O uso do slot é fornecido em unidades de milissegundos de slot por segundo.

WITH
  job_data AS (
  SELECT
    job.period_start,
    job.reservation_id,
    job.period_slot_ms,
    job.job_id,
    job.job_type
  FROM
    `my-project.region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE AS job
  WHERE
    job.period_start > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR))
SELECT
  reservation.reservation_name AS reservation_name,
  job.period_start,
  reservation.slot_capacity,
  job.period_slot_ms,
  job.job_id,
  job.job_type
FROM
  job_data AS job
INNER JOIN
  `reservation-admin-project.region-us`.INFORMATION_SCHEMA.RESERVATIONS AS reservation
ON
  (job.reservation_id = CONCAT(reservation.project_id, ":", "US", ".", reservation.reservation_name));

A resposta será semelhante a:

+------------------+---------------------+---------------+----------------+------------------+----------+
| reservation_name |    period_start     | slot_capacity | period_slot_ms |           job_id | job_type |
+------------------+---------------------+---------------+----------------+------------------+----------+
| my_reservation   | 2021-04-30 17:30:54 |           100 |          11131 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:55 |           100 |          49978 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:56 |           100 |           9038 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:57 |           100 |          17237 | bquxjob_66707... | QUERY    |

Essa consulta usa a visualização RESERVATIONS para acessar informações de reserva. Caso as reservas tenham sido alteradas na última hora, a coluna reservation_slot_capacity talvez seja imprecisa.

A consulta une RESERVATIONS a JOBS_TIMELINE para associar as frações de tempo do job às informações de reserva.