ASSIGNMENT_CHANGES ビュー

INFORMATION_SCHEMA.ASSIGNMENT_CHANGES ビューには、管理プロジェクト内の割り当てに対するすべての変更を準リアルタイムで示すリストが含まれます。各行は 1 つの割り当てに対する 1 つの変更を表します。予約の詳細については、予約の概要をご覧ください。

必要な権限

INFORMATION_SCHEMA.ASSIGNMENT_CHANGES ビューをクエリするには、プロジェクトの bigquery.reservationAssignments.list Identity and Access Management(IAM)権限が必要です。次に示す事前定義された各 IAM ロールには、必要な権限が含まれています。

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

BigQuery の権限の詳細については、IAM でのアクセス制御をご覧ください。

スキーマ

INFORMATION_SCHEMA.ASSIGNMENT_CHANGES ビューのスキーマは次のとおりです。

列名 データ型
change_timestamp TIMESTAMP 変更が発生した時刻。
project_id STRING 管理プロジェクトの ID。
project_number INTEGER 管理プロジェクトの番号。
assignment_id STRING 割り当てを一意に識別する ID。
reservation_name STRING 割り当てが使用する予約の名前。
job_type STRING 予約に使用できるジョブの種類。PIPELINE または QUERY のいずれかです。
assignee_id STRING 割り当て先リソースを一意に識別する ID。
assignee_number INTEGER 割り当て先リソースを一意に識別する番号。
assignee_type STRING 割り当て先リソースの種類。organizationfolderproject のいずれかです。
action STRING 割り当てで発生したイベントの種類。CREATEUPDATE、または DELETE のいずれかです。
user_email STRING 変更を行ったユーザーまたは Workforce Identity 連携のサブジェクトのメールアドレス。Google による変更の場合は google。メールアドレスが不明な場合は NULL
state STRING 割り当てのステータス。PENDING または ACTIVE のいずれかです。

データの保持

このビューには、現在の割り当てと、削除された割り当てが最大 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