Vista WRITE_API_TIMELINE_BY_ORGANIZATION

La vista INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_ORGANIZATION contiene estadísticas de streaming agregadas por minuto de toda la organización asociada al proyecto actual.

Puedes consultar las INFORMATION_SCHEMAvistas de la API Write para obtener información histórica y en tiempo real sobre la ingestión de datos en BigQuery que usa la API Storage Write de BigQuery. Para obtener más información, consulta la API Storage Write de BigQuery.

Permiso obligatorio

Para consultar la vista INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_ORGANIZATION, necesitas el permiso bigquery.tables.list de gestión de identidades y accesos (IAM) de la organización.

Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye el permiso necesario:

  • roles/bigquery.admin
  • roles/bigquery.user
  • roles/bigquery.dataViewer
  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.metadataViewer
  • roles/bigquery.resourceAdmin

Para obtener más información sobre los permisos de BigQuery, consulta Control de acceso con gestión de identidades y accesos.

Esquema

Cuando consultas las vistas de la API Storage Write de BigQuery, los resultados de la consulta contienen información histórica y en tiempo real sobre la ingestión de datos en BigQuery mediante la API Storage Write de BigQuery.INFORMATION_SCHEMA Cada fila de las siguientes vistas representa las estadísticas de la ingesta en una tabla específica, agregadas en un intervalo de un minuto que empieza a las start_timestamp. Las estadísticas se agrupan por tipo de flujo y código de error, por lo que habrá una fila por cada tipo de flujo y por cada código de error detectado durante el intervalo de un minuto de cada combinación de marca de tiempo y tabla. Las solicitudes correctas tienen el código de error definido como OK. Si no se han insertado datos en una tabla durante un periodo determinado, no habrá filas con las marcas de tiempo correspondientes en esa tabla.

Las vistas de INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_* tienen el siguiente esquema:

Nombre de la columna Tipo de datos Valor
start_timestamp TIMESTAMP Marca de tiempo de inicio del intervalo de 1 minuto de las estadísticas agregadas.(Columna de partición)
project_id STRING ID del proyecto(columna de clustering).
project_number INTEGER Número del proyecto.
dataset_id STRING ID de la columna de clustering del conjunto de datos.
table_id STRING ID de la columna de clustering de la tabla.
stream_type STRING El tipo de flujo usado para la ingestión de datos con la API Storage Write de BigQuery. Debe ser uno de los siguientes valores: "DEFAULT", "COMMITTED", "BUFFERED" o "PENDING".
error_code STRING Código de error devuelto para las solicitudes especificadas en esta fila. "OK" para solicitudes correctas.
total_requests INTEGER Número total de solicitudes en el intervalo de 1 minuto.
total_rows INTEGER Número total de filas de todas las solicitudes del intervalo de 1 minuto.
total_input_bytes INTEGER Número total de bytes de todas las filas del intervalo de 1 minuto.

Conservación de datos

Esta vista contiene el historial de streaming de los últimos 180 días.

Ámbito y sintaxis

Las consultas en esta vista deben incluir un calificador de región. Si no especifica un calificador regional, los metadatos se recuperan de todas las regiones. En la siguiente tabla se explica el ámbito de la región de esta vista:

Nombre de la vista Ámbito de los recursos Ámbito de la región
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_ORGANIZATION Organización que contiene el proyecto especificado REGION
Sustituye lo siguiente:
  • Opcional: PROJECT_ID: el ID de tu Google Cloud proyecto. 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_ORGANIZATION
  • Para consultar datos en la multirregión de la UE, usa `region-eu`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_ORGANIZATION
  • Para consultar datos de la región asia-northeast1, usa `region-asia-northeast1`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_ORGANIZATION

Para ver una lista de las regiones disponibles, consulta Ubicaciones de conjuntos de datos.

Ejemplos

Ejemplo 1: Fallos recientes de ingestión de la API Storage Write de BigQuery

En el siguiente ejemplo se calcula el desglose por minuto del total de solicitudes fallidas de todas las tablas de la organización del proyecto en los últimos 30 minutos, desglosado por 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_BY_ORGANIZATION
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 de todas las solicitudes con códigos de error

En el siguiente ejemplo se calcula un desglose por minuto de las solicitudes de anexión completadas y no completadas de la organización del proyecto, divididas en categorías de códigos de error. Esta consulta se puede usar para rellenar un panel de control.

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_BY_FOLDER
GROUP BY
  start_timestamp
ORDER BY
  start_timestamp DESC;

El resultado es similar al siguiente:

+---------------------+----------------+------------+-------------------+-------------+------------+--------------+-------------+
|   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 |           5 |          8 |            0 |          13 |
| 2020-04-15 21:58:00 |         354603 |     354603 |       26160565341 |           0 |          0 |            0 |           0 |
| 2020-04-15 21:57:00 |         298823 |     298823 |       23877821442 |           0 |          2 |            0 |           2 |
+---------------------+----------------+------------+-------------------+-------------+------------+--------------+-------------+
Ejemplo 3: Tablas con el tráfico entrante más alto

En el siguiente ejemplo se devuelven las estadísticas de ingestión de la API Storage Write de BigQuery de las 10 tablas de la organización del proyecto 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_ORGANIZATION
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-project1          | dataset1   | table1                        | 8016725532 | 73787301876979 |   8016725532 |
| my-project2          | dataset1   | table2                        |   26319580 | 34199853725409 |     26319580 |
| my-project1          | dataset2   | table1                        |   38355294 | 22879180658120 |     38355294 |
| my-project3          | dataset1   | table3                        |  270126906 | 17594235226765 |    270126906 |
| my-project2          | dataset2   | table2                        |   95511309 | 17376036299631 |     95511309 |
| my-project2          | dataset2   | table3                        |   46500443 | 12834920497777 |     46500443 |
| my-project3          | dataset2   | table4                        |   25846270 |  7487917957360 |     25846270 |
| my-project4          | dataset1   | table4                        |   18318404 |  5665113765882 |     18318404 |
| my-project4          | dataset1   | table5                        |   42829431 |  5343969665771 |     42829431 |
| my-project4          | dataset1   | table6                        |    8771021 |  5119004622353 |      8771021 |
+----------------------+------------+-------------------------------+------------+----------------+--------------+