ASSIGNMENT_CHANGES view
The INFORMATION_SCHEMA.ASSIGNMENT_CHANGES view contains a near real-time list
of all changes to assignments within the administration project. Each row
represents a single change to a single assignment. For more information about
reservation, see Introduction to Reservations.
Required permission
To query the INFORMATION_SCHEMA.ASSIGNMENT_CHANGES view, you need the
bigquery.reservationAssignments.list Identity and Access Management (IAM) permission for
the project.
Each of the following predefined IAM roles includes the required
permission:
roles/bigquery.resourceAdminroles/bigquery.resourceEditorroles/bigquery.resourceViewerroles/bigquery.userroles/bigquery.admin
For more information about BigQuery permissions, see Access control with IAM.
Schema
The INFORMATION_SCHEMA.ASSIGNMENT_CHANGES view has the following
schema:
| Column name | Data type | Value | 
|---|---|---|
change_timestamp | 
      TIMESTAMP | 
      Time when the change occurred. | 
project_id | 
      STRING | 
      ID of the administration project. | 
project_number | 
      INTEGER | 
      Number of the administration project. | 
assignment_id | 
      STRING | 
      ID that uniquely identifies the assignment. | 
reservation_name | 
      STRING | 
      Name of the reservation that the assignment uses. | 
job_type | 
      STRING | 
      The type of job that can use the reservation. Can be
        PIPELINE or QUERY. | 
    
assignee_id | 
      STRING | 
      ID that uniquely identifies the assignee resource. | 
assignee_number | 
      INTEGER | 
      Number that uniquely identifies the assignee resource. | 
assignee_type | 
      STRING | 
      Type of assignee resource. Can be organization,
        folder or project. | 
    
action | 
      STRING | 
      Type of event that occurred with the assignment. Can be
        CREATE, UPDATE, or DELETE. | 
    
user_email | 
      STRING | 
      Email address of the user or subject of the workforce identity
        federation that made the change. google for changes
        made by Google. NULL if the email address is unknown.
       | 
    
state | 
      STRING | 
      State of the assignment. Can be PENDING or
        ACTIVE. | 
    
Data retention
This view contains current assignments and deleted assignments that are kept for a maximum of 41 days after which they are removed from the view.
Scope and syntax
Queries against this view must include a region qualifier. If you do not specify a regional qualifier, metadata is retrieved from all regions. The following table explains the region scope for this view:
| View name | Resource scope | Region scope | 
|---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES[_BY_PROJECT] | 
  Project level | REGION | 
  
- 
  Optional: 
PROJECT_ID: the ID of your Google Cloud project. If not specified, the default project is used. - 
  
REGION: any dataset region name. For example,`region-us`. 
Examples
Find the latest changes to an assignment
The following example displays the user who has made the latest assignment update to a particular assignment within a specified date.
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;
The result is similar to the following:
+--------------------------------+-----------------------+--------------------+-----------------+ | user_email | change_timestamp | reservation_name | assignment_id | +--------------------------------+-----------------------+--------------------+-----------------+ | cloudysanfrancisco@gmail.com |2021-09-30 09:30:00 UTC| my_reservation | assignment_01 | +--------------------------------+-----------------------+--------------------+-----------------+
Identify the assignment status of a reservation at a specific point in time
The following example displays all of the active assignments of a reservation at a certain point in time.
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';
Replace the following:
REGION: the region where your reservation is locatedRESERVATION_NAME: the name of the reservation that the assignment usesTIMESTAMP: the timestamp representing the specific point in time at which the list of assignments is checked
The result is similar to the following:
+-------------------------+---------------------------+---------------+----------+ | reservation_name | assignee_id | assignee_type | job_type | +-------------------------+---------------------------+---------------+----------+ | test-reservation | project_1 | PROJECT | QUERY | | test-reservation | project_2 | PROJECT | QUERY | +-------------------------+---------------------------+---------------+----------+
Identify the assignment status of a reservation when a particular job was executed
To display the assignments that were active when a certain job was executed, use the following example.
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';
Replace the following:
REGION: the region where your reservation is locatedRESERVATION_NAME: the name of the reservation that the assignment usesPROJECT_ID: the ID of your Google Cloud project where the job was executedJOB_ID: the job ID against which the assignment status was checked