WRITE_API_TIMELINE_BY_FOLDER ビュー

INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER ビューには、現在のプロジェクトの親フォルダ(サブフォルダを含む)に対する BigQuery Storage Write API 取り込みについて 1 分ごとに集計された統計情報が含まれます。

INFORMATION_SCHEMA Write API ビューにクエリを実行すると、BigQuery Storage Write API による BigQuery へのデータ取り込みに関する履歴情報とリアルタイム情報を取得できます。詳細については、BigQuery Storage Write API をご覧ください。

必要な権限

INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER ビューをクエリするには、プロジェクトの親フォルダに対する bigquery.tables.list Identity and Access Management(IAM)権限が必要です。

次の各 IAM 事前定義ロールには、上の権限が含まれています。

  • roles/bigquery.admin
  • roles/bigquery.user
  • roles/bigquery.dataViewer
  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.metadataViewer
  • roles/bigquery.resourceAdmin

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

スキーマ

INFORMATION_SCHEMA BigQuery Storage Write API ビューにクエリを実行すると、クエリ結果には、BigQuery Storage Write API による BigQuery へのデータ取り込みに関する履歴情報とリアルタイムの情報が含まれます。次のビューの各行は、特定のテーブルへの取り込みの統計情報を表します(集計は start_timestamp から始まり、1 分ごとに実行されています)。統計情報はストリーム タイプとエラーコードでグループ化されます。このめた、タイムスタンプとテーブルの組み合わせに対して、ストリーム タイプと 1 分間隔で検出されたエラーコードごとに 1 行が生成されます。リクエストに成功すると、エラーコードは OK に設定されます。特定の期間中にテーブルにデータが取り込まれなかった場合、そのテーブルに対応するタイムスタンプの行は存在しません。

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

列名 データ型
start_timestamp TIMESTAMP (パーティショニング列)集計された統計情報の 1 分ごとの開始タイムスタンプ。
project_id STRING (クラスタリング列)プロジェクトの ID。
project_number INTEGER プロジェクトの番号。
dataset_id STRING (クラスタリング列)データセットの ID。
table_id STRING (クラスタリング列)テーブルの ID。
stream_type STRING BigQuery Storage Write API を使用したデータの取り込みで使用されるストリームの種類。DEFAULT、COMMITTED、BUFFERED、PENDING のいずれかになります。
error_code STRING この行で指定されたリクエストに対して返されるエラーコード。リクエストが成功した場合は「OK」です。
total_requests INTEGER 1 分間ごとのすべてのリクエストの合計数。
total_rows INTEGER 1 分間ごとのすべてのリクエストの合計行数。
total_input_bytes INTEGER 1 分間ごとのすべての行からの合計バイト数。

データの保持

このビューには、過去 180 日間の BigQuery Storage Write API 取り込みの履歴が表示されます。

スコープと構文

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

ビュー名 リソース スコープ リージョン スコープ
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER 指定したプロジェクトを含むフォルダ REGION
次のように置き換えます。

  • 省略可: PROJECT_ID: Google Cloud プロジェクトの ID。指定しない場合は、デフォルトのプロジェクトが使用されます。

  • 米国マルチリージョンのデータに対してクエリを実行するには、region-us.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER を使用します。
  • EU マルチリージョンのデータに対してクエリを実行するには、region-eu.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER を使用します。
  • asia-northeast1 リージョンのデータに対してクエリを実行するには、region-asia-northeast1.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER を使用します。

使用可能なリージョンの一覧については、データセットのロケーションをご覧ください。

例 1: 最近の BigQuery Storage Write API の取り込みエラー

次の例では、過去 30 分間にプロジェクトのフォルダ内の全テーブルで失敗したリクエストの合計数に対し 1 分ごとの内訳を計算して、ストリームの種類とエラーコードごとに分類します。

SELECT
  start_timestamp,
  stream_type,
  error_code,
  SUM(total_requests) AS num_failed_requests
FROM
  `region-us`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER
WHERE
  error_code != 'OK'
  AND start_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 30 MINUTE)
GROUP BY
  start_timestamp,
  stream_type,
  error_code
ORDER BY
  start_timestamp DESC;

次のような結果になります。

+---------------------+-------------+------------------+---------------------+
|   start_timestamp   | stream_type |    error_code    | num_failed_requests |
+---------------------+-------------+------------------+---------------------+
| 2023-02-24 00:25:00 | PENDING     | NOT_FOUND        |                   5 |
| 2023-02-24 00:25:00 | DEFAULT     | INVALID_ARGUMENT |                   1 |
| 2023-02-24 00:25:00 | DEFAULT     | DEADLINE_EXCEEDED|                   4 |
| 2023-02-24 00:24:00 | PENDING     | INTERNAL         |                   3 |
| 2023-02-24 00:24:00 | DEFAULT     | INVALID_ARGUMENT |                   1 |
| 2023-02-24 00:24:00 | DEFAULT     | DEADLINE_EXCEEDED|                   2 |
+---------------------+-------------+------------------+---------------------+
例 2: エラーコードを含むすべてのリクエストの 1 分あたりの内訳

次の例では、プロジェクトのフォルダ内の成功した追加リクエストと失敗した追加リクエストの 1 分あたりの内訳を計算し、エラーコードのカテゴリごとに分類します。このクエリを使用してダッシュボードにデータを入力できます。

SELECT
  start_timestamp,
  SUM(total_requests) AS total_requests,
  SUM(total_rows) AS total_rows,
  SUM(total_input_bytes) AS total_input_bytes,
  SUM(
    IF(
      error_code IN (
        'INVALID_ARGUMENT', 'NOT_FOUND', 'CANCELLED', 'RESOURCE_EXHAUSTED',
        'ALREADY_EXISTS', 'PERMISSION_DENIED', 'UNAUTHENTICATED',
        'FAILED_PRECONDITION', 'OUT_OF_RANGE'),
      total_requests,
      0)) AS user_error,
  SUM(
    IF(
      error_code IN (
        'DEADLINE_EXCEEDED','ABORTED', 'INTERNAL', 'UNAVAILABLE',
        'DATA_LOSS', 'UNKNOWN'),
      total_requests,
      0)) AS server_error,
  SUM(IF(error_code = 'OK', 0, total_requests)) AS total_error,
FROM
  `region-us`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER
GROUP BY
  start_timestamp
ORDER BY
  start_timestamp DESC;

次のような結果になります。

+---------------------+----------------+------------+-------------------+------------+--------------+-------------+
|   start_timestamp   | total_requests | total_rows | total_input_bytes | user_error | server_error | total_error |
+---------------------+----------------+------------+-------------------+------------+--------------+-------------+
| 2020-04-15 22:00:00 |         441854 |     441854 |       23784853118 |          0 |           17 |          17 |
| 2020-04-15 21:59:00 |         355627 |     355627 |       26101982742 |          8 |            0 |          13 |
| 2020-04-15 21:58:00 |         354603 |     354603 |       26160565341 |          0 |            0 |           0 |
| 2020-04-15 21:57:00 |         298823 |     298823 |       23877821442 |          2 |            0 |           2 |
+---------------------+----------------+------------+-------------------+------------+--------------+-------------+
例 3: 受信トラフィックが最も多いテーブル

次の例では、プロジェクトのフォルダで受信トラフィックが最も多い 10 個のテーブルに対する BigQuery Storage Write API の取り込み統計情報を返します。

SELECT
  project_id,
  dataset_id,
  table_id,
  SUM(total_rows) AS num_rows,
  SUM(total_input_bytes) AS num_bytes,
  SUM(total_requests) AS num_requests
FROM
  `region-us`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER
GROUP BY
  project_id,
  dataset_id,
  table_id
ORDER BY
  num_bytes DESC
LIMIT 10;

次のような結果になります。

+----------------------+------------+-------------------------------+------------+----------------+--------------+
|      project_id      | dataset_id |           table_id            |  num_rows  |   num_bytes    | num_requests |
+----------------------+------------+-------------------------------+------------+----------------+--------------+
| my-project1          | dataset1   | table1                        | 8016725532 | 73787301876979 |   8016725532 |
| my-project2          | dataset1   | table2                        |   26319580 | 34199853725409 |     26319580 |
| my-project1          | dataset2   | table1                        |   38355294 | 22879180658120 |     38355294 |
| my-project3          | dataset1   | table3                        |  270126906 | 17594235226765 |    270126906 |
| my-project2          | dataset2   | table2                        |   95511309 | 17376036299631 |     95511309 |
| my-project2          | dataset2   | table3                        |   46500443 | 12834920497777 |     46500443 |
| my-project3          | dataset2   | table4                        |   25846270 |  7487917957360 |     25846270 |
| my-project4          | dataset1   | table4                        |   18318404 |  5665113765882 |     18318404 |
| my-project4          | dataset1   | table5                        |   42829431 |  5343969665771 |     42829431 |
| my-project4          | dataset1   | table6                        |    8771021 |  5119004622353 |      8771021 |
+----------------------+------------+-------------------------------+------------+----------------+--------------+