STREAMING_TIMELINE ビュー
INFORMATION_SCHEMA.STREAMING_TIMELINE
ビューには、現在のプロジェクトの 1 分ごとに集計されたストリーミング統計情報が含まれます。
INFORMATION_SCHEMA
ストリーミング ビューにクエリを実行し、レガシー tabledata.insertAll
メソッドを使用する、BigQuery Storage Write API ではないデータの BigQuery へのストリーミングに関する履歴情報とリアルタイム情報を取得できます。BigQuery へのデータのストリーミングの詳細については、BigQuery へのデータのストリーミングをご覧ください。
必要な権限
INFORMATION_SCHEMA.STREAMING_TIMELINE
ビューをクエリするには、プロジェクトの bigquery.tables.list
Identity and Access Management(IAM)権限が必要です。
次に示す事前定義された各 IAM ロールには、必要な権限が含まれています。
roles/bigquery.user
roles/bigquery.dataViewer
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.metadataViewer
roles/bigquery.resourceAdmin
roles/bigquery.admin
BigQuery の権限の詳細については、IAM でのアクセス制御をご覧ください。
スキーマ
INFORMATION_SCHEMA
ストリーミング ビューにクエリを実行すると、クエリ結果に、BigQuery へのデータのストリーミングに関する履歴情報とリアルタイム情報が含まれます。次のビューの各行は、start_timestamp
から開始する 1 分ごとに集計された、特定のテーブルへのストリーミングの統計を表します。統計情報はエラーコード別にグルーピングされます。タイムスタンプとテーブルの組み合わせごとに、1 分間で発生したエラーコード別に 1 行ずつ表示されます。リクエストに成功すると、エラーコードは NULL
に設定されます。特定の期間中にテーブルにデータがストリーミングされなかった場合、そのテーブルに対応するタイムスタンプの行は存在しません。
INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_*
ビューのスキーマは次のとおりです。
列名 | データ型 | 値 |
---|---|---|
start_timestamp |
TIMESTAMP |
(パーティショニング列)集計された統計情報の 1 分ごとの開始タイムスタンプ。 |
project_id |
STRING |
(クラスタリング列)プロジェクトの ID。 |
project_number |
INTEGER |
プロジェクトの番号。 |
dataset_id |
STRING |
(クラスタリング列)データセットの ID。 |
table_id |
STRING |
(クラスタリング列)テーブルの ID。 |
error_code |
STRING |
この行で指定されたリクエストに対して返されるエラーコード。リクエストが成功した場合は NULL。 |
total_requests |
INTEGER |
1 分間ごとのすべてのリクエストの合計数。 |
total_rows |
INTEGER |
1 分間ごとのすべてのリクエストの合計行数。 |
total_input_bytes |
INTEGER |
1 分間ごとのすべての行からの合計バイト数。 |
データの保持
このビューには、過去 180 日間のストリーミング履歴が含まれます。
スコープと構文
このビューに対するクエリでは、リージョン修飾子を指定する必要があります。リージョン修飾子を指定しない場合、メタデータはすべてのリージョンで取得されます。次の表で、このビューのリージョン スコープを説明します。
ビュー名 | リソース スコープ | リージョン スコープ |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.STREAMING_TIMELINE[_BY_PROJECT] |
プロジェクト レベル | REGION |
- 省略可:
PROJECT_ID
: Google Cloud プロジェクトの ID。指定しない場合は、デフォルトのプロジェクトが使用されます。
REGION
: 任意のデータセット リージョン名。例:`region-us`
例
- 米国マルチリージョンのデータに対してクエリを実行するには、
`region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
を使用します。 - EU マルチリージョンのデータに対してクエリを実行するには、
`region-eu`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
を使用します。 - asia-northeast1 リージョンのデータに対してクエリを実行するには、
`region-asia-northeast1`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
を使用します。
使用可能なリージョンの一覧については、データセットのロケーションをご覧ください。
例
例 1: 最近のストリーミング エラー
次の例では、過去 30 分間にプロジェクト内の全テーブルで失敗したリクエストの合計数に対し 1 分ごとの内訳を計算して、エラーコードごとに分類します。
SELECT start_timestamp, error_code, SUM(total_requests) AS num_failed_requests FROM `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT WHERE error_code IS NOT NULL AND start_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 30 MINUTE) GROUP BY start_timestamp, error_code ORDER BY start_timestamp DESC;
次のような結果になります。
+---------------------+------------------+---------------------+ | start_timestamp | error_code | num_failed_requests | +---------------------+------------------+---------------------+ | 2020-04-15 20:55:00 | INTERNAL_ERROR | 41 | | 2020-04-15 20:41:00 | CONNECTION_ERROR | 5 | | 2020-04-15 20:30:00 | INTERNAL_ERROR | 115 | +---------------------+------------------+---------------------+
例 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 ('QUOTA_EXCEEDED', 'RATE_LIMIT_EXCEEDED'), total_requests, 0)) AS quota_error, SUM( IF( error_code IN ( 'INVALID_VALUE', 'NOT_FOUND', 'SCHEMA_INCOMPATIBLE', 'BILLING_NOT_ENABLED', 'ACCESS_DENIED', 'UNAUTHENTICATED'), total_requests, 0)) AS user_error, SUM( IF( error_code IN ('CONNECTION_ERROR','INTERNAL_ERROR'), total_requests, 0)) AS server_error, SUM(IF(error_code IS NULL, 0, total_requests)) AS total_error, FROM `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT GROUP BY start_timestamp ORDER BY start_timestamp DESC;
次のような結果になります。
+---------------------+----------------+------------+-------------------+-------------+------------+--------------+-------------+ | start_timestamp | total_requests | total_rows | total_input_bytes | quota_error | user_error | server_error | total_error | +---------------------+----------------+------------+-------------------+-------------+------------+--------------+-------------+ | 2020-04-15 22:00:00 | 441854 | 441854 | 23784853118 | 0 | 0 | 17 | 17 | | 2020-04-15 21:59:00 | 355627 | 355627 | 26101982742 | 0 | 0 | 0 | 0 | | 2020-04-15 21:58:00 | 354603 | 354603 | 26160565341 | 0 | 0 | 0 | 0 | | 2020-04-15 21:57:00 | 298823 | 298823 | 23877821442 | 0 | 0 | 0 | 0 | +---------------------+----------------+------------+-------------------+-------------+------------+--------------+-------------+
例 3: 受信トラフィックが最も多いテーブル
次の例では、受信トラフィックが最も多い 10 個のテーブルのストリーミング統計情報を返します。
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.STREAMING_TIMELINE_BY_PROJECT 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-project | dataset1 | table1 | 8016725532 | 73787301876979 | 8016725532 | | my-project | dataset1 | table2 | 26319580 | 34199853725409 | 26319580 | | my-project | dataset2 | table1 | 38355294 | 22879180658120 | 38355294 | | my-project | dataset1 | table3 | 270126906 | 17594235226765 | 270126906 | | my-project | dataset2 | table2 | 95511309 | 17376036299631 | 95511309 | | my-project | dataset2 | table3 | 46500443 | 12834920497777 | 46500443 | | my-project | dataset2 | table4 | 25846270 | 7487917957360 | 25846270 | | my-project | dataset1 | table4 | 18318404 | 5665113765882 | 18318404 | | my-project | dataset1 | table5 | 42829431 | 5343969665771 | 42829431 | | my-project | dataset1 | table6 | 8771021 | 5119004622353 | 8771021 | +----------------------+------------+-------------------------------+------------+----------------+--------------+
例 4: テーブルのストリーミング エラー率
次の例では、特定のテーブルに対して 1 日あたりのエラーの内訳を計算し、エラーコードごとに分類します。
SELECT TIMESTAMP_TRUNC(start_timestamp, DAY) as day, project_id, dataset_id, table_id, error_code, SUM(total_rows) AS num_rows, SUM(total_input_bytes) AS num_bytes, SUM(total_requests) AS num_requests FROM `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT WHERE table_id LIKE 'my_table' GROUP BY project_id, dataset_id, table_id, error_code, day ORDER BY day, project_id, dataset_id DESC;
次のような結果になります。
+---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+ | day | project_id | dataset_id | table_id | error_code | num_rows | num_bytes | num_requests | +---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+ | 2020-04-21 00:00:00 | my_project | my_dataset | my_table | NULL | 41 | 252893 | 41 | | 2020-04-20 00:00:00 | my_project | my_dataset | my_table | NULL | 2798 | 10688286 | 2798 | | 2020-04-19 00:00:00 | my_project | my_dataset | my_table | NULL | 2005 | 7979495 | 2005 | | 2020-04-18 00:00:00 | my_project | my_dataset | my_table | NULL | 2054 | 7972378 | 2054 | | 2020-04-17 00:00:00 | my_project | my_dataset | my_table | NULL | 2056 | 6978079 | 2056 | | 2020-04-17 00:00:00 | my_project | my_dataset | my_table | INTERNAL_ERROR | 4 | 10825 | 4 | +---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+