Ansicht WRITE_API_TIMELINE_BY_FOLDER

Die Ansicht INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER enthält pro Minute aggregierte BigQuery Storage Write API-Aufnahmestatistiken für den übergeordneten Ordner des aktuellen Projekts, einschließlich seiner Unterordner.

Sie können die INFORMATION_SCHEMA Write API-Ansichten abfragen, um Verlaufsdaten und Echtzeitinformationen über die Datenaufnahme in BigQuery abzurufen, die die BigQuery Storage Write API verwendet. Weitere Informationen finden Sie unter BigQuery Storage Write API.

Erforderliche Berechtigung

Zum Abfragen der INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER-Ansicht benötigen Sie die IAM-Berechtigung (Identity and Access Management) bigquery.tables.list für den übergeordneten Ordner des Projekts.

Die folgenden vordefinierten IAM-Rollen enthalten jeweils die vorherigen Berechtigungen:

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

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

Schema

Wenn Sie die Ansichten der BigQuery Storage Write API INFORMATION_SCHEMA abfragen, enthalten die Abfrageergebnisse Verlaufsdaten und Echtzeitinformationen zur Datenaufnahme in BigQuery mithilfe der BigQuery Storage Write API. Jede Zeile in den folgenden Ansichten stellt Statistiken für die Aufnahme in einer bestimmten Tabelle dar, die über ein 1-Minuten-Intervall ab start_timestamp aggregiert werden. Die Statistiken sind nach Streamtyp und Fehlercode gruppiert. Daher gibt es eine Zeile für jeden Streamtyp und jeden erkannten Fehlercode während des 1-Minuten-Intervalls für jede Zeitstempel- und Tabellenkombination. Bei erfolgreichen Anfragen ist der Fehlercode auf OK gesetzt. Wenn während eines bestimmten Zeitraums keine Daten in eine Tabelle aufgenommen wurden, sind für die entsprechenden Zeitstempel dieser Tabelle keine Zeilen vorhanden.

Die INFORMATION_SCHEMA.WRITE_API_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.
stream_type STRING Der Streamtyp, der für die Datenaufnahme mit der BigQuery Storage Write API verwendet wird. Mögliche Werte sind „DEFAULT“, „COMMITTED“, „BUFFERED“ oder „PENDING“.
error_code STRING Für die in dieser Zeile angegebenen Anfragen wird ein Fehlercode zurückgegeben. "OK" 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 Aufnahmeverlauf der BigQuery Storage Write API 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.WRITE_API_TIMELINE_BY_FOLDER Ordner, der das angegebene Projekt enthält REGION
Dabei gilt:

  • 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.WRITE_API_TIMELINE_BY_FOLDER, um Daten in der Multiregion US abzufragen.
  • Verwenden Sie region-eu.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER, um Daten in der Multiregion EU abzufragen.
  • Verwenden Sie region-asia-northeast1.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER, um Daten in der Region asia-northeast1 abzufragen.

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

Beispiele

Beispiel 1: Aktuelle Aufnahmefehler der BigQuery Storage Write API

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 Streamtyp und Fehlercode berechnet:

SELECT
  start_timestamp,
  stream_type,
  error_code,
  SUM(total_requests) AS num_failed_requests
FROM
  `region-us`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_FOLDER
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;

Das Ergebnis sieht etwa so aus:

+---------------------+-------------+------------------+---------------------+
|   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 |
+---------------------+-------------+------------------+---------------------+
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 Anhängeanfragen im Ordner des Projekts unterteilt in 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 (
        '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;

Das Ergebnis sieht etwa so aus:

+---------------------+----------------+------------+-------------------+------------+--------------+-------------+
|   start_timestamp   | total_requests | total_rows | total_input_bytes | user_error | server_error | total_error |
+---------------------+----------------+------------+-------------------+------------+--------------+-------------+
| 2020-04-15 22:00:00 |         441854 |     441854 |       23784853118 |          0 |           17 |          17 |
| 2020-04-15 21:59:00 |         355627 |     355627 |       26101982742 |          8 |            0 |          13 |
| 2020-04-15 21:58:00 |         354603 |     354603 |       26160565341 |          0 |            0 |           0 |
| 2020-04-15 21:57:00 |         298823 |     298823 |       23877821442 |          2 |            0 |           2 |
+---------------------+----------------+------------+-------------------+------------+--------------+-------------+
Beispiel 3: Tabellen mit dem meisten eingehenden Traffic

Im folgenden Beispiel werden die Aufnahmestatistiken der BigQuery Storage Write API für die zehn Tabellen im Projektordner mit dem höchsten 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.WRITE_API_TIMELINE_BY_FOLDER
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-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 |
+----------------------+------------+-------------------------------+------------+----------------+--------------+