Visualizzazione WRITE_API_TIMELINE

La visualizzazione INFORMATION_SCHEMA.WRITE_API_TIMELINE contiene al minuto statistiche aggregate di importazione dell'API BigQuery StorageWrite per il progetto attuale.

Puoi eseguire query sulle INFORMATION_SCHEMA viste dell'API Scrivi per recuperare informazioni storiche e in tempo reale sull'importazione dati BigQuery che utilizza l'API BigQuery Storage Writer. Per ulteriori informazioni, consulta API BigQuery Storage Scrivi.

Autorizzazione obbligatoria

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

Ciascuno dei seguenti ruoli IAM predefiniti include autorizzazione:

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

Per ulteriori informazioni sulle autorizzazioni BigQuery, consulta Controllo dell'accesso con IAM.

Schema

Quando esegui una query sulle viste dell'API INFORMATION_SCHEMA BigQuery StorageWrite, i risultati della query contengono informazioni storiche e in tempo reale sull'importazione dati in BigQuery con l'API BigQuery Storage Scrivi. Ogni riga nelle visualizzazioni seguenti rappresenta le statistiche per l'importazione in una tabella specifica, aggregate un intervallo di un minuto a partire da start_timestamp. Le statistiche sono raggruppate per tipo di flusso e codice di errore, quindi ci sarà una riga per ogni tipo di stream e hanno riscontrato ciascun codice di errore durante un intervallo di un minuto per ciascun timestamp e la combinazione di tabelle. Il codice di errore delle richieste riuscite è impostato su OK. Se Nessun dato è stato importato in una tabella durante un determinato periodo di tempo, quindi non sono presenti righe per i timestamp corrispondenti per quella tabella.

Le INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_* viste hanno schema riportato di seguito:

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 ID (colonna clustering) del progetto.
project_number INTEGER Numero del progetto.
dataset_id STRING ID (colonna clustering) del set di dati.
table_id STRING ID (colonna clustering) della tabella.
stream_type STRING Il tipo di stream utilizzato per l'importazione dati con l'API BigQuery Storage Scrivi. Deve essere "PREDEFINITO", "COMMITTED", "BUFFERED" o "IN ATTESA".
error_code STRING Codice di errore restituito per le richieste specificate da questa riga. "OK" della 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 vista contiene la cronologia delle importazioni dell'API BigQuery StorageWrite degli ultimi 180 giorni.

Ambito e sintassi

Le query relative a questa vista devono includere un qualificatore regione. Se non specifichi un qualificatore regionale, i metadati vengono recuperati da tutti regioni. La tabella seguente spiega l'ambito della regione per questa visualizzazione:

Nome vista Ambito risorsa Ambito della regione
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.WRITE_API_TIMELINE[_BY_PROJECT] Livello di progetto REGION
Sostituisci quanto segue:

  • (Facoltativo) PROJECT_ID: l'ID del tuo progetto Google Cloud. 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 nell'area multiregionale degli Stati Uniti, utilizza `region-us`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_PROJECT
  • Per eseguire query sui dati nella località multiregionale UE, utilizza `region-eu`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_PROJECT
  • Per eseguire query sui dati della regione asia-northeast1, utilizza `region-asia-northeast1`.INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_PROJECT

Per un elenco delle regioni disponibili, vedi Località dei set di dati.

Esempi

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

L'esempio seguente calcola l'analisi al minuto del totale degli errori richieste per tutte le tabelle nel progetto negli ultimi 30 minuti, suddivise per flusso tipo 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: analisi al minuto per tutte le richieste con codici di errore

L'esempio seguente calcola un'analisi al minuto delle operazioni riuscite e richieste di aggiunta non riuscite, suddivise in categorie di codici di errore. Questa query potrebbe essere utilizzati 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 traffico più in entrata

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

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 Scrivi per una tabella

L'esempio seguente calcola un'analisi giornaliera degli errori per uno specifico tabella, 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 |
+---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+