Visualizzazione WRITE_API_TIMELINE

La visualizzazione INFORMATION_SCHEMA.WRITE_API_TIMELINE contiene statistiche di importazione dell'API BigQuery Storage Write aggregate al minuto per il progetto corrente.

Puoi eseguire query sulle visualizzazioni dell'API Write per recuperare informazioni storiche e in tempo reale sull&#39importazione datii in BigQuery che utilizza l'API BigQuery Storage Write.INFORMATION_SCHEMA Per ulteriori informazioni, vedi API BigQuery Storage Write.

Autorizzazione obbligatoria

Per eseguire query sulla visualizzazione INFORMATION_SCHEMA.WRITE_API_TIMELINE, devi disporre dell'autorizzazione Identity and Access Management (IAM) bigquery.tables.list per il progetto.

Ciascuno dei seguenti ruoli IAM predefiniti include l'autorizzazione richiesta:

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

Per saperne di più sulle autorizzazioni BigQuery, consulta Controllo dell'accesso con IAM.

Schema

Quando esegui query sulle visualizzazioni dell'API BigQuery Storage Write, i risultati della query contengono informazioni storiche e in tempo reale sull'importazione dati in BigQuery utilizzando l'API BigQuery Storage Write.INFORMATION_SCHEMA Ogni riga delle seguenti visualizzazioni rappresenta le statistiche per l'importazione in una tabella specifica, aggregate in un intervallo di un minuto a partire dalle ore start_timestamp. Le statistiche sono raggruppate per tipo di stream e codice di errore, quindi ci sarà una riga per ogni tipo di stream e per ogni codice di errore riscontrato durante l'intervallo di un minuto per ogni timestamp e combinazione di tabelle. Le richieste riuscite hanno il codice di errore impostato su OK. Se non sono stati importati dati in una tabella durante un determinato periodo di tempo, non sono presenti righe per i timestamp corrispondenti per quella tabella.

La visualizzazione INFORMATION_SCHEMA.WRITE_API_TIMELINE ha lo schema seguente:
Nome colonna Tipo di dati Valore
start_timestamp TIMESTAMP (Colonna di partizionamento) Timestamp di inizio dell'intervallo di 1 minuto per le statistiche aggregate.
project_id STRING (Colonna di clustering) ID del progetto.
project_number INTEGER Numero del progetto.
dataset_id STRING (Colonna di clustering) ID del set di dati.
table_id STRING (Colonna di clustering) ID della tabella.
stream_type STRING Il tipo di stream utilizzato per l'importazione dati con l'API BigQuery Storage Write. Deve essere uno dei seguenti valori: "DEFAULT", "COMMITTED", "BUFFERED" o "PENDING".
error_code STRING Codice di errore restituito per le richieste specificate in questa riga. "Ok" per le richieste riuscite.
total_requests INTEGER Numero totale di richieste nell'intervallo di 1 minuto.
total_rows INTEGER Numero totale di righe di tutte le richieste nell'intervallo di 1 minuto.
total_input_bytes INTEGER Numero totale di byte di tutte le righe nell'intervallo di 1 minuto.

Conservazione dei dati

Questa visualizzazione contiene la cronologia di importazione dell'API BigQuery Storage Write degli ultimi 180 giorni.

Ambito e sintassi

Le query su questa visualizzazione devono includere un qualificatore di regione. Se non specifichi un qualificatore regionale, i metadati vengono recuperati da tutte le regioni. La tabella seguente spiega l'ambito della regione per questa visualizzazione:

Nome vista Ambito risorsa Ambito regione
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.WRITE_API_TIMELINE[_BY_PROJECT] Livello progetto REGION
Sostituisci quanto segue:
  • (Facoltativo) PROJECT_ID: l'ID del tuo Google Cloud progetto. Se non specificato, viene utilizzato il progetto predefinito.
  • REGION: qualsiasi nome della regione del set di dati. Ad esempio: `region-us`.

Esempio

  • Per eseguire query sui dati nella multiregione US, utilizza `region-us`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_PROJECT
  • Per eseguire query sui dati nella multiregione UE, utilizza `region-eu`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_PROJECT
  • Per eseguire query sui dati nella regione asia-northeast1, utilizza `region-asia-northeast1`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_PROJECT

Per un elenco delle regioni disponibili, consulta Posizioni dei set di dati.

Esempi

Esempio 1: errori di importazione recenti dell'API BigQuery Storage Write

L'esempio seguente calcola la suddivisione al minuto delle richieste non riuscite totali per tutte le tabelle del progetto negli ultimi 30 minuti, suddivise per tipo di flusso e codice di errore:

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

Il risultato è simile al seguente:

+---------------------+-------------+------------------+---------------------+
|   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 |
+---------------------+-------------+------------------+---------------------+
Esempio 2: suddivisione al minuto di tutte le richieste con codici di errore

Il seguente esempio calcola una suddivisione al minuto delle richieste di accodamento riuscite e non riuscite, suddivise in categorie di codici di errore. Questa query potrebbe essere utilizzata per compilare una dashboard.

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
GROUP BY
  start_timestamp
ORDER BY
  start_timestamp DESC;

Il risultato è simile al seguente:

+---------------------+----------------+------------+-------------------+------------+--------------+-------------+
|   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 |
+---------------------+----------------+------------+-------------------+------------+--------------+-------------+
Esempio 3: tabelle con il maggior traffico in entrata

Il seguente esempio restituisce le statistiche di importazione dell'API BigQuery Storage Write per le 10 tabelle con il traffico in entrata più elevato:

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_PROJECT
GROUP BY
  project_id,
  dataset_id,
  table_id
ORDER BY
  num_bytes DESC
LIMIT 10;

Il risultato è simile al seguente:

+----------------------+------------+-------------------------------+------------+----------------+--------------+
|      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 |
+----------------------+------------+-------------------------------+------------+----------------+--------------+
Esempio 4: rapporto di errori di importazione dell'API BigQuery Storage Write per una tabella

Il seguente esempio calcola una suddivisione giornaliera degli errori per una tabella specifica, suddivisa per codice di errore:

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.WRITE_API_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;

Il risultato è simile al seguente:

+---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+
|         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 | OK             |       41 |    252893 |           41 |
| 2020-04-20 00:00:00 | my_project  | my_dataset | my_table | OK             |     2798 |  10688286 |         2798 |
| 2020-04-19 00:00:00 | my_project  | my_dataset | my_table | OK             |     2005 |   7979495 |         2005 |
| 2020-04-18 00:00:00 | my_project  | my_dataset | my_table | OK             |     2054 |   7972378 |         2054 |
| 2020-04-17 00:00:00 | my_project  | my_dataset | my_table | OK             |     2056 |   6978079 |         2056 |
| 2020-04-17 00:00:00 | my_project  | my_dataset | my_table | INTERNAL       |        4 |     10825 |            4 |
+---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+