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 |
ジョブのタイプ。QUERY 、LOAD 、EXTRACT 、COPY 、または null のいずれかです。ジョブタイプ null は、スクリプト ジョブ ステートメントの評価やマテリアライズド ビューの更新などの内部ジョブを示します。 |
statement_type |
STRING |
クエリ ステートメントのタイプ(有効な場合)。例: SELECT 、INSERT 、UPDATE 、または DELETE 。 |
job_creation_time |
TIMESTAMP |
(パーティショニング列)このジョブの作成時間。パーティショニングは、このタイムスタンプの UTC 時間に基づきます。 |
job_start_time |
TIMESTAMP |
このジョブの開始時間。 |
job_end_time |
TIMESTAMP |
このジョブの終了時間。 |
state |
STRING |
この期間の終了時点におけるジョブの実行状態。有効な状態には PENDING 、RUNNING 、DONE があります。 |
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 | +-----------------------+----------------+---------------------+---------------+--------------------+