Visualizzazione WRITE_API_TIMELINE
La visualizzazione INFORMATION_SCHEMA.WRITE_API_TIMELINE contiene statistiche di importazione aggregate al minuto dell'API BigQuery Storage Write (gRPC) per il progetto corrente.
Puoi eseguire query sulle visualizzazioni dell'API Write di INFORMATION_SCHEMA per recuperare informazioni storiche e in tempo reale sull'importazione dati in BigQuery che utilizza l'API BigQuery Storage Write (gRPC). Per ulteriori informazioni, consulta API BigQuery Storage Write (gRPC).
Autorizzazione obbligatoria
Per eseguire query sulla visualizzazione INFORMATION_SCHEMA.WRITE_API_TIMELINE, devi disporre dell'autorizzazione IAM (Identity and Access Management) bigquery.tables.list per il progetto.
Ognuno dei seguenti ruoli IAM predefiniti include l'autorizzazione richiesta:
roles/bigquery.userroles/bigquery.dataViewerroles/bigquery.dataEditorroles/bigquery.dataOwnerroles/bigquery.metadataViewerroles/bigquery.resourceAdminroles/bigquery.admin
Per ulteriori informazioni sulle autorizzazioni di BigQuery, consulta Controllo dell'accesso con IAM.
Schema
Quando esegui query sulle visualizzazioni dell'API BigQuery Storage Write (gRPC) diINFORMATION_SCHEMA, i risultati della query contengono informazioni storiche e in tempo reale sull'importazione dati in BigQuery utilizzando l'API BigQuery Storage Write (gRPC). Ogni riga delle seguenti visualizzazioni rappresenta le statistiche di importazione in una tabella specifica, aggregate in un intervallo di un minuto a partire da start_timestamp. Le statistiche sono raggruppate per tipo di stream e codice di errore, quindi sarà presente una riga per ogni tipo di stream e ogni codice di errore riscontrato durante l'intervallo di un minuto per ogni combinazione di timestamp e tabella. 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 il seguente schema:
| 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 (gRPC). Dovrebbe essere "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. |
Per garantire la stabilità, ti consigliamo di elencare esplicitamente le colonne nelle query dello schema informativo anziché utilizzare un carattere jolly (SELECT *). L'elenco esplicito delle colonne impedisce l'interruzione delle query se lo schema sottostante cambia.
Conservazione dei dati
Questa visualizzazione contiene la cronologia di importazione dell'API BigQuery Storage Write (gRPC) 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 visualizzazione | Ambito risorsa | Ambito regione |
|---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.WRITE_API_TIMELINE[_BY_PROJECT] |
Livello progetto | REGION |
-
(Facoltativo)
PROJECT_ID: l'ID del tuo Google Cloud progetto. Se non specificato, viene utilizzato il progetto predefinito. -
REGION: qualsiasi nome di regione del set di dati. Ad esempio,`region-us`.
Esempio
- Per eseguire query sui dati nella multiregione Stati Uniti, 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 Località dei set di dati.
Esempi
Esempio 1: errori di importazione recenti dell'API BigQuery Storage Write (gRPC)
L'esempio seguente calcola la suddivisione al minuto del numero totale di richieste non riuscite per tutte le tabelle del progetto negli ultimi 30 minuti, suddivise per tipo di stream 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 per tutte le richieste con codici di errore
L'esempio seguente calcola una suddivisione al minuto delle richieste di aggiunta riuscite e non riuscite, suddivise in categorie di codici di errore. Questa query può essere utilizzata per popolare 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
L'esempio seguente restituisce le statistiche di importazione dell'API BigQuery Storage Write (gRPC) per le 10 tabelle con il maggior traffico 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 Write (gRPC) per una tabella
L'esempio seguente 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 | +---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+