Obtén metadatos de transmisión mediante INFORMATION_SCHEMA

INFORMATION_SCHEMA es una serie de vistas que proporcionan acceso a metadatos sobre conjuntos de datos, rutinas, tablas, vistas, trabajos, reservas y datos de transmisión.

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. Estas vistas contienen estadísticas agregadas por minuto para cada tabla que tienen datos transmitidos en ellas. Para obtener más información sobre la transmisión de datos a BigQuery, consulta Transmite datos a BigQuery.

Permisos necesarios

Para recuperar los metadatos de transmisión mediante las tablas de INFORMATION_SCHEMA, se requieren permisos con alcance adecuado:

  • STREAMING_TIMELINE_BY_PROJECT requiere bigquery.tables.list para el proyecto y está disponible en las funciones BigQuery User, BigQuery Data Viewer, BigQuery Data Editor, BigQuery Data Owner, BigQuery Metadata Viewer, BigQuery Resource Admin y BigQuery Admin.
  • STREAMING_TIMELINE_BY_ORGANIZATION requiere bigquery.tables.list para la organización y está disponible para las funciones BigQuery User, BigQuery Data Viewer, BigQuery Data Editor, BigQuery Data Owner, BigQuery Metadata Viewer, BigQuery Resource Admin y BigQuery Admin.

Esquemas

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.

  • INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT contiene estadísticas de transmisión agregadas por minuto para el proyecto actual.
  • INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_ORGANIZATION contiene estadísticas de transmisión agregadas por minuto para toda la organización asociada con el proyecto actual.

Las vistas INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT y INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_ORGANIZATION tienen el esquema siguiente:

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

Por el momento, solo se retienen los últimos 180 días del historial de transmisión en las vistas de transmisión INFORMATION_SCHEMA.

Regionalidad

Las vistas de transmisión INFORMATION_SCHEMA de BigQuery están regionalizadas. Para buscar estas vistas, debes anteponer un nombre de región que sea compatible con el formato `region-region-name`.INFORMATION_SCHEMA.view.

Por 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.

Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto en el siguiente formato: `project_id`.`region-region_name`.INFORMATION_SCHEMA.view; por ejemplo, `myproject`.`region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT.

Para ejecutar la consulta, haz lo siguiente:

Console

  1. En Cloud Console, abre la IU web de BigQuery.

    Ir a Cloud Console

  2. En el cuadro Editor de consultas, ingresa la siguiente consulta de SQL estándar. INFORMATION_SCHEMA requiere sintaxis de SQL estándar. SQL estándar es la sintaxis predeterminada en Cloud Console.

    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
     1 DESC
    
    
  3. Haz clic en Ejecutar.

CLI

Usa el comando query y especifica la sintaxis de SQL estándar con las marcas --nouse_legacy_sql o --use_legacy_sql=false. Se requiere la sintaxis de SQL estándar para las consultas INFORMATION_SCHEMA.

Para ejecutar la consulta, ingresa lo siguiente:

bq query --nouse_legacy_sql \
'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
     1 DESC'

Los resultados deberían verse así:

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

Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto en el siguiente formato: `project_id`.`region-region_name`.INFORMATION_SCHEMA.view; por ejemplo, `myproject`.`region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT.

Para ejecutar la consulta, haz lo siguiente:

Console

  1. En Cloud Console, abre la IU web de BigQuery.

    Ir a Cloud Console

  2. Ingresa la siguiente consulta de SQL estándar en la casilla Editor de consulta. INFORMATION_SCHEMA requiere sintaxis de SQL estándar. SQL estándar es la sintaxis predeterminada en Cloud Console.

    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
     1 DESC
    
  3. Haz clic en Ejecutar.

CLI

Usa el comando query y especifica la sintaxis de SQL estándar con las marcas --nouse_legacy_sql o --use_legacy_sql=false. Se requiere la sintaxis de SQL estándar para las consultas INFORMATION_SCHEMA.

Para ejecutar la consulta, ingresa lo siguiente:

bq query --nouse_legacy_sql \
'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
     1 DESC'

Los resultados deberían verse así:

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

Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto en el siguiente formato: `project_id`.`region-region_name`.INFORMATION_SCHEMA.view; por ejemplo, `myproject`.`region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT.

Para ejecutar la consulta, haz lo siguiente:

Console

  1. En Cloud Console, abre la IU web de BigQuery.

    Ir a Cloud Console

  2. En el cuadro Editor de consultas, ingresa la siguiente consulta de SQL estándar. INFORMATION_SCHEMA requiere sintaxis de SQL estándar. SQL estándar es la sintaxis predeterminada en Cloud Console.

    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 1, 2, 3
    ORDER BY num_bytes DESC
    LIMIT 10
    
  3. Haz clic en Ejecutar.

CLI

Usa el comando query y especifica la sintaxis de SQL estándar con las marcas --nouse_legacy_sql o --use_legacy_sql=false. Se requiere la sintaxis de SQL estándar para las consultas INFORMATION_SCHEMA.

Para ejecutar la consulta, ingresa lo siguiente:

bq query --nouse_legacy_sql \
'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 1, 2, 3
 ORDER BY num_bytes DESC
 LIMIT 10'

Los resultados deberían verse así:

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

Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto en el siguiente formato: `project_id`.`region-region_name`.INFORMATION_SCHEMA.view; por ejemplo, `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT.

Para ejecutar la consulta, haz lo siguiente:

Console

  1. En Cloud Console, abre la IU web de BigQuery.

    Ir a Cloud Console

  2. En el cuadro Editor de consultas, ingresa la siguiente consulta de SQL estándar. INFORMATION_SCHEMA requiere sintaxis de SQL estándar. SQL estándar es la sintaxis predeterminada en Cloud Console.

    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
    
  3. Haz clic en Ejecutar.

CLI

Usa el comando query y especifica la sintaxis de SQL estándar con las marcas --nouse_legacy_sql o --use_legacy_sql=false. Se requiere la sintaxis de SQL estándar para las consultas INFORMATION_SCHEMA.

Para ejecutar la consulta, ingresa lo siguiente:

bq query --nouse_legacy_sql \
'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 debería ser similar a lo 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 |
+---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+
  

Próximos pasos