Visualizzazione PRENOTAZIONI

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, consulta Introduzione alle prenotazioni.

Autorizzazione obbligatoria

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

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

Per ulteriori informazioni sulle autorizzazioni BigQuery, consulta Ruoli e autorizzazioni IAM di BigQuery.

Schema

La visualizzazione INFORMATION_SCHEMA.RESERVATIONS ha lo schema seguente:

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 il valore è false, qualsiasi query che utilizza questa prenotazione può utilizzare gli slot inattivi non utilizzati di altri impegni di capacità.
slot_capacity INTEGER Il punto 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 tramite la scalabilità automatica.
  • max_slots: il numero massimo di slot che potrebbero essere aggiunti alla prenotazione tramite la scalabilità automatica.
edition STRING La versione associata a questa prenotazione. Per ulteriori informazioni sulle versioni, vedi Introduzione alle versioni di BigQuery.
primary_location STRING La posizione 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 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, che include slot di riferimento (slot_capacity), slot inattivi (se ignore_idle_slots è false) e slot con 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 il modo in cui la prenotazione viene scalata dalla baseline 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 vista 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 specificato, viene utilizzato il progetto predefinito.
  • REGION: qualsiasi nome della regione del set di dati. Ad esempio: `region-us`.

Unione tra le visualizzazioni delle prenotazioni e quelle dei lavori

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

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

Esempio

Il seguente esempio 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 precisa.

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