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 in corso è una prenotazione che non è stata eliminata. Per ulteriori informazioni sulle prenotazioni, consulta Introduzione alle prenotazioni.

Autorizzazione obbligatoria

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

  • roles/bigquery.resourceAdmin
  • roles/bigquery.resourceEditor
  • roles/bigquery.resourceViewer
  • roles/bigquery.user
  • roles/bigquery.admin

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

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 false, qualsiasi query che utilizza questa prenotazione può utilizzare gli slot inattivi non utilizzati da altri impegni di capacità.
slot_capacity INTEGER Valore 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 possono essere aggiunti alla prenotazione tramite la scalabilità automatica.
edition STRING La versione associata a questa prenotazione. Per ulteriori informazioni sulle versioni, consulta Introduzione alle versioni di BigQuery.

Ambito e sintassi

Le query su questa visualizzazione devono includere un qualificatore regione. Se non specifichi un qualificatore regionale, i metadati vengono recuperati da tutte le regioni. La tabella seguente illustra 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 progetto Google Cloud. Se non specificato, viene utilizzato il progetto predefinito.

  • REGION: qualsiasi nome della regione del set di dati. Ad esempio: `region-us`.

  • Unioni tra le visualizzazioni delle prenotazioni e quelle dei job

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

    Per unire le visualizzazioni delle prenotazioni e le visualizzazioni dei job, puoi unire la colonna delle visualizzazioni dei job reservation_id e le colonne delle visualizzazioni delle prenotazioni project_id e reservation_name. L'esempio seguente mostra un utilizzo della clausola JOIN tra la prenotazione e le visualizzazioni 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 dello slot viene fornito 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 vista RESERVATIONS per recuperare le 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 istantanee temporali del job alle informazioni sulla prenotazione.