Visualizzazione JOBS_BY_FOLDER

La visualizzazione INFORMATION_SCHEMA.JOBS_BY_FOLDER contiene metadati quasi in tempo reale su tutti i job inviati nella cartella padre del progetto corrente, inclusi dei 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 per ottenere altre informazioni sui tuoi job di query.

La vista INFORMATION_SCHEMA.JOBS_BY_FOLDER ha il seguente schema:

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 Se i risultati della query per 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 di partizione) Ora di creazione di questo job. Il partizionamento è in base all'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 come oggetti ErrorProto.
folder_numbers REPEATED INTEGER Numero di ID delle cartelle che contengono il progetto, a partire dalla cartella immediatamente contiene il progetto, seguito dalla cartella che contiene la cartella secondaria e così via. Ad esempio, se folder_numbers è [1, 2, 3], allora la cartella 1 contiene subito il progetto, la cartella 2 contiene 1 e la cartella 3 contiene 2. Questa colonna è solo compilata in JOBS_BY_FOLDER.
job_creation_reason.code STRING Specifica il motivo generale per cui è stato creato un job.
I valori possibili sono:
  • REQUESTED: è stata richiesta la creazione di un job.
  • LONG_RUNNING: la richiesta della query è stata eseguita oltre un timeout definito dal sistema specificato dal timeoutMs in QueryRequest. Di conseguenza, è stata considerata una lunga durata per la quale è stato creato un job.
  • LARGE_RESULTS: i risultati della query non possono essere inseriti nella risposta in linea.
  • OTHER: il sistema ha stabilito che la query deve essere eseguita come job.
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 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 vista JOBS_BY_PROJECT contiene la query colonna.
referenced_tables RECORD Array di tabelle a cui fa riferimento il job. 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:
  • RESERVATION_ADMIN_PROJECT: il nome del progetto Google Cloud che gestisce la prenotazione
  • RESERVATION_LOCATION: il luogo della prenotazione
  • RESERVATION_NAME: il nome della prenotazione
edition STRING La versione associata alla prenotazione assegnata a questo job. Per saperne di più 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 di tempo 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 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 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 Millisecondi di slot per il job per l'intera durata nello stato RUNNING, inclusi i nuovi tentativi.
transaction_id STRING ID della transazione in cui è stato eseguito questo 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, ottieni punti dati aggiuntivi per ottimizzare le query e impostare 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 attualmente 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
Sostituisci quanto segue:

  • Facoltativo: PROJECT_ID: l'ID del tuo progetto Google Cloud. Se non viene specificato, viene utilizzato il progetto predefinito.

Esempio

La seguente query mostra l'ID, l'ora di creazione e lo stato (PENDING, RUNNING o DONE) di tutti i job interattivi nel progetto designato cartella:

SELECT
  job_id,
  creation_time,
  state
FROM
  `region-us`.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                        |
+--------------+---------------------------+---------------------------------+

Ottieni 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 aggregare l'utilizzo e fanno in modo che i job di esportazione rimangano al di sotto dei 50 TB al giorno limite:

SELECT
    DATE(creation_time) as day,
    project_id as source_project_id,
    SUM(total_bytes_processed) AS total_bytes_processed
 FROM
   region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT
 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 fornisce l'utilizzo di 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-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT
 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 informazioni sulle prestazioni per le query

L'esempio seguente restituisce tutti i job di query che contengono 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-us`.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
  );