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:
  • REQUESTED: è stata richiesta la creazione di un job.
  • LONG_RUNNING: la richiesta di query è stata eseguita oltre un timeout definito dal sistema specificato dal campo timeoutMs in QueryRequest. Di conseguenza, è stata considerata un'operazione a lunga esecuzione 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 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:
  • RESERVATION_ADMIN_PROJECT: il nome del progetto Google Cloud che amministra la prenotazione
  • RESERVATION_LOCATION: la località della prenotazione
  • RESERVATION_NAME: il nome della prenotazione
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
Sostituisci quanto segue:

  • 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
      );