Visualizzazione JOBS_BY_USER
La vista INFORMATION_SCHEMA.JOBS_BY_USER
contiene metadati quasi in tempo reale relativi ai job BigQuery inviati dall'utente corrente nel progetto corrente.
Ruolo richiesto
Per ottenere l'autorizzazione di cui hai bisogno per eseguire query sulla vista INFORMATION_SCHEMA.JOBS_BY_USER
,
chiedi all'amministratore di concederti
Ruolo IAM Utente BigQuery (roles/bigquery.user
) per il progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene l'autorizzazione
bigquery.jobs.list
necessaria per eseguire query sulla visualizzazione INFORMATION_SCHEMA.JOBS_BY_USER
.
Potresti anche riuscire a ottenere questa autorizzazione con ruoli personalizzati altri ruoli predefiniti.
Per ulteriori informazioni sulle autorizzazioni BigQuery, consulta Controllo dell'accesso con IAM.
Schema
I dati sottostanti sono partizionati in base alla colonna creation_time
e
in cluster da project_id
e user_email
.
La vista INFORMATION_SCHEMA.JOBS_BY_USER
ha lo schema seguente:
Nome colonna | Tipo di dati | Valore |
---|---|---|
bi_engine_statistics |
RECORD |
Se il progetto è configurato per utilizzare la BI
Engine SQL Interface, questo campo contiene BiEngineStatistics.
In caso contrario, NULL .
|
cache_hit |
BOOLEAN |
Indica se i risultati della query di questo job provengono da una cache.
Se disponi di un'istruzione con più query
job, cache_hit per la query principale è
NULL .
|
creation_time |
TIMESTAMP |
(Colonna Partizionamento) Data/ora di creazione del job. Il partizionamento si basa sull'ora UTC di questo timestamp. |
destination_table |
RECORD |
Tabella di destinazione per i risultati, se presente. |
dml_statistics |
RECORD |
Se il job è una query con un'istruzione DML, il valore è un record con
campi seguenti:
NULL .Questa colonna è presente in INFORMATION_SCHEMA.JOBS_BY_USER e
INFORMATION_SCHEMA.JOBS_BY_PROJECT visualizzazioni.
|
end_time |
TIMESTAMP |
L'ora di fine di questo job, in millisecondi dall'epoca. Questo campo rappresenta
momento in cui il job entra nello stato DONE . |
error_result |
RECORD |
Dettagli di eventuali errori sotto forma di oggetti ErrorProto. |
job_creation_reason.code |
STRING |
Specifica il motivo generale per cui è stato creato un job. I valori possibili sono:
|
job_id |
STRING |
L'ID del job, se ne è stato creato uno. In caso contrario, l'ID query di una query che utilizza la modalità di query breve. Ad esempio, bquxjob_1234 . |
job_stages |
RECORD |
Query
fasi del job.
Nota: i valori di questa colonna sono vuoti per le query che leggono dalle tabelle con di accesso a livello di riga. Per ulteriori informazioni, consulta le best practice per la sicurezza a livello di riga in BigQuery. |
job_type |
STRING |
Il tipo di job. Può essere QUERY , LOAD , EXTRACT ,
COPY o NULL . Un valore NULL
indica un job interno, ad esempio la valutazione di un'istruzione di job dello script
o l'aggiornamento di una vista materializzata.
|
labels |
RECORD |
Array di etichette applicate al job sotto forma di coppie chiave-valore. |
parent_job_id |
STRING |
ID del job principale, se presente. |
priority |
STRING |
La priorità di questo job. I valori validi includono INTERACTIVE e
BATCH . |
project_id |
STRING |
(Colonna di clustering) L'ID del progetto. |
project_number |
INTEGER |
Il numero del progetto. |
query |
STRING |
Testo della query SQL. Solo la visualizzazione JOBS_BY_PROJECT ha la colonna query. |
referenced_tables |
RECORD |
Array di tabelle a cui fa riferimento il job. Viene compilato solo per i job di query che non sono hit della cache. |
reservation_id |
STRING |
Nome della prenotazione principale assegnata a questo job,
nel formato
RESERVATION_ADMIN_PROJECT:RESERVATION_LOCATION.RESERVATION_NAME .In questo output:
|
edition |
STRING |
La versione associata alla prenotazione assegnata a questo job. Per ulteriori informazioni sulle versioni, consulta Introduzione alle versioni di BigQuery. |
session_info |
RECORD |
Dettagli sulla sessione in cui è stato eseguito questo job, se presente. |
start_time |
TIMESTAMP |
L'ora di inizio di questo job, in millisecondi dall'epoca. Questo campo rappresenta il
momento in cui il job passa dallo stato PENDING a RUNNING o DONE . |
state |
STRING |
Stato del job in esecuzione. Gli stati validi includono PENDING , RUNNING e
DONE .
|
statement_type |
STRING |
Il tipo di istruzione di query. Ad esempio, DELETE , INSERT ,
SCRIPT , SELECT o UPDATE . Consulta QueryStatementType per un elenco dei valori validi.
|
timeline |
RECORD |
Query sequenza temporale del job. Contiene snapshot dell'esecuzione delle query. |
total_bytes_billed |
INTEGER |
Se il progetto è configurato per utilizzare on demand
prezzo, questo campo conterrà i byte totali fatturati per
lavoro. Se il progetto è configurato per utilizzare i prezzi fissi, non ti verranno addebitati i byte e questo campo è solo informativo.
Nota: i valori di questa colonna sono vuoti per le query che leggono da tabelle con criteri di accesso a livello di riga. Per saperne di più, consulta le best practice per i livelli di riga e la sicurezza in BigQuery. |
total_bytes_processed |
INTEGER |
Byte totali elaborati dal job. Nota: i valori di questa colonna sono vuoti per le query che leggono da tabelle con criteri di accesso a livello di riga. Per saperne di più, consulta le best practice per i livelli di riga e la sicurezza in BigQuery. |
total_modified_partitions |
INTEGER |
Il numero totale di partizioni modificate dal job. Questo campo viene compilato per i job LOAD e QUERY .
|
total_slot_ms |
INTEGER |
Milisecondi dello slot per il job per l'intera durata nello stato RUNNING ,
inclusi i tentativi di nuovo invio. |
transaction_id |
STRING |
ID della transazione in cui è stato eseguito il job, se presente. (Anteprima) |
user_email |
STRING |
(Colonna clustering) Indirizzo email o account di servizio dell'utente che ha eseguito il job. |
query_info.resource_warning |
STRING |
Il messaggio di avviso che viene visualizzato se l'utilizzo delle risorse durante l'elaborazione delle query supera la soglia interna del sistema. Per un job di query riuscito, il campo resource_warning può essere compilato. Con resource_warning , puoi ottenere ulteriori punti dati per ottimizzare le query e configurare il monitoraggio delle tendenze del rendimento di un insieme equivalente di query utilizzando query_hashes .
|
query_info.query_hashes.normalized_literals |
STRING |
Contiene gli hash della query. normalized_literals è un hash STRING in esadecimale che ignora commenti, valori dei parametri, funzioni UDF e letterali.
Questo campo viene visualizzato per le query GoogleSQL riuscite che non sono hit della cache. |
query_info.performance_insights |
RECORD |
Informazioni sulle prestazioni per il job. |
query_info.optimization_details |
STRUCT |
Le ottimizzazioni basate sulla cronologia per il job. |
transferred_bytes |
INTEGER |
Byte totali trasferiti per le query cross-cloud, ad esempio i job di trasferimento cross-cloud di BigQuery Omni. |
materialized_view_statistics |
RECORD |
Statistiche delle viste materializzate prese in considerazione in un job di query. (Anteprima) |
Conservazione dei dati
Questa visualizzazione contiene i job in esecuzione e la cronologia dei job degli ultimi 180 giorni.
Ambito e sintassi
Le query su questa visualizzazione devono includere un qualificatore regione. La tabella seguente spiega l'ambito della regione per questa visualizzazione:
Nome vista | Ambito risorsa | Ambito regione |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_BY_USER |
Job inviati dall'utente corrente nel progetto specificato. | 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 la query su un progetto diverso da quello predefinito, aggiungi ID progetto nel seguente formato:
`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_USER
PROJECT_ID
: l'ID del progettoREGION_NAME
: la regione del progetto
Ad esempio, `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_USER
.
Visualizza job in attesa o in esecuzione
SELECT job_id, creation_time, query FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_USER WHERE state != 'DONE';
Il risultato è simile al seguente:
+--------------+---------------------------+---------------------------------+ | job_id | creation_time | query | +--------------+---------------------------+---------------------------------+ | bquxjob_1 | 2019-10-10 00:00:00 UTC | SELECT ... FROM dataset.table1 | | bquxjob_2 | 2019-10-10 00:00:01 UTC | SELECT ... FROM dataset.table2 | | bquxjob_3 | 2019-10-10 00:00:02 UTC | SELECT ... FROM dataset.table3 | | bquxjob_4 | 2019-10-10 00:00:03 UTC | SELECT ... FROM dataset.table4 | | bquxjob_5 | 2019-10-10 00:00:04 UTC | SELECT ... FROM dataset.table5 | +--------------+---------------------------+---------------------------------+
Visualizza informazioni sulle prestazioni per le query
L'esempio seguente restituisce tutti i job di query che contengono informazioni sul rendimento negli ultimi 30 giorni, insieme a un URL che rimanda al grafico di esecuzione delle query nella console Google Cloud.
SELECT `bigquery-public-data`.persistent_udfs.job_url( project_id || ':us.' || job_id) AS job_url, query_info.performance_insights FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_USER WHERE DATE(creation_time) >= CURRENT_DATE - 30 -- scan 30 days of query history AND job_type = 'QUERY' AND state = 'DONE' AND error_result IS NULL AND statement_type != 'SCRIPT' AND EXISTS ( -- Only include queries which had performance insights SELECT 1 FROM UNNEST( query_info.performance_insights.stage_performance_standalone_insights ) WHERE slot_contention OR insufficient_shuffle_quota UNION ALL SELECT 1 FROM UNNEST( query_info.performance_insights.stage_performance_change_insights ) WHERE input_data_change.records_read_diff_percentage IS NOT NULL );