Vista de STREAMING_TIMELINE

La vista INFORMATION_SCHEMA.STREAMING_TIMELINE contiene estadísticas de transmisión agregadas por minuto para el proyecto actual.

Puedes consultar las vistas de transmisión INFORMATION_SCHEMA para recuperar información histórica y en tiempo real sobre la transmisión de datos a BigQuery, en la que se usa el método tabledata.insertAll heredado y no la API de escritura de BigQuery Storage. Para obtener más información sobre la transmisión de datos a BigQuery, consulta Transmite datos a BigQuery.

Permiso necesario

Para consultar la vista INFORMATION_SCHEMA.STREAMING_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 transmisión INFORMATION_SCHEMA, los resultados de la consulta contienen información histórica y en tiempo real sobre la transmisión de datos a BigQuery. Cada fila de las siguientes vistas representa estadísticas para transmitir en una tabla específica, agregada durante un intervalo de un minuto a partir de start_timestamp. Las estadísticas se agrupan por código de error, por lo que habrá una fila para cada código de error encontrado durante el intervalo de un minuto por 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 NULL. Si no se transmite 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.STREAMING_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.
error_code STRING Código de error que esta fila muestra en las solicitudes especificadas. NULL 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 transmisión 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.STREAMING_TIMELINE[_BY_PROJECT] Nivel de proyecto REGION
Reemplaza lo siguiente:

  • 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. Un ejemplo es region-us.

Ejemplo

  • Para consultar datos en la multirregión de EE.UU., usa `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT.
  • Para consultar datos en la multirregión de la UE, usa `region-eu`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT.
  • Para consultar datos en la región asia-northeast1, usa `region-asia-northeast1`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT.

Si deseas obtener una lista de las regiones disponibles, consulta Ubicaciones de conjuntos de datos.

Ejemplos

Ejemplo 1: Fallas de transmisión recientes

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 código de error.

SELECT
  start_timestamp,
  error_code,
  SUM(total_requests) AS num_failed_requests
FROM
  `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
WHERE
  error_code IS NOT NULL
  AND start_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 30 MINUTE)
GROUP BY
  start_timestamp,
  error_code
ORDER BY
  start_timestamp DESC;

El resultado es similar al siguiente:

+---------------------+------------------+---------------------+
|   start_timestamp   |    error_code    | num_failed_requests |
+---------------------+------------------+---------------------+
| 2020-04-15 20:55:00 | INTERNAL_ERROR   |                  41 |
| 2020-04-15 20:41:00 | CONNECTION_ERROR |                   5 |
| 2020-04-15 20:30:00 | INTERNAL_ERROR   |                 115 |
+---------------------+------------------+---------------------+
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 transmisión 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 ('QUOTA_EXCEEDED', 'RATE_LIMIT_EXCEEDED'),
      total_requests,
      0)) AS quota_error,
  SUM(
    IF(
      error_code IN (
        'INVALID_VALUE', 'NOT_FOUND', 'SCHEMA_INCOMPATIBLE',
        'BILLING_NOT_ENABLED', 'ACCESS_DENIED', 'UNAUTHENTICATED'),
      total_requests,
      0)) AS user_error,
  SUM(
    IF(
      error_code IN ('CONNECTION_ERROR','INTERNAL_ERROR'),
      total_requests,
      0)) AS server_error,
  SUM(IF(error_code IS NULL, 0, total_requests)) AS total_error,
FROM
  `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
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 |           0 |          0 |            0 |           0 |
| 2020-04-15 21:58:00 |         354603 |     354603 |       26160565341 |           0 |          0 |            0 |           0 |
| 2020-04-15 21:57:00 |         298823 |     298823 |       23877821442 |           0 |          0 |            0 |           0 |
+---------------------+----------------+------------+-------------------+-------------+------------+--------------+-------------+
Ejemplo 3: Tablas con más tráfico entrante

En el siguiente ejemplo, se muestran las estadísticas de transmisión de 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.STREAMING_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 transmisión en 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.STREAMING_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 | NULL           |       41 |    252893 |           41 |
| 2020-04-20 00:00:00 | my_project  | my_dataset | my_table | NULL           |     2798 |  10688286 |         2798 |
| 2020-04-19 00:00:00 | my_project  | my_dataset | my_table | NULL           |     2005 |   7979495 |         2005 |
| 2020-04-18 00:00:00 | my_project  | my_dataset | my_table | NULL           |     2054 |   7972378 |         2054 |
| 2020-04-17 00:00:00 | my_project  | my_dataset | my_table | NULL           |     2056 |   6978079 |         2056 |
| 2020-04-17 00:00:00 | my_project  | my_dataset | my_table | INTERNAL_ERROR |        4 |     10825 |            4 |
+---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+