WRITE_API_TIMELINE 뷰

INFORMATION_SCHEMA.WRITE_API_TIMELINE 뷰에는 현재 프로젝트에 대한 분당 집계된 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분 간격으로 각 오류 코드가 발생합니다. 요청이 성공하면 오류 코드가 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분간 프로젝트 내 모든 테이블에 대해 실패한 총 요청의 분당 분석을 스트림 유형 및 오류 코드로 분할하여 계산합니다.

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: 오류 코드가 있는 모든 요청에 대한 분당 분석

다음 예시에서는 성공적이거나 실패한 추가 요청의 분당 분석을 오류 코트 카테고리로 분할하여 계산합니다. 이 쿼리는 대시보드를 채우는 데 사용할 수 있습니다.

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 수집 오류 비율

다음 예시에서는 특정 테이블에 대한 일일 오류 분석을 오류 코드로 분할하여 계산합니다.

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 |
+---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+