Visualização ASSIGNMENT_CHANGES

A visualização INFORMATION_SCHEMA.ASSIGNMENT_CHANGES contém uma lista quase em tempo real de todas as alterações nas atribuições no projeto de administração. Cada linha representa uma única alteração em uma única atribuição. Para mais informações sobre reserva, consulte Introdução às reservas.

Permissão necessária

Para consultar a visualização INFORMATION_SCHEMA.ASSIGNMENT_CHANGES, é preciso ter a permissão bigquery.reservationAssignments.list 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.ASSIGNMENT_CHANGES tem o seguinte esquema:

Nome da coluna Tipo de dados Valor
change_timestamp TIMESTAMP Horário em que a alteração ocorreu.
project_id STRING ID do projeto de administração.
project_number INTEGER Número do projeto de administração.
assignment_id STRING Código que identifica exclusivamente a atribuição.
reservation_name STRING Nome da reserva que a atribuição usa.
job_type STRING O tipo de job que pode usar a reserva. Pode ser PIPELINE ou QUERY.
assignee_id STRING Código que identifica exclusivamente o recurso do usuário.
assignee_number INTEGER Número que identifica exclusivamente o recurso atribuído.
assignee_type STRING Tipo de recurso atribuído. Pode ser organization, folder ou project.
action STRING Tipo de evento que ocorreu com a atribuição. Pode ser CREATE, UPDATE ou DELETE.
user_email STRING Endereço de e-mail do usuário ou usuário da federação de identidade da força de trabalho que fez a alteração. google para alterações feitas pelo Google. NULL se o endereço de e-mail for desconhecido.
state STRING Estado da atribuição. Pode ser PENDING ou ACTIVE.

Retenção de dados

Essa visualização contém as atribuições atuais e excluídas que são mantidas por, no máximo, 41 dias após o qual elas são removidas da visualização.

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.ASSIGNMENT_CHANGES[_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

Encontrar as mudanças mais recentes em uma atividade

O exemplo a seguir exibe o usuário que fez a atualização mais recente de uma atribuição específica em uma data específica.

SELECT
  user_email,
  change_timestamp,
  reservation_name,
  assignment_id
FROM
  `region-us`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES
WHERE
  change_timestamp BETWEEN '2021-09-30' AND '2021-10-01'
  AND assignment_id = 'assignment_01'
ORDER BY
  change_timestamp DESC
LIMIT 1;

O resultado será semelhante ao seguinte:

+--------------------------------+-----------------------+--------------------+-----------------+
|           user_email           |    change_timestamp   |  reservation_name  |  assignment_id  |
+--------------------------------+-----------------------+--------------------+-----------------+
|  cloudysanfrancisco@gmail.com  |2021-09-30 09:30:00 UTC|   my_reservation   |  assignment_01  |
+--------------------------------+-----------------------+--------------------+-----------------+

Identificar o status de atribuição de uma reserva em um momento específico

O exemplo a seguir mostra todas as atribuições ativas de uma reserva em um determinado momento.

SELECT
    reservation_name,
    assignee_id,
    assignee_type,
    job_type
FROM
    `region-REGION`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES
WHERE
    reservation_name = RESERVATION_NAME
    AND change_timestamp < TIMESTAMP
QUALIFY ROW_NUMBER() OVER(PARTITION BY assignee_id, job_type ORDER BY change_timestamp DESC) = 1
AND action != 'DELETE';

Substitua:

  • REGION: a região em que sua reserva está localizada
  • RESERVATION_NAME: o nome da reserva que a atribuição usa
  • TIMESTAMP: o carimbo de data/hora que representa o momento específico em que a lista de atribuições é verificada.

O resultado será semelhante ao seguinte:

+-------------------------+---------------------------+---------------+----------+
|    reservation_name     |        assignee_id        | assignee_type | job_type |
+-------------------------+---------------------------+---------------+----------+
| test-reservation        | project_1                 | PROJECT       | QUERY    |
| test-reservation        | project_2                 | PROJECT       | QUERY    |
+-------------------------+---------------------------+---------------+----------+

Identificar o status de atribuição de uma reserva quando um job específico foi executado

Para mostrar as atribuições que estavam ativas quando um determinado job foi executado, use o exemplo a seguir.

SELECT
    reservation_name,
    assignee_id,
    assignee_type,
    job_type
FROM
    `region-REGION`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES
WHERE
    reservation_name = RESERVATION_NAME
    AND change_timestamp < (SELECT creation_time FROM PROJECT_ID.`region-REGION`.INFORMATION_SCHEMA.JOBS WHERE job_id = JOB_ID)
QUALIFY ROW_NUMBER() OVER(PARTITION BY assignee_id, job_type ORDER BY change_timestamp DESC) = 1
AND action != 'DELETE';

Substitua:

  • REGION: a região em que sua reserva está localizada
  • RESERVATION_NAME: o nome da reserva que a atribuição usa
  • PROJECT_ID: o ID do seu Google Cloud projeto em que o job foi executado
  • JOB_ID: o ID do job em relação ao qual o status da atribuição foi verificado.