RESERVATIONS_TIMELINE ビュー

INFORMATION_SCHEMA.RESERVATIONS_TIMELINE ビューには、各予約管理プロジェクトの予約メタデータの 1 分ごとのニア リアルタイム タイムスライスが表示されます。スロットの使用状況とスロット容量を比較するには、予約タイムライン ビューを使用して、予約情報とジョブのタイムラインを組み合わせることができます。

スキーマ

INFORMATION_SCHEMA.RESERVATIONS_TIMELINE_BY_* ビューに対してクエリを実行すると、クエリ結果として、過去 180 日間に行われたすべての BigQuery の分単位の行が表示され、180 日より前に行われた BigQuery 予約では分単位の行に予約変更が示されます。各期間は整数分の時点で開始し、厳密に 1 分間継続します。

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

列名 データ型
period_start TIMESTAMP この 1 分間の開始時刻。
project_id STRING 予約管理プロジェクトの ID。
project_number INTEGER プロジェクトの番号。
reservation_name STRING 予約の名前。
ignore_idle_slots BOOL スロット共有が有効になっている場合は false、それ以外の場合は true。
slots_assigned INTEGER この予約に割り当てられているスロットの数。
slots_max_assigned INTEGER この予約の最大スロット容量(スロット共有を含む)。ignore_idle_slots が true の場合は slots_assigned と同じです。それ以外の場合は、管理プロジェクトのすべての容量コミットメントのスロットの合計数です。
autoscale STRUCT

予約の自動スケーリング容量に関する情報。次のようなフィールドが含まれます。

  • current_slots: 自動スケーリングによって予約に追加されるスロットの数。
  • max_slots: 自動スケーリングによって予約に追加できるスロットの最大数。
reservation_id STRING jobs_timeline テーブルと結合します。形式は、project_id:location.reservation_name です。

スコープと構文

このビューに対するクエリでは、リージョン修飾子を指定する必要があります。リージョン修飾子を指定しない場合、メタデータはすべてのリージョンで取得されます。次の表に、このビューのリージョン スコープとリソース スコープを示します。

ビュー名 リソース スコープ リージョン スコープ
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE[_BY_PROJECT] プロジェクト レベル 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         |
+-----------------------+----------------+---------------------+---------------+--------------------+