Visualizzazione RESERVATIONS

La visualizzazione INFORMATION_SCHEMA.RESERVATIONS contiene un elenco quasi in tempo reale di tutte le prenotazioni attuali all'interno del progetto di amministrazione. Ogni riga rappresenta una singola prenotazione attuale. Una prenotazione attuale è una prenotazione che non è stata eliminata. Per saperne di più sulle prenotazioni, 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)
  • BigQuery Admin (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 primaria 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> Il gruppo di prenotazioni a cui è collegata la prenotazione. Ad esempio, se la prenotazione è collegata al gruppo my-group, il campo reservation_group_path contiene un elenco come: [my-group].
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à delle prenotazioni .
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à delle prenotazioni .

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 vista 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 Google Cloud progetto. Se non viene specificato, viene utilizzato il progetto predefinito.
  • REGION: il nome di una 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.