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