ASSIGNMENT_CHANGES 檢視畫面

INFORMATION_SCHEMA.ASSIGNMENT_CHANGES 檢視畫面會列出管理專案中所有指派項目的變更,且近乎即時。每一列代表對單一指派項目的單一變更。如要進一步瞭解預留項目,請參閱「預留項目簡介」。

必要權限

如要查詢 INFORMATION_SCHEMA.ASSIGNMENT_CHANGES 檢視畫面,您需要專案的 bigquery.reservationAssignments.list 身分與存取權管理 (IAM) 權限。下列預先定義的 IAM 角色都包含必要權限:

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

如要進一步瞭解 BigQuery 權限,請參閱「使用身分與存取權管理功能控管存取權」一文。

結構定義

INFORMATION_SCHEMA.ASSIGNMENT_CHANGES 檢視表具有下列結構定義:

資料欄名稱 資料類型
change_timestamp TIMESTAMP 變更發生的時間。
project_id STRING 管理專案的 ID。
project_number INTEGER 管理專案的編號。
assignment_id STRING 可明確識別作業的 ID。
reservation_name STRING 指派項目使用的預留項目名稱。
job_type STRING 可使用保留項目的工作類型。可以是 PIPELINEQUERY
assignee_id STRING 唯一識別指派對象資源的 ID。
assignee_number INTEGER 可明確識別指派對象資源的號碼。
assignee_type STRING 指派對象資源的類型。可以是 organizationfolderproject
action STRING 指派作業發生的事件類型。可以是 CREATEUPDATEDELETE
user_email STRING 進行變更的使用者電子郵件地址或員工身分聯盟主體。google,瞭解 Google 進行的變更。NULL:如果電子郵件地址不明。
state STRING 指派狀態。可以是 PENDINGACTIVE

資料保留

這個檢視畫面會顯示目前的指派項目和已刪除的指派項目,這些項目最多會保留 41 天,之後就會從檢視畫面中移除。

範圍和語法

對這個檢視表執行的查詢必須包含區域限定詞。如未指定區域限定符,系統會從所有區域擷取中繼資料。下表說明這個檢視畫面的區域範圍:

檢視表名稱 資源範圍 區域範圍
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES[_BY_PROJECT] 專案層級 REGION
取代下列項目:
  • 選用:PROJECT_ID:您的 Google Cloud 專案 ID。如未指定,系統會使用預設專案。
  • REGION:任何資料集區域名稱。 例如:`region-us`

範例

查看作業的最新變更

以下範例會顯示在指定日期內,對特定作業進行最新指派更新的使用者。

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;

結果會類似如下:

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

找出特定時間點的預訂指派狀態

以下範例會顯示特定時間點的預訂項目所有有效指派項目。

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

更改下列內容:

  • REGION:預留項目所在的區域
  • RESERVATION_NAME:指派作業使用的預訂名稱
  • TIMESTAMP:代表檢查作業清單的特定時間點的時間戳記

結果會類似如下:

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

找出特定工作執行時的預訂指派狀態

如要顯示特定作業執行時的有效指派項目,請使用下列範例。

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

更改下列內容:

  • REGION:預留項目所在的區域
  • RESERVATION_NAME:指派作業使用的預訂名稱
  • PROJECT_ID:執行作業的 Google Cloud 專案 ID
  • JOB_ID:用來檢查指派狀態的作業 ID