JOBS_TIMELINE_BY_ORGANIZATION 檢視畫面

INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION 檢視畫面會根據時間切片,顯示與目前專案相關聯的組織中提交的所有工作,近乎即時的 BigQuery 中繼資料。這個檢視畫面包含目前執行中和已完成的工作。

所需權限

如要查詢 INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION 檢視畫面,您必須具備該機構的 bigquery.jobs.listAll 身分與存取權管理 (IAM) 權限。以下每個預先定義的 IAM 角色都包含必要的權限:

  • 機構層級的 BigQuery 資源管理員
  • 機構擁有者
  • 機構管理員

JOBS_BY_ORGANIZATION 架構表格僅供已定義Google Cloud 機構的使用者使用。

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

結構定義

查詢 INFORMATION_SCHEMA.JOBS_TIMELINE_BY_* 檢視表時,每個 BigQuery 工作執行的每秒,在查詢結果中都會有一個資料列。每個期間都會以整秒間隔開始,並持續一秒鐘。

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

資料欄名稱 資料類型
period_start TIMESTAMP 這個期間的開始時間。
period_slot_ms INTEGER 這段期間消耗的運算單元時間 (毫秒)。
project_id STRING (叢集欄) 專案 ID。
project_number INTEGER 專案編號。
folder_numbers REPEATED INTEGER 包含專案的資料夾 ID,從直接包含專案的資料夾開始,接著是包含子資料夾的資料夾,以此類推。舉例來說,如果 `folder_numbers` 是 `[1, 2, 3]`,則資料夾 `1` 會立即包含專案,資料夾 `2` 包含 `1`,而資料夾 `3` 則包含 `2`。
user_email STRING (叢集資料欄) 執行工作的使用者電子郵件地址或服務帳戶。
job_id STRING 工作 ID。例如 bquxjob_1234
job_type STRING 工作類型。可以是 QUERYLOADEXTRACTCOPYnull。工作類型 null 表示內部工作,例如指令碼工作陳述式評估或物化檢視畫面重新整理。
statement_type STRING 查詢陳述式的類型 (如果有效)。例如 SELECTINSERTUPDATEDELETE
priority STRING 這項工作的優先順序。有效值包括 INTERACTIVEBATCH
parent_job_id STRING 父項工作 ID (如果有的話)。
job_creation_time TIMESTAMP (分區欄) 這項工作的建立時間。分區作業會以這個時間戳記的世界標準時間為準。
job_start_time TIMESTAMP 這項工作的開始時間。
job_end_time TIMESTAMP 這項工作的結束時間。
state STRING 工作在這個期間結束時的執行狀態。有效的狀態包括 PENDINGRUNNINGDONE
reservation_id STRING 在這個期間結束時,指派給這項工作的主要預留項目名稱 (如適用)。
edition STRING 與指派給此工作的預留項目相關聯的版本。如要進一步瞭解版本,請參閱「BigQuery 版本簡介」。
total_bytes_billed INTEGER 如果專案已設定為使用依用量計價,則這個欄位會包含工作所產生的總位元組數。如果專案已設定為使用固定費率定價,則不會產生位元組費用。這個欄位無法設定。
total_bytes_processed INTEGER 工作處理的位元組總數。
error_result RECORD 錯誤詳細資料 (如有) 為 ErrorProto.
cache_hit BOOLEAN 這個工作查詢結果是否來自快取。
period_shuffle_ram_usage_ratio FLOAT 所選時間範圍內的重組用量比率。
period_estimated_runnable_units INTEGER 可在這個期間立即排定的作業單元。只要預訂中沒有其他查詢需要額外運算單元,這些工作單元的額外運算單元就能加快查詢速度。

資料保留

這個檢視畫面包含目前執行中的工作,以及過去 180 天的作業歷史記錄。

範圍和語法

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

檢視表名稱 資源範圍 區域範圍
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION 包含指定專案的機構 REGION
替換下列內容:
  • 選用:PROJECT_ID: Google Cloud 專案的 ID。如果未指定,系統會使用預設專案。
  • REGION:任一資料集區域名稱。例如:`region-us`

範例

範例:查看每分鐘的運算單元總用量

如要對預設專案以外的專案執行查詢,請使用下列格式新增專案 ID:

`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
。例如:`myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION

以下範例顯示在所有工作中,指派給 YOUR_RESERVATION_ID 的專案每分鐘的時間分配用量:

SELECT
  res.period_start,
  SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes,
  ANY_VALUE(res.slots_assigned) AS rough_slots_assigned,
  ANY_VALUE(res.slots_max_assigned) AS rough_slots_max_assigned
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs
JOIN
  `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res
  ON
    TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start
    AND jobs.reservation_id = res.reservation_id
WHERE
  jobs.job_creation_time
    BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
    AND CURRENT_TIMESTAMP()
  AND res.reservation_id = 'YOUR_RESERVATION_ID'
  AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL)  -- Avoid duplicate byte counting in parent and children jobs.
GROUP BY
  period_start
ORDER BY
  period_start DESC;

結果大致如下:

+-----------------------+---------------------+---------------------+-------------------------+
|     period_start      | period_slot_minutes | rough_slots_assigned| rough_slots_max_assigned|
+-----------------------+---------------------+---------------------+-------------------------+
|2021-06-08 21:33:00 UTC|       100.000       |         100         |           100           |
|2021-06-08 21:32:00 UTC|        96.753       |         100         |           100           |
|2021-06-08 21:31:00 UTC|        41.668       |         100         |           100           |
+-----------------------+---------------------+---------------------+-------------------------+

範例:預留項目的運算單元用量

以下範例顯示過去 1 天內每個保留項目每分鐘的運算單元用量:

SELECT
  res.period_start,
  res.reservation_id,
  SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes,
  ANY_VALUE(res.slots_assigned) AS rough_slots_assigned,
  ANY_VALUE(res.slots_max_assigned) AS rough_slots_max_assigned,
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs
JOIN
  `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res
  ON TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start
     AND jobs.reservation_id = res.reservation_id
WHERE
  jobs.job_creation_time
  BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
  AND CURRENT_TIMESTAMP()
  AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL)  -- Avoid duplicate byte counting in parent and children jobs.
GROUP BY
  period_start,
  reservation_id
ORDER BY
  period_start DESC,
  reservation_id;

結果大致如下:

+-----------------------+----------------+---------------------+----------------------+--------------------------+
|     period_start      | reservation_id | period_slot_minutes | rough_slots_assigned | rough_slots_max_assigned |
+-----------------------+----------------+---------------------+----------------------+--------------------------+
|2021-06-08 21:33:00 UTC|     prod01     |       100.000       |             100      |              100         |
|2021-06-08 21:33:00 UTC|     prod02     |       177.201       |             200      |              500         |
|2021-06-08 21:32:00 UTC|     prod01     |        96.753       |             100      |              100         |
|2021-06-08 21:32:00 UTC|     prod02     |       182.329       |             200      |              500         |
+-----------------------+----------------+---------------------+----------------------+--------------------------+