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