Vista RESERVATIONS

La vista 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 corrente. Una prenotazione attuale è una prenotazione che non è stata eliminata. Per saperne di più sulla prenotazione, consulta Introduzione alle prenotazioni.

Autorizzazione obbligatoria

Per eseguire query sulla vista 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)
  • BigQuery Resource Editor (roles/bigquery.resourceEditor)
  • BigQuery Resource Viewer (roles/bigquery.resourceViewer)
  • Utente BigQuery (roles/bigquery.user)
  • Amministratore BigQuery (roles/bigquery.admin)

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

Schema

La vista 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 impostato su false, qualsiasi query che utilizza questa prenotazione può utilizzare slot inattivi non utilizzati di altri impegni di capacità.
slot_capacity INTEGER La capacità degli slot di riferimento della prenotazione.
target_job_concurrency INTEGER Il numero target di query che possono essere eseguite contemporaneamente, limitato dalle risorse disponibili. Se è pari a 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 tramite la scalabilità automatica.
  • max_slots: il numero massimo di slot che è possibile aggiungere alla prenotazione tramite la scalabilità automatica.
edition STRING La versione associata a questa prenotazione. Per saperne di più sulle versioni, consulta 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 posizione 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 con scalabilità automatica. Questo campo viene specificato dagli utenti per utilizzare la funzionalità di prevedibilità delle prenotazioni.
scaling_mode STRING La modalità di scalabilità della prenotazione, che determina il modo in cui la prenotazione scala dalla base di riferimento a max_slots. Questo campo viene specificato dagli utenti per utilizzare la funzionalità di prevedibilità delle prenotazioni.

Per garantire la stabilità, ti consigliamo di elencare esplicitamente le colonne nelle query dello schema di informazioni 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 vista devono includere un qualificatore della regione. La tabella seguente spiega l'ambito della regione per questa visualizzazione:

Nome vista Ambito risorsa Ambito della regione
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS[_BY_PROJECT] Livello progetto 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`.

Unione delle visualizzazioni delle prenotazioni e dei job

Le viste dei job contengono la colonna reservation_id. Se il job è stato eseguito in un progetto con una prenotazione assegnata, reservation_id segue questo formato: reservation-admin-project:reservation-location.reservation-name.

Per unire le visualizzazioni delle prenotazioni e quelle 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 di prenotazione e job.

Esempio

L'esempio seguente mostra l'utilizzo degli slot, la capacità degli slot e l'assegnazione della prenotazione per un progetto con un'assegnazione della prenotazione nell'ultima ora. L'utilizzo degli slot è espresso in unità di slot millisecondi 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 vista RESERVATIONS per ottenere informazioni sulle prenotazioni. Se le prenotazioni sono cambiate nell'ultima ora, la colonna reservation_slot_capacity potrebbe non essere accurata.

La query unisce RESERVATIONS con JOBS_TIMELINE per associare le fasce orarie dei job alle informazioni sulla prenotazione.