Visualização da RESERVATIONS_TIMELINE

A visualização INFORMATION_SCHEMA.RESERVATIONS_TIMELINE mostra tempos quase em tempo real dos metadados de reserva para cada projeto de administrador de reserva a cada minuto. Para comparar o uso de slots com a capacidade de slots, é possível combinar as informações de reserva com o cronograma de jobs usando a visualização do cronograma de reservas.

Esquema

Quando você consulta as visualizações INFORMATION_SCHEMA.RESERVATIONS_TIMELINE_BY_*, os resultados da consulta contêm uma linha para cada minuto de cada reserva do BigQuery nos últimos 180 dias e uma linha para cada minuto com mudanças de reserva para ocorrências com mais de 180 dias. Cada período começa no intervalo de um minuto cheio e dura exatamente um minuto.

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

Nome da coluna Tipo de dados Valor
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.
ignore_idle_slots BOOL Falso se o compartilhamento de slots estiver ativado. Caso contrário, será verdadeiro.
period_start TIMESTAMP Horário de início deste período de um minuto.
project_id STRING ID do projeto de administrador da reserva.
project_number INTEGER Número do projeto.
reservation_id STRING Para mesclar com a tabela jobs_timeline. Ele está no formato project_id:location.reservation_name.
reservation_name STRING O nome da reserva.
slots_assigned INTEGER O número de slots atribuídos a esta reserva.
slots_max_assigned INTEGER A capacidade máxima de slots dessa reserva, incluindo o compartilhamento de slots. Se ignore_idle_slots for verdadeiro, é o mesmo que slots_assigned. Caso contrário, será o número total de slots em todos os compromissos de capacidade no projeto administrativo.

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 a região e o escopo de recursos dessa visualização:

Nome da visualização Escopo do recurso Escopo da região
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE[_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`.

  • Exemplos

    Exemplo: ver o uso total de slots por minuto.

    Para executar a consulta em um projeto diferente do projeto padrão, adicione o ID do projeto no seguinte formato:

    `PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
    . Exemplo, `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION.

    O exemplo a seguir mostra o uso de slots a cada minuto por projetos atribuídos a YOUR_RESERVATION_ID em todos os jobs.

    SELECT
      res.period_start,
      SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes,
      ANY_VALUE(res.slots_assigned) AS slot_assigned,
      ANY_VALUE(res.slots_max_assigned) AS slots_max_assigned
    FROM
      `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs
    JOIN
      `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res
      ON
        TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start
        AND jobs.reservation_id = res.reservation_id
    WHERE
      jobs.job_creation_time
        BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
        AND CURRENT_TIMESTAMP()
      AND res.reservation_id = 'YOUR_RESERVATION_ID'
      AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL)  -- Avoid duplicate byte counting in parent and children jobs.
    GROUP BY
      period_start
    ORDER BY
      period_start DESC;

    O resultado será semelhante ao seguinte:

    +-----------------------+---------------------+---------------+-------------------+
    |     period_start      | period_slot_minutes | slots_assigned| slots_max_assigned|
    +-----------------------+---------------------+---------------+-------------------+
    |2021-06-08 21:33:00 UTC|       100.000       |      100      |        100        |
    |2021-06-08 21:32:00 UTC|        96.753       |      100      |        100        |
    |2021-06-08 21:31:00 UTC|        41.668       |      100      |        100        |
    +-----------------------+---------------------+---------------+-------------------+
    

    Exemplo: uso de slots por reserva.

    O exemplo a seguir mostra o uso de slots a cada minuto por cada reserva no último dia.

    SELECT
      res.period_start,
      res.reservation_id,
      SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes,
      ANY_VALUE(res.slots_assigned) AS slots_assigned,
      ANY_VALUE(res.slots_max_assigned) AS slots_max_assigned,
    FROM
      `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs
    JOIN
      `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res
      ON TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start
         AND jobs.reservation_id = res.reservation_id
    WHERE
      jobs.job_creation_time
      BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
      AND CURRENT_TIMESTAMP()
      AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL)  -- Avoid duplicate byte counting in parent and children jobs.
    GROUP BY
      period_start,
      reservation_id
    ORDER BY
      period_start DESC,
      reservation_id;

    O resultado será semelhante ao seguinte:

    +-----------------------+----------------+---------------------+---------------+--------------------+
    |     period_start      | reservation_id | period_slot_minutes | slot_assigned | slots_max_assigned |
    +-----------------------+----------------+---------------------+---------------+--------------------+
    |2021-06-08 21:33:00 UTC|     prod01     |       100.000       |      100      |        100         |
    |2021-06-08 21:33:00 UTC|     prod02     |       177.201       |      200      |        500         |
    |2021-06-08 21:32:00 UTC|     prod01     |        96.753       |      100      |        100         |
    |2021-06-08 21:32:00 UTC|     prod02     |       182.329       |      200      |        500         |
    +-----------------------+----------------+---------------------+---------------+--------------------+