JOBS_TIMELINE_BY_ORGANIZATION ビュー

INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION ビューには、現在のプロジェクトに関連する組織で送信されたすべてのジョブのタイムスライスごとの、ニア リアルタイムの BigQuery メタデータが含まれます。このビューには、現在実行中のジョブと完了したジョブが表示されます。

必要な権限

INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION ビューをクエリするには、組織の bigquery.jobs.listAll Identity and Access Management(IAM)権限が必要です。次に示す各 IAM の事前定義ロールには、必要な権限が含まれています。

  • 組織レベルの BigQuery リソース管理者
  • 組織オーナー
  • 組織管理者

JOBS_BY_ORGANIZATION スキーマ テーブルは、Google Cloud 組織が定義されているユーザーのみが使用できます。

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

スキーマ

INFORMATION_SCHEMA.JOBS_TIMELINE_BY_* ビューに対してクエリを実行すると、クエリ結果にすべての BigQuery ジョブについて 1 秒ごとの実行結果を示す行が 1 行ずつ表示されます。各期間は整数秒の時点で開始し、厳密に 1 秒間継続します。

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

列名 データ型
period_start TIMESTAMP この期間の開始時間。
period_slot_ms INTEGER この期間に使用したスロットのミリ秒数。
period_shuffle_ram_usage_ratio FLOAT 選択した期間のシャッフル使用率。
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 ジョブのタイプ。QUERYLOADEXTRACTCOPY、または null のいずれかです。ジョブタイプ null は、スクリプト ジョブ ステートメントの評価やマテリアライズド ビューの更新などの内部ジョブを示します。
statement_type STRING クエリ ステートメントのタイプ(有効な場合)。例: SELECTINSERTUPDATE、または DELETE
job_creation_time TIMESTAMP (パーティショニング列)このジョブの作成時間。パーティショニングは、このタイムスタンプの UTC 時間に基づきます。
job_start_time TIMESTAMP このジョブの開始時間。
job_end_time TIMESTAMP このジョブの終了時間。
state STRING この期間の終了時点におけるジョブの実行状態。有効な状態には PENDINGRUNNINGDONE があります。
reservation_id STRING この期間の終了時点でこのジョブに割り当てられているメイン予約の名前(該当する場合)。
total_bytes_processed INTEGER ジョブによって処理された合計バイト数。
error_result RECORD ErrorProto. としてのエラー(ある場合)の詳細。
cache_hit BOOLEAN このジョブのクエリ結果がキャッシュから取得されたかどうか。
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

例: 1 分あたりのスロットの合計使用量を確認する

デフォルト プロジェクト以外のプロジェクトに対してクエリを実行するには、次の形式でプロジェクト ID を追加します。

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

次の例は、すべてのジョブで YOUR_RESERVATION_ID に割り当てられたプロジェクトの 1 分あたりのスロットの使用状況を示しています。

SELECT
  res.period_start,
  SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes,
  ANY_VALUE(res.slots_assigned) AS slot_assigned,
  ANY_VALUE(res.slots_max_assigned) AS 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 | slots_assigned| 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 slots_assigned,
  ANY_VALUE(res.slots_max_assigned) AS 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 | slot_assigned | 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         |
+-----------------------+----------------+---------------------+---------------+--------------------+