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.