Ansicht STREAMING_TIMELINE view

Die Ansicht INFORMATION_SCHEMA.STREAMING_TIMELINE enthält pro Minute aggregierte Streamingstatistiken für das aktuelle Projekt.

Sie können die Streamingansichten INFORMATION_SCHEMA abfragen, um Verlaufsdaten und Echtzeitinformationen über das Streaming von Daten in BigQuery abzurufen, die die Legacy Methode tabledata.insertAll und nicht die BigQuery Storage Write API verwenden. Weitere Informationen zum Streamen von Daten in BigQuery finden Sie unter Daten in BigQuery streamen.

Erforderliche Berechtigung

Zum Abfragen der INFORMATION_SCHEMA.STREAMING_TIMELINE-Ansicht benötigen Sie die IAM-Berechtigung (Identity and Access Management) bigquery.tables.list für das Projekt.

Jede der folgenden vordefinierten IAM-Rollen enthält die erforderliche Berechtigung:

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

Weitere Informationen zu BigQuery-Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.

Schema

Wenn Sie die INFORMATION_SCHEMA-Streamingansichten abfragen, enthalten die Abfrageergebnisse Verlaufsdaten und Echtzeitinformationen über das Streaming von Daten nach BigQuery. Jede Zeile in den folgenden Ansichten stellt Statistiken für das Streaming in einer bestimmten Tabelle dar, die über ein 1-Minuten-Intervall ab start_timestamp aggregiert werden. Die Statistiken sind nach Fehlercode gruppiert. Daher gibt es eine Zeile für jeden Fehlercode, der während des 1-Minuten-Intervalls für jede Zeitstempel- und Tabellenkombination erkannt wurde. Bei erfolgreichen Anfragen ist der Fehlercode auf NULL gesetzt. Wenn während eines bestimmten Zeitraums keine Daten in eine Tabelle gestreamt wurden, sind für die entsprechenden Zeitstempel dieser Tabelle keine Zeilen vorhanden.

Die INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_*-Ansichten haben das folgende Schema:

Spaltenname Datentyp Wert
start_timestamp TIMESTAMP (Partitionsspalten) Startzeitstempel des 1-Minuten-Intervalls für die aggregierten Statistiken.
project_id STRING (Clustering-Spalte) ID des Projekts
project_number INTEGER Nummer des Projekts.
dataset_id STRING (Clustering-Spalte) ID des Datasets.
table_id STRING (Clustering-Spalte) ID der Tabelle.
error_code STRING Für die in dieser Zeile angegebenen Anfragen wird ein Fehlercode zurückgegeben. NULL für erfolgreiche Anfragen.
total_requests INTEGER Gesamtzahl der Anfragen im 1-Minuten-Intervall.
total_rows INTEGER Gesamtzahl der Zeilen aus allen Anfragen innerhalb des 1-Minuten-Intervalls.
total_input_bytes INTEGER Gesamtzahl der Byte aus allen Zeilen im 1-Minuten-Intervall.

Datenaufbewahrung

Diese Ansicht enthält den Streamingverlauf der letzten 180 Tage.

Bereich und Syntax

Für Abfragen dieser Ansicht muss ein Regions-Qualifier verwendet werden. Wenn Sie keinen regionalen Qualifier angeben, werden Metadaten aus allen Regionen abgerufen. In der folgenden Tabelle wird der Regionsbereich für diese Ansicht erläutert:

Ansichtsname Ressourcenbereich Regionsbereich
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.STREAMING_TIMELINE[_BY_PROJECT] auf Projektebene REGION
Ersetzen Sie Folgendes:

  • Optional: PROJECT_ID: die ID Ihres Google Cloud-Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet.

  • REGION: ist ein beliebiger Dataset-Regionsname. Beispiel: `region-us`

  • Beispiel

    • Verwenden Sie `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT, um Daten in der Multiregion US abzufragen.
    • Verwenden Sie `region-eu`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT, um Daten in der Multiregion EU abzufragen.
    • Verwenden Sie `region-asia-northeast1`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT, um Daten in der Region asia-northeast1 abzufragen.

    Eine Liste der verfügbaren Regionen finden Sie unter Dataset-Standorte.

    Beispiele

    Beispiel 1: Aktuelle Streamingfehler

    Im folgenden Beispiel wird die Aufschlüsselung pro Minute der Gesamtzahl fehlgeschlagener Anfragen für alle Tabellen im Projekt in den letzten 30 Minuten nach Fehlercode berechnet:

    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;

    Das Ergebnis sieht etwa so aus:

    +---------------------+------------------+---------------------+
    |   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 |
    +---------------------+------------------+---------------------+
    
    Beispiel 2: Aufschlüsselung pro Minuten für alle Anfragen mit Fehlercodes

    Im folgenden Beispiel wird eine Aufschlüsselung pro Minute nach erfolgreichen und fehlgeschlagenen Streaminganfragen nach Fehlercodekategorien berechnet. Mit dieser Abfrage kann ein Dashboard ausgefüllt werden.

    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;

    Das Ergebnis sieht etwa so aus:

    +---------------------+----------------+------------+-------------------+-------------+------------+--------------+-------------+
    |   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 |
    +---------------------+----------------+------------+-------------------+-------------+------------+--------------+-------------+
    
    Beispiel 3: Tabellen mit dem meisten eingehenden Traffic

    Im folgenden Beispiel werden die Streamingstatistiken für die zehn Tabellen mit dem meisten eingehenden Traffic zurückgegeben:

    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;

    Das Ergebnis sieht etwa so aus:

    +----------------------+------------+-------------------------------+------------+----------------+--------------+
    |      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 |
    +----------------------+------------+-------------------------------+------------+----------------+--------------+
    
    Beispiel 4: Streamingfehlerverhältnis für eine Tabelle

    Im folgenden Beispiel wird eine Aufschlüsselung pro Tag für Fehler für eine bestimmte Tabelle nach Fehlercode berechnet:

    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;

    Das Ergebnis sieht etwa so aus:

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