Visualizzazione PRENOTAZIONI

La visualizzazione INFORMATION_SCHEMA.RESERVATIONS contiene un elenco quasi in tempo reale di tutte le prenotazioni correnti all'interno del progetto di amministrazione. Ogni riga rappresenta una singola prenotazione corrente. Una prenotazione corrente è una prenotazione che non è stata eliminata. Per saperne di più sulla prenotazione, vedi Introduzione alle prenotazioni.

Autorizzazione obbligatoria

Per eseguire query sulla visualizzazione INFORMATION_SCHEMA.RESERVATIONS, devi disporre dell'autorizzazione IAM (Identity and Access Management) bigquery.reservations.list per il progetto. Ognuno dei seguenti ruoli IAM predefiniti include l'autorizzazione richiesta:

  • Amministratore risorse BigQuery (roles/bigquery.resourceAdmin)
  • Editor risorse BigQuery (roles/bigquery.resourceEditor)
  • Visualizzatore risorse BigQuery (roles/bigquery.resourceViewer)
  • Utente BigQuery (roles/bigquery.user)
  • Amministratore BigQuery (roles/bigquery.admin)

Per saperne di più sulle autorizzazioni di BigQuery, vedi Ruoli e autorizzazioni IAM di BigQuery.

Schema

La visualizzazione INFORMATION_SCHEMA.RESERVATIONS ha il seguente schema:

Nome colonna Tipo di dati Valore
ddl STRING L'istruzione DDL utilizzata per creare questa prenotazione.
project_id STRING ID del progetto di amministrazione.
project_number INTEGER Numero del progetto di amministrazione.
reservation_name STRING Nome della prenotazione fornito dall'utente.
ignore_idle_slots BOOL Se è false, qualsiasi query che utilizza questa prenotazione può utilizzare gli slot inattivi non utilizzati da altri impegni di capacità.
slot_capacity INTEGER Base di riferimento della prenotazione.
target_job_concurrency INTEGER Il numero target di query che possono essere eseguite contemporaneamente, che è limitato dalle risorse disponibili. Se è zero, questo valore viene calcolato automaticamente in base alle risorse disponibili.
autoscale STRUCT

Informazioni sulla capacità di scalabilità automatica della prenotazione. I campi includono:

  • current_slots: il numero di slot aggiunti alla prenotazione dalla scalabilità automatica.
  • max_slots: il numero massimo di slot che potrebbero essere aggiunti alla prenotazione dalla scalabilità automatica.
edition STRING La versione associata a questa prenotazione. Per saperne di più sulle versioni, vedi Introduzione alle versioni di BigQuery.
primary_location STRING La località attuale della replica principale della prenotazione. Questo campo viene impostato solo per le prenotazioni che utilizzano la funzionalità di ripristino di emergenza gestito .
secondary_location STRING La località attuale della replica secondaria della prenotazione. Questo campo viene impostato solo per le prenotazioni che utilizzano la funzionalità di ripristino di emergenza gestito .
original_primary_location STRING La località in cui è stata creata originariamente la prenotazione.
labels RECORD Array di etichette associate alla prenotazione.
reservation_group_path ARRAY<STRING> La struttura gerarchica del gruppo a cui è collegata la prenotazione. Ad esempio, se la struttura del gruppo include un gruppo principale e un gruppo secondario, il campo reservation_group_path contiene un elenco come: [parent group, child group]. Questo campo è in anteprima.
max_slots INTEGER Il numero massimo di slot che questa prenotazione può utilizzare, inclusi gli slot di riferimento (slot_capacity), gli slot inattivi (se ignore_idle_slots è false) e gli slot di scalabilità automatica. Questo campo viene specificato dagli utenti per l'utilizzo della funzionalità di prevedibilità della prenotazione.
scaling_mode STRING La modalità di scalabilità per la prenotazione, che determina la scalabilità della prenotazione dalla base di riferimento a max_slots. Questo campo viene specificato dagli utenti per l'utilizzo della funzionalità di prevedibilità della prenotazione.

Per garantire la stabilità, ti consigliamo di elencare esplicitamente le colonne nelle query dello schema informativo anziché utilizzare un carattere jolly (SELECT *). L'elenco esplicito delle colonne impedisce l'interruzione delle query se lo schema sottostante cambia.

Ambito e sintassi

Le query su questa visualizzazione devono includere un qualificatore di regione. La tabella seguente spiega l'ambito della regione per questa visualizzazione:

Nome visualizzazione Ambito risorsa Ambito regione
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS[_BY_PROJECT] Livello progetto REGION
Sostituisci quanto segue:
  • (Facoltativo) PROJECT_ID: l'ID del tuo Cloud de Confiance progetto. Se non specificato, viene utilizzato il progetto predefinito.
  • REGION: qualsiasi nome di regione del set di dati. Ad esempio, `region-us`.

Unione tra le visualizzazioni delle prenotazioni e le visualizzazioni dei job

Le visualizzazioni dei job contengono la colonna reservation_id. Se il job è stato eseguito in un progetto a cui è stata assegnata una prenotazione it, reservation_id avrà il seguente formato: reservation-admin-project:reservation-location.reservation-name.

Per unire le visualizzazioni delle prenotazioni e le visualizzazioni dei job, puoi unire la colonna reservation_id delle visualizzazioni dei job e le colonne project_id e reservation_name delle visualizzazioni delle prenotazioni. L'esempio seguente mostra un esempio di utilizzo della clausola JOIN tra le visualizzazioni delle prenotazioni e dei job.

Esempio

L'esempio seguente mostra l'utilizzo degli slot, la capacità degli slot e la prenotazione assegnata per un progetto con un'assegnazione di prenotazione nell'ultima ora. L'utilizzo degli slot è espresso in unità di millisecondi di slot al secondo.

WITH
  job_data AS (
  SELECT
    job.period_start,
    job.reservation_id,
    job.period_slot_ms,
    job.job_id,
    job.job_type
  FROM
    `my-project.region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE AS job
  WHERE
    job.period_start > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR))
SELECT
  reservation.reservation_name AS reservation_name,
  job.period_start,
  reservation.slot_capacity,
  job.period_slot_ms,
  job.job_id,
  job.job_type
FROM
  job_data AS job
INNER JOIN
  `reservation-admin-project.region-us`.INFORMATION_SCHEMA.RESERVATIONS AS reservation
ON
  (job.reservation_id = CONCAT(reservation.project_id, ":", "US", ".", reservation.reservation_name));

L'output è simile al seguente:

+------------------+---------------------+---------------+----------------+------------------+----------+
| reservation_name |    period_start     | slot_capacity | period_slot_ms |           job_id | job_type |
+------------------+---------------------+---------------+----------------+------------------+----------+
| my_reservation   | 2021-04-30 17:30:54 |           100 |          11131 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:55 |           100 |          49978 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:56 |           100 |           9038 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:57 |           100 |          17237 | bquxjob_66707... | QUERY    |

Questa query utilizza la visualizzazione RESERVATIONS per ottenere informazioni sulla prenotazione. Se le prenotazioni sono cambiate nell'ultima ora, la colonna reservation_slot_capacity potrebbe non essere accurata.

La query unisce RESERVATIONS a JOBS_TIMELINE per associare le sezioni temporali dei job alle informazioni sulla prenotazione.