Vista ASSIGNMENT_CHANGES

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

Autorização necessária

Para consultar a vista INFORMATION_SCHEMA.ASSIGNMENT_CHANGES, precisa da autorização de gestão de identidade e de acesso (IAM) para o projeto.bigquery.reservationAssignments.list Cada uma das seguintes funções de IAM predefinidas inclui a autorização necessária:

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

Para mais informações sobre as autorizações do BigQuery, consulte o artigo Controlo de acesso com a IAM.

Esquema

A vista INFORMATION_SCHEMA.ASSIGNMENT_CHANGES tem o seguinte esquema:

Nome da coluna Tipo de dados Valor
change_timestamp TIMESTAMP Hora 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 ID que identifica de forma exclusiva a atribuição.
reservation_name STRING Nome da reserva que a atribuição usa.
job_type STRING O tipo de trabalho que pode usar a reserva. Pode ser PIPELINE ou QUERY.
assignee_id STRING ID que identifica de forma exclusiva o recurso atribuído.
assignee_number INTEGER Número que identifica de forma exclusiva o recurso de cessionário.
assignee_type STRING Tipo de recurso do destinatário. 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 O endereço de email do utilizador ou o assunto da federação de identidades da força de trabalho que fez a alteração. google para alterações efetuadas pela Google. NULL se o endereço de email for desconhecido.
state STRING Estado da atribuição. Pode ser PENDING ou ACTIVE.

Retenção de dados

Esta vista contém atribuições atuais e atribuições eliminadas que são mantidas durante um máximo de 41 dias, após os quais são removidas da vista.

Âmbito e sintaxe

As consultas nesta vista têm de incluir um qualificador de região. Se não especificar um qualificador regional, os metadados são obtidos de todas as regiões. A tabela seguinte explica o âmbito da região para esta vista:

Nome da visualização de propriedade Âmbito do recurso Âmbito da região
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES[_BY_PROJECT] Nível do projeto REGION
Substitua o seguinte:
  • Opcional: PROJECT_ID: o ID do seu projeto do Trusted Cloud Google Cloud. Se não for especificado, é usado o projeto predefinido.
  • REGION: qualquer nome da região do conjunto de dados. Por exemplo, `region-us`.

Exemplos

Encontre as alterações mais recentes a uma atribuição

O exemplo seguinte apresenta o utilizador que fez a atualização de atribuição mais recente a uma atribuição específica dentro de uma data especificada.

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 é 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  |
+--------------------------------+-----------------------+--------------------+-----------------+

Identifique o estado de atribuição de uma reserva num momento específico

O exemplo seguinte apresenta todas as atribuições ativas de uma reserva num 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 o seguinte:

  • REGION: a região onde se encontra a sua reserva
  • RESERVATION_NAME: o nome da reserva que a atribuição usa
  • TIMESTAMP: a data/hora que representa o ponto específico no tempo em que a lista de atribuições é verificada

O resultado é 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 estado de atribuição de uma reserva quando um trabalho específico foi executado

Para apresentar as atribuições que estavam ativas quando uma determinada tarefa foi executada, use o exemplo seguinte.

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 o seguinte:

  • REGION: a região onde se encontra a sua reserva
  • RESERVATION_NAME: o nome da reserva que a atribuição usa
  • PROJECT_ID: o ID do seu Trusted Cloud projeto onde a tarefa foi executada
  • JOB_ID: o ID da tarefa em relação ao qual o estado da atribuição foi verificado