Visualizzazione JOBS_BY_FOLDER
La vista INFORMATION_SCHEMA.JOBS_BY_FOLDER
contiene metadati quasi in tempo reale su tutti i job inviati nella cartella principale del progetto corrente, inclusi i job nelle sottocartelle al suo interno.
Ruolo richiesto
Per ottenere l'autorizzazione necessaria per eseguire query sulla visualizzazione INFORMATION_SCHEMA.JOBS_BY_FOLDER
,
chiedi all'amministratore di concederti il ruolo IAM Visualizzatore risorse BigQuery (roles/bigquery.resourceViewer
) per la tua cartella principale.
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.listAll
necessaria per eseguire query sulla visualizzazione INFORMATION_SCHEMA.JOBS_BY_FOLDER
.
Potresti anche ottenere questa autorizzazione con ruoli personalizzati o 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 raggruppati in cluster in base a project_id
e user_email
. La colonna query_info
contiene informazioni aggiuntive sui job di query.
La vista INFORMATION_SCHEMA.JOBS_BY_FOLDER
ha lo schema seguente:
Nome colonna | Tipo di dati | Valore |
---|---|---|
bi_engine_statistics |
RECORD |
Se il progetto è configurato per utilizzare l'interfaccia SQL di BI Engine, 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 hai un job con istruzioni con più query, cache_hit per la query principale è NULL .
|
creation_time |
TIMESTAMP |
(Colonna di partizione) Ora di creazione di questo job. Il partizionamento si basa sull'ora UTC di questo timestamp. |
destination_table |
RECORD |
Tabella di destinazione per i risultati, se presente. |
end_time |
TIMESTAMP |
L'ora di fine di questo job, in millisecondi dall'epoca. Questo campo rappresenta il
momento in cui il job entra nello stato DONE . |
error_result |
RECORD |
Dettagli di eventuali errori sotto forma di oggetti ErrorProto. |
folder_numbers |
REPEATED INTEGER |
Numeri degli ID delle cartelle che contengono il progetto, a partire dalla cartella che contiene immediatamente il progetto, seguita dalla cartella che contiene la cartella secondaria e così via.
Ad esempio, se folder_numbers è [1, 2, 3] , la cartella
1 contiene immediatamente il progetto, la cartella 2 contiene
1 e la cartella 3 contiene 2 . Questa colonna viene compilata solo in JOBS_BY_FOLDER .
|
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 |
Fasi
di query del 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 ulteriori informazioni, consulta le best practice per la sicurezza a livello di riga in BigQuery. |
job_type |
STRING |
Il tipo di lavoro. 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 di esecuzione del job. 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 |
Cronologia delle query del job. Contiene snapshot dell'esecuzione delle query. |
total_bytes_billed |
INTEGER |
Se il progetto è configurato per utilizzare i prezzi on demand, questo campo contiene i byte totali fatturati per il job. 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 ulteriori informazioni, consulta le best practice per la sicurezza a livello di riga 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 ulteriori informazioni, consulta le best practice per la sicurezza a livello di riga 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 questo job, se presente. (Anteprima) |
user_email |
STRING |
(Colonna di clustering) Indirizzo email o account di servizio dell'utente che ha eseguito il job. |
query_info.resource_warning |
STRING |
Il messaggio di avviso visualizzato se l'utilizzo delle risorse durante l'elaborazione delle query è superiore alla 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.
Il valore hash sarà diverso quando le visualizzazioni sottostanti cambiano o se la query fa implicitamente riferimento a colonne, ad esempio SELECT * , e lo schema della tabella cambia.
Questo campo viene visualizzato per le query GoogleSQL riuscite che non sono hit della cache. |
query_info.performance_insights |
RECORD |
Approfondimenti sul rendimento del job. |
query_info.optimization_details |
STRUCT |
Le ottimizzazioni basate sulla cronologia per il job. |
transferred_bytes |
INTEGER |
Byte totali trasferiti per le query tra cloud, ad esempio i job di trasferimento tra 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 illustra l'ambito della regione per questa visualizzazione:
Nome vista | Ambito risorsa | Ambito regione |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_BY_FOLDER |
Cartella contenente il 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
La seguente query mostra l'ID, la data e l'ora di creazione e lo stato (PENDING
,
RUNNING
o DONE
) di tutti i job interattivi nella
cartella del progetto designato:
SELECT job_id, creation_time, state FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_FOLDER WHERE priority = 'INTERACTIVE';
Il risultato è simile al seguente:
+--------------+---------------------------+---------------------------------+ | job_id | creation_time | state | +--------------+---------------------------+---------------------------------+ | bquxjob_1 | 2019-10-10 00:00:00 UTC | DONE | | bquxjob_2 | 2019-10-10 00:00:01 UTC | DONE | | bquxjob_3 | 2019-10-10 00:00:02 UTC | DONE | | bquxjob_4 | 2019-10-10 00:00:03 UTC | RUNNING | | bquxjob_5 | 2019-10-10 00:00:04 UTC | PENDING | +--------------+---------------------------+---------------------------------+
Ottenere i byte elaborati dai job di esportazione
L'esempio seguente calcola il valore total_processed_bytes
per i tipi di job EXTRACT
. Per informazioni sulle quote per i job di esportazione, consulta
Criteri per le quote per i job di esportazione.
I byte totali elaborati possono essere utilizzati per monitorare l'utilizzo aggregato e assicurarsi che i job di esportazione rimangano al di sotto del limite di 50 TB al giorno:
SELECT DATE(creation_time) as day, project_id as source_project_id, SUM(total_bytes_processed) AS total_bytes_processed FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 8 DAY) AND CURRENT_TIMESTAMP() AND job_type = "EXTRACT" GROUP BY day, source_project_id ORDER BY day DESC;
Ottenere l'utilizzo dei job di copia
Per informazioni sui job di copia, vedi Copiare una tabella. L'esempio seguente mostra l'utilizzo dei job di copia:
SELECT DATE(creation_time) as day, project_id as source_project_id, CONCAT(destination_table.project_id,":",destination_table.dataset_id,".",destination_table.table_id) as destination_table, COUNT(job_id) AS copy_job_count FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 8 DAY) AND CURRENT_TIMESTAMP() AND job_type = "COPY" GROUP BY day, source_project_id, destination_table ORDER BY day DESC;
Visualizzare gli approfondimenti sul rendimento per le query
L'esempio seguente restituisce tutti i job di query che hanno informazioni sulle prestazioni della directory del progetto designato 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-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_FOLDER 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 );