Vista WRITE_API_TIMELINE
La vista INFORMATION_SCHEMA.WRITE_API_TIMELINE
contiene estadísticas de transferencia de la API de BigQuery Storage Write agregadas por minuto para el proyecto actual.
Puedes consultar las vistas de la API de Write INFORMATION_SCHEMA
para recuperar información histórica y en tiempo real sobre la transferencia de datos a BigQuery que usa la API de BigQuery Storage Write. Consulta la API de BigQuery Storage Write para obtener más información.
Permiso necesario
Para consultar la vista INFORMATION_SCHEMA.WRITE_API_TIMELINE
, necesitas el permiso bigquery.tables.list
de Identity and Access Management (IAM) para el proyecto.
Cada uno de los siguientes roles predefinidos de IAM incluye el permiso requerido:
roles/bigquery.user
roles/bigquery.dataViewer
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.metadataViewer
roles/bigquery.resourceAdmin
roles/bigquery.admin
Para obtener más información sobre IAM de BigQuery, consulta Control de acceso con IAM.
Esquema
Cuando consultas las vistas de la API de BigQuery Storage Write INFORMATION_SCHEMA
, los resultados de la consulta contienen información histórica y en tiempo real sobre la transferencia de datos a BigQuery mediante la API de BigQuery Storage Write. Cada fila de las siguientes vistas representa estadísticas para transferir en una tabla específica, agregada durante un intervalo de un minuto a partir de start_timestamp
. Las estadísticas se agrupan por tipo de transmisión y código de error, por lo que habrá una fila para cada tipo de transmisión y cada código de error encontrado durante el intervalo de un minuto para cada marca de tiempo y combinación de tablas. Las solicitudes que se realizan de forma correcta tienen el código de error establecido en OK
. Si no se transfiere ningún dato en una tabla durante un período determinado, no hay filas presentes para las marcas de tiempo correspondientes de esa tabla.
Las vistas INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_*
tienen el siguiente esquema:
Nombre de la columna | Tipo de datos | Valor |
---|---|---|
start_timestamp |
TIMESTAMP |
(Columna de partición) marca de tiempo de inicio del intervalo de 1 minuto para las estadísticas agregadas. |
project_id |
STRING |
(Columna de agrupamiento en clústeres) ID del proyecto. |
project_number |
INTEGER |
Número del proyecto |
dataset_id |
STRING |
(Columna de agrupamiento en clústeres) ID del conjunto de datos. |
table_id |
STRING |
(Columna de agrupamiento en clústeres) ID de la tabla. |
stream_type |
STRING |
El tipo de transmisión que se usa para la transferencia de datos con la API de BigQuery Storage Write. Se supone que debe ser "DEFAULT", "COMMITTED", "BUFFERED" o "PENDING". |
error_code |
STRING |
Código de error que esta fila muestra en las solicitudes especificadas. “OK” para las solicitudes correctas. |
total_requests |
INTEGER |
Cantidad total de solicitudes en el intervalo de 1 minuto. |
total_rows |
INTEGER |
Cantidad total de filas de todas las solicitudes en el intervalo de 1 minuto. |
total_input_bytes |
INTEGER |
Cantidad total de bytes de todas las filas en el intervalo de 1 minuto. |
Retención de datos
Esta vista contiene el historial de transferencias de la API de BigQuery Storage Write de los últimos 180 días.
Permiso y sintaxis
Las consultas realizadas a esta vista deben incluir un calificador de región. Si no especificas un calificador regional, los metadatos se recuperan de todas las regiones. En la siguiente tabla, se explica el permiso de la región para esta vista:
Nombre de la vista | Permiso del recurso | Permiso de la región |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.WRITE_API_TIMELINE[_BY_PROJECT] |
Nivel de proyecto | REGION |
Opcional: PROJECT_ID
: el ID del proyecto de Google Cloud. Si no se especifica, se usa el proyecto predeterminado.
REGION
: Cualquier nombre de región del conjunto de datos.
Por ejemplo, `region-us`
.
Ejemplo
- Para consultar datos en la multirregión de EE.UU., usa
`region-us`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_PROJECT
. - Para consultar datos en la multirregión de la UE, usa
`region-eu`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_PROJECT
. - Para consultar datos en la región asia-northeast1, usa
`region-asia-northeast1`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_PROJECT
.
Si deseas obtener una lista de las regiones disponibles, consulta Ubicaciones de conjuntos de datos.
Ejemplos
Ejemplo 1: Fallas recientes de transferencia de la API de BigQuery Storage Write
En el siguiente ejemplo, se calcula el desglose por minuto del total de solicitudes que fallaron para todas las tablas del proyecto en los últimos 30 minutos, dividido por tipo de transmisión y código de error:
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;
El resultado es similar al siguiente:
+---------------------+-------------+------------------+---------------------+ | 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 | +---------------------+-------------+------------------+---------------------+
Ejemplo 2: Desglose por minuto para todas las solicitudes con códigos de error
En el ejemplo siguiente, se calcula un desglose por minuto de solicitudes de agregado correctas y fallidas, divididas en categorías de código de error. Esta consulta se podría usar para propagar un panel.
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;
El resultado es similar al siguiente:
+---------------------+----------------+------------+-------------------+------------+--------------+-------------+ | 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 | +---------------------+----------------+------------+-------------------+------------+--------------+-------------+
Ejemplo 3: Tablas con más tráfico entrante
En el siguiente ejemplo, se muestran las estadísticas de transferencia de la API de BigQuery Storage Write para las 10 tablas con más tráfico entrante:
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;
El resultado es similar al siguiente:
+----------------------+------------+-------------------------------+------------+----------------+--------------+ | 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 | +----------------------+------------+-------------------------------+------------+----------------+--------------+
Ejemplo 4: Proporción de errores de transferencia de la API de BigQuery Storage Write para una tabla
En el siguiente ejemplo, se calcula un desglose de errores por día de una tabla específica, dividido por código de error:
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;
El resultado es similar al siguiente:
+---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+ | 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 | +---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+