Visualizzazione WRITE_API_TIMELINE
La vista INFORMATION_SCHEMA.WRITE_API_TIMELINE
contiene statistiche aggregate al minuto di importazione dell'API BigQuery Storage Scrivi per il progetto attuale.
Puoi eseguire query sulle viste dell'API Scrivi INFORMATION_SCHEMA
per recuperare informazioni storiche e in tempo reale sull'importazione dati in BigQuery che utilizza l'API BigQuery StorageWrite. Per ulteriori informazioni, consulta API BigQuery Storage Scrivi.
Autorizzazione obbligatoria
Per eseguire una query sulla vista 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 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 tramite l'API BigQuery StorageWrite. Ogni riga nelle visualizzazioni seguenti rappresenta le statistiche per l'importazione in una tabella specifica, aggregate in 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 flusso e
ciascun codice di errore riscontrato durante l'intervallo di un minuto per ogni combinazione di timestamp
e tabella. Il codice di errore delle richieste riuscite è 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.
Le INFORMATION_SCHEMA.WRITE_API_TIMELINE_BY_*
viste hanno 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 |
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 flusso utilizzato per l'importazione dati con l'API BigQuery StorageWrite. Deve essere "PREDEFINITO", "COMMITTED", "BUFFERED" o "IN ATTESA". |
error_code |
STRING |
Codice di errore restituito per le richieste specificate da questa riga. "OK" per le richieste andate a buon fine. |
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 tutte le 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 |
- (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 per più regioni 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 delle richieste non riuscite per tutte le tabelle del progetto negli ultimi 30 minuti, suddivisa 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: analisi al minuto per tutte le richieste con codici di errore
L'esempio seguente calcola un'analisi al minuto delle richieste di aggiunta 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 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 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 | +---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+