JOBS_TIMELINE_BY_ORGANIZATION visualizzazione

La visualizzazione INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION contiene metadati BigQuery in tempo reale per timelice per tutti i job inviati nell'organizzazione associata al progetto corrente. Questa visualizzazione contiene i job attualmente in esecuzione e completati.

Autorizzazioni obbligatorie

Per eseguire una query sulla visualizzazione INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION, è necessaria l'autorizzazione bigquery.jobs.listAll Identity and Access Management (IAM) per l'organizzazione. Ciascuno dei seguenti ruoli IAM predefiniti include l'autorizzazione richiesta:

  • Amministratore risorse BigQuery a livello di organizzazione
  • Proprietario dell'organizzazione
  • Amministratore dell'organizzazione

La tabella schema JOBS_BY_ORGANIZATION è disponibile solo per gli utenti con organizzazioni Google Cloud definite.

Per ulteriori informazioni sulle autorizzazioni BigQuery, consulta Controllo dell'accesso con IAM.

Schema

Quando esegui una query sulle viste INFORMATION_SCHEMA.JOBS_TIMELINE_BY_*, i risultati della query contengono una riga per ogni secondo di esecuzione di ogni job BigQuery. Ogni ciclo inizia con un intervallo di 1 secondo e dura esattamente un secondo.

La vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_* ha il seguente schema:

Nome colonna Tipo di dati Valore
period_start TIMESTAMP Ora di inizio di questo periodo.
period_slot_ms INTEGER Slot in millisecondi utilizzati in questo periodo.
period_shuffle_ram_usage_ratio FLOAT Rapporto di utilizzo casuale nel periodo di tempo selezionato.
project_id STRING (Colonna di clustering) dell'ID del progetto.
project_number INTEGER Numero del progetto.
user_email STRING (Colonna di clustering) Indirizzo email o account di servizio dell'utente che ha eseguito il job.
job_id STRING ID del lavoro. Ad esempio, bquxjob_1234.
job_type STRING Il tipo di prestazione. Può essere QUERY, LOAD, EXTRACT, COPY o null. Il tipo di job null indica un job interno, ad esempio la valutazione di un'istruzione di script o l'aggiornamento di una visualizzazione materializzata.
statement_type STRING Il tipo di istruzione di query, se valido. Ad esempio, SELECT, INSERT, UPDATE o DELETE.
job_creation_time TIMESTAMP (Colonna di partizionamento) Ora di creazione di questo job. Il partizionamento si basa sull'ora UTC di questo timestamp.
job_start_time TIMESTAMP Ora di inizio di questo job.
job_end_time TIMESTAMP Ora di fine di questo job.
state STRING Esecuzione del job alla fine di questo periodo. Gli stati validi includono PENDING, RUNNING e DONE.
reservation_id STRING Nome della prenotazione principale assegnata a questo job alla fine di questo periodo, se applicabile.
total_bytes_processed INTEGER Byte totali elaborati dal job.
error_result RECORD Dettagli dell'errore (se presente) come ErrorProto.
cache_hit BOOLEAN Indica se i risultati della query di questo job provengono da una cache.
period_estimated_runnable_units INTEGER Unità di lavoro che possono essere programmate immediatamente in questo periodo. Gli slot aggiuntivi per queste unità di lavoro accelerano la query, a condizione che nessun'altra query nella prenotazione richieda slot aggiuntivi.

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 vista devono includere un qualificatore per area geografica. Se non specifichi un qualificatore a livello di regione, i metadati vengono recuperati da tutte le regioni. La seguente tabella spiega l'ambito dell'area geografica per questa visualizzazione:

Nome visualizzazione Ambito delle risorse Ambito della regione
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION Organizzazione che contiene il progetto specificato REGION
Sostituisci quanto segue:

  • Facoltativo: PROJECT_ID: l'ID del tuo progetto Cloud. Se non è specificato, viene utilizzato il progetto predefinito.
  • REGION: qualsiasi nome della regione del set di dati. Ad esempio: region-us.

Esempi

Esempio: visualizzazione dell'utilizzo totale degli slot al minuto

Per eseguire la query su un progetto diverso da quello predefinito, aggiungi l'ID progetto nel seguente formato:

`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
. Ad esempio, `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION.

L'esempio seguente mostra l'utilizzo dello slot al minuto dai progetti assegnati a YOUR_RESERVATION_ID in tutti i job:

SELECT
  res.period_start,
  SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes,
  ANY_VALUE(res.slots_assigned) AS slot_assigned,
  ANY_VALUE(res.slots_max_assigned) AS slots_max_assigned
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs
JOIN
  `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res
  ON
    TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start
    AND jobs.reservation_id = res.reservation_id
WHERE
  jobs.job_creation_time
    BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
    AND CURRENT_TIMESTAMP()
  AND res.reservation_id = 'YOUR_RESERVATION_ID'
  AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL)  -- Avoid duplicate byte counting in parent and children jobs.
GROUP BY
  period_start
ORDER BY
  period_start DESC;

Il risultato è simile al seguente:

+-----------------------+---------------------+---------------+-------------------+
|     period_start      | period_slot_minutes | slots_assigned| slots_max_assigned|
+-----------------------+---------------------+---------------+-------------------+
|2021-06-08 21:33:00 UTC|       100.000       |      100      |        100        |
|2021-06-08 21:32:00 UTC|        96.753       |      100      |        100        |
|2021-06-08 21:31:00 UTC|        41.668       |      100      |        100        |
+-----------------------+---------------------+---------------+-------------------+

Esempio: utilizzo degli slot per prenotazione

L'esempio seguente mostra l'utilizzo dello slot al minuto per ogni prenotazione nell'ultimo giorno:

SELECT
  res.period_start,
  res.reservation_id,
  SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes,
  ANY_VALUE(res.slots_assigned) AS slots_assigned,
  ANY_VALUE(res.slots_max_assigned) AS slots_max_assigned,
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs
JOIN
  `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res
  ON TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start
     AND jobs.reservation_id = res.reservation_id
WHERE
  jobs.job_creation_time
  BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
  AND CURRENT_TIMESTAMP()
  AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL)  -- Avoid duplicate byte counting in parent and children jobs.
GROUP BY
  period_start,
  reservation_id
ORDER BY
  period_start DESC,
  reservation_id;

Il risultato è simile al seguente:

+-----------------------+----------------+---------------------+---------------+--------------------+
|     period_start      | reservation_id | period_slot_minutes | slot_assigned | slots_max_assigned |
+-----------------------+----------------+---------------------+---------------+--------------------+
|2021-06-08 21:33:00 UTC|     prod01     |       100.000       |      100      |        100         |
|2021-06-08 21:33:00 UTC|     prod02     |       177.201       |      200      |        500         |
|2021-06-08 21:32:00 UTC|     prod01     |        96.753       |      100      |        100         |
|2021-06-08 21:32:00 UTC|     prod02     |       182.329       |      200      |        500         |
+-----------------------+----------------+---------------------+---------------+--------------------+