Vista ASSIGNMENT_CHANGES

La vista INFORMATION_SCHEMA.ASSIGNMENT_CHANGES contiene una lista casi en tiempo real de todos los cambios realizados en las asignaciones del proyecto de administración. Cada fila representa un cambio en una tarea. Para obtener más información sobre las reservas, consulta el artículo Introducción a las reservas.

Permiso obligatorio

Para consultar la vista INFORMATION_SCHEMA.ASSIGNMENT_CHANGES, necesitas el permiso de gestión de identidades y accesos (IAM) bigquery.reservationAssignments.listdel proyecto. Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye el permiso necesario:

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

Para obtener más información sobre los permisos de BigQuery, consulta Control de acceso con gestión de identidades y accesos.

Esquema

La vista INFORMATION_SCHEMA.ASSIGNMENT_CHANGES tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor
change_timestamp TIMESTAMP Hora en la que se produjo el cambio.
project_id STRING ID del proyecto de administración.
project_number INTEGER Número del proyecto de administración.
assignment_id STRING ID que identifica de forma única la tarea.
reservation_name STRING Nombre de la reserva que usa la asignación.
job_type STRING El tipo de trabajo que puede usar la reserva. Puede ser PIPELINE o QUERY.
assignee_id STRING ID que identifica de forma exclusiva el recurso asignado.
assignee_number INTEGER Número que identifica de forma exclusiva el recurso asignado.
assignee_type STRING Tipo de recurso asignado. Puede ser organization, folder o project.
action STRING Tipo de evento que se ha producido con la asignación. Puede ser CREATE, UPDATE o DELETE.
user_email STRING Dirección de correo del usuario o asunto de la federación de identidades de la plantilla que ha realizado el cambio. google para ver los cambios que ha hecho Google. NULL si la dirección de correo no se conoce.
state STRING Estado de la asignación. Puede ser PENDING o ACTIVE.

Conservación de datos

Esta vista contiene las tareas actuales y las eliminadas, que se conservan durante un máximo de 41 días. Después, se quitan de la vista.

Ámbito y sintaxis

Las consultas en esta vista deben incluir un calificador de región. Si no especifica un calificador regional, los metadatos se recuperan de todas las regiones. En la siguiente tabla se explica el ámbito de la región de esta vista:

Nombre de la vista Ámbito de los recursos Ámbito de la región
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES[_BY_PROJECT] Nivel de proyecto REGION
Sustituye lo siguiente:
  • Opcional: PROJECT_ID: el ID de tu Google Cloud proyecto. Si no se especifica, se usa el proyecto predeterminado.
  • REGION: cualquier nombre de región del conjunto de datos. Por ejemplo, `region-us`.

Ejemplos

Buscar los últimos cambios en una tarea

En el siguiente ejemplo se muestra el usuario que ha hecho la última actualización de una tarea concreta en una fecha 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;

El resultado es similar al siguiente:

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

Identificar el estado de asignación de una reserva en un momento concreto

En el siguiente ejemplo se muestran todas las asignaciones activas de una reserva en un momento determinado.

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';

Haz los cambios siguientes:

  • REGION: la región en la que se encuentra tu reserva
  • RESERVATION_NAME: el nombre de la reserva que usa la asignación
  • TIMESTAMP: la marca de tiempo que representa el momento específico en el que se comprueba la lista de asignaciones.

El resultado es similar al siguiente:

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

Identificar el estado de asignación de una reserva cuando se ejecutó un trabajo concreto

Para mostrar las asignaciones que estaban activas cuando se ejecutó un trabajo determinado, usa el siguiente ejemplo.

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';

Haz los cambios siguientes:

  • REGION: la región en la que se encuentra tu reserva
  • RESERVATION_NAME: el nombre de la reserva que usa la asignación
  • PROJECT_ID: el ID del proyecto Google Cloud en el que se ha ejecutado el trabajo
  • JOB_ID: el ID del trabajo con el que se ha comprobado el estado de la asignación