WRITE_API_TIMELINE ビュー
INFORMATION_SCHEMA.WRITE_API_TIMELINE
ビューには、現在のプロジェクトで 1 分ごとに集計された BigQuery Storage Write API 取り込み統計情報が含まれます。
INFORMATION_SCHEMA
Write API ビューにクエリを実行すると、BigQuery Storage Write API による BigQuery へのデータ取り込みに関する履歴情報とリアルタイム情報を取得できます。詳細については、BigQuery Storage Write API をご覧ください。
必要な権限
INFORMATION_SCHEMA.WRITE_API_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 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_PROJECT] |
プロジェクト レベル | REGION |
省略可: PROJECT_ID
: Google Cloud プロジェクトの ID。指定しない場合は、デフォルトのプロジェクトが使用されます。
REGION
: 任意のデータセット リージョン名。例: `region-us`
例
- 米国マルチリージョンのデータに対してクエリを実行するには、
`region-us`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_PROJECT
を使用します。 - EU マルチリージョンのデータに対してクエリを実行するには、
`region-eu`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_PROJECT
を使用します。 - asia-northeast1 リージョンのデータに対してクエリを実行するには、
`region-asia-northeast1`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_PROJECT
を使用します。
使用可能なリージョンの一覧については、データセットのロケーションをご覧ください。
例
例 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 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 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_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: テーブルの BigQuery Storage Write API 取り込みエラー率
次の例では、特定のテーブルに対して 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.WRITE_API_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 | OK | 41 | 252893 | 41 | | 2020-04-20 00:00:00 | my_project | my_dataset | my_table | OK | 2798 | 10688286 | 2798 | | 2020-04-19 00:00:00 | my_project | my_dataset | my_table | OK | 2005 | 7979495 | 2005 | | 2020-04-18 00:00:00 | my_project | my_dataset | my_table | OK | 2054 | 7972378 | 2054 | | 2020-04-17 00:00:00 | my_project | my_dataset | my_table | OK | 2056 | 6978079 | 2056 | | 2020-04-17 00:00:00 | my_project | my_dataset | my_table | INTERNAL | 4 | 10825 | 4 | +---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+