Recupero dei metadati delle prenotazioni mediante INFORMATION_SCHEMA

INFORMATION_SCHEMA è una serie di viste che forniscono accesso a metadati su set di dati, routine, tabelle, viste, job, prenotazioni e flussi di dati.

Puoi eseguire query sulle viste delle prenotazioni INFORMATION_SCHEMA per recuperare i metadati in tempo reale sulle prenotazioni BigQuery. Queste visualizzazioni contengono un elenco delle modifiche a prenotazioni, assegnazioni e impegni di capacità, insieme a una cronologia delle prenotazioni.

Prima di iniziare

Concedi i ruoli IAM (Gestione di identità e accessi) che offrono agli utenti le autorizzazioni necessarie per eseguire ogni attività del documento.

Autorizzazioni obbligatorie

Per recuperare i metadati delle prenotazioni utilizzando le tabelle INFORMATION_SCHEMA, devi disporre delle seguenti autorizzazioni IAM:

  • Per RESERVATION_CHANGES_BY_PROJECT e RESERVATIONS_BY_PROJECT, è necessario quanto segue:

    • bigquery.reservations.list del progetto

      Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni precedenti:

      • roles/bigquery.resourceAdmin
      • roles/bigquery.resourceEditor
      • roles/bigquery.resourceViewer
      • roles/bigquery.user
      • roles/bigquery.admin
  • Per CAPACITY_COMMITMENT_CHANGES_BY_PROJECT e CAPACITY_COMMITMENTS_BY_PROJECT, è necessario quanto segue:

    • bigquery.capacityCommitments.list del progetto

      Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni precedenti:

      • roles/bigquery.resourceAdmin
      • roles/bigquery.resourceEditor
      • roles/bigquery.resourceViewer
      • roles/bigquery.user
      • roles/bigquery.admin
  • Per ASSIGNMENT_CHANGES_BY_PROJECT e ASSIGNMENTS_BY_PROJECT, è necessario quanto segue:

    • bigquery.reservationAssignments.list per il progetto.

      Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni precedenti:

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

Per ulteriori informazioni sulle autorizzazioni BigQuery granulari, consulta Ruoli e autorizzazioni predefiniti.

Schemi

Quando esegui una query sulle viste delle prenotazioni INFORMATION_SCHEMA, i risultati della query contengono informazioni sulle prenotazioni BigQuery. Per ulteriori informazioni sulle prenotazioni BigQuery, consulta la pagina Concetti sulle prenotazioni.

  • INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT contiene un elenco di tutte le modifiche alle prenotazioni nel progetto di amministrazione. Ogni riga rappresenta una modifica a una singola prenotazione.
  • INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT contiene un elenco di tutte le prenotazioni correnti all'interno del progetto di amministrazione. Ogni riga rappresenta una singola prenotazione attuale. Una prenotazione attuale è una prenotazione che non è stata eliminata.
  • INFORMATION_SCHEMA.CAPACITY_COMMITMENT_CHANGES_BY_PROJECT contiene un elenco di tutte le modifiche agli impegni relativi alla capacità all'interno del progetto di amministrazione. Ogni riga rappresenta una singola modifica a un singolo impegno di capacità.
  • INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT contiene un elenco di tutti gli impegni correnti relativi alla capacità all'interno del progetto di amministrazione. Ogni riga rappresenta un impegno di capacità singolo e corrente. Un impegno di capacità attuale è in attesa o attivo e non è stato eliminato.
  • INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT contiene un elenco di tutte le modifiche alle assegnazioni all'interno del progetto di amministrazione. Ogni riga rappresenta una singola modifica a una singola assegnazione.
  • INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT contiene un elenco di tutte le assegnazioni correnti all'interno del progetto di amministrazione. Ogni riga rappresenta una singola assegnazione corrente. Un'assegnazione corrente è in attesa o attiva e non è stata eliminata.

La vista INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT ha il seguente schema:

Nome colonna Tipo di dati Valore
change_timestamp TIMESTAMP L'ora in cui si è verificata la modifica.
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 slot inattivi non utilizzati da altri impegni di capacità.
action STRING Tipo di evento che si è verificato con la prenotazione. Può essere CREATE, UPDATE o DELETE.
slot_capacity INTEGER Capacità dell'area annuncio associata alla prenotazione.
user_email STRING Indirizzo email dell'utente che ha apportato la modifica. google per le modifiche apportate da Google. NULL se l'indirizzo email è sconosciuto.

La vista INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT 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 il valore è false, qualsiasi query che utilizza questa prenotazione può utilizzare slot inattivi non utilizzati da altri impegni di capacità.
slot_capacity INTEGER Capacità dell'area annuncio associata alla prenotazione.

La vista INFORMATION_SCHEMA.CAPACITY_COMMITMENT_CHANGES_BY_PROJECT ha il seguente schema:

Nome colonna Tipo di dati Valore
change_timestamp TIMESTAMP L'ora in cui si è verificata la modifica.
project_id STRING ID del progetto di amministrazione.
project_number INTEGER Numero del progetto di amministrazione.
capacity_commitment_id STRING ID che identifica in modo univoco l'impegno di capacità.
commitment_plan STRING Piano di impegno per l'impegno di capacità.
state STRING Dichiara l'impegno di capacità. Può essere PENDING o ACTIVE.
slot_count INTEGER Conteggio slot associato all'impegno di capacità.
action STRING Tipo di evento che si è verificato con l'impegno di capacità. Può essere CREATE, UPDATE o DELETE.
user_email STRING Indirizzo email dell'utente che ha apportato la modifica. google per le modifiche apportate da Google. NULL se l'indirizzo email è sconosciuto.
commitment_start_time TIMESTAMP L'inizio del periodo di impegno corrente. Applicabile solo per impegni di capacità ACTIVE, altrimenti equivale a NULL.
commitment_end_time TIMESTAMP La fine del periodo di impegno corrente. Applicabile solo per impegni di capacità ACTIVE, altrimenti equivale a NULL.
failure_status RECORD Per un piano basato su impegno di FAILED, viene fornito il motivo dell'errore, altrimenti si tratta di NULL. RECORD è costituito da code e message.
renewal_plan STRING Il piano in cui viene eseguito l'impegno di capacità viene convertito dopo commitment_end_time. Dopo la modifica del piano, il periodo di impegno viene prolungato in base al piano di impegno. Applicabile solo per impegni ANNUAL e TRIAL, altrimenti equivale a NULL.

La vista INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT ha il seguente schema:

Nome colonna Tipo di dati Valore
ddl STRING L'istruzione DDL utilizzata per creare questo impegno di capacità.
project_id STRING ID del progetto di amministrazione.
project_number INTEGER Numero del progetto di amministrazione.
capacity_commitment_id STRING ID che identifica in modo univoco l'impegno di capacità.
commitment_plan STRING Piano di impegno per l'impegno di capacità.
state STRING Dichiara l'impegno di capacità. Può essere PENDING o ACTIVE.
slot_count INTEGER Conteggio slot associato all'impegno di capacità.

La vista INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT ha il seguente schema:

Nome colonna Tipo di dati Valore
change_timestamp TIMESTAMP L'ora in cui si è verificata la modifica.
project_id STRING ID del progetto di amministrazione.
project_number INTEGER Numero del progetto di amministrazione.
assignment_id STRING ID che identifica in modo univoco l'assegnazione.
reservation_name STRING Nome della prenotazione utilizzata dall'assegnazione.
job_type STRING Il tipo di job che può utilizzare la prenotazione. Può essere PIPELINE o QUERY.
assignee_id STRING ID che identifica in modo univoco la risorsa dell'assegnatario.
assignee_number INTEGER Numero che identifica in modo univoco la risorsa dell'assegnatario.
assignee_type STRING Tipo di risorsa assegnatario. Può essere organization, folder o project.
action STRING Tipo di evento che si è verificato con l'assegnazione. Può essere CREATE o DELETE.
user_email STRING Indirizzo email dell'utente che ha apportato la modifica. google per le modifiche apportate da Google. NULL se l'indirizzo email è sconosciuto.
state STRING Stato dell'assegnazione. Può essere PENDING o ACTIVE.

La vista INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT ha il seguente schema:

Nome colonna Tipo di dati Valore
ddl STRING L'istruzione DDL utilizzata per creare questa assegnazione.
project_id STRING ID del progetto di amministrazione.
project_number INTEGER Numero del progetto di amministrazione.
assignment_id STRING ID che identifica in modo univoco l'assegnazione.
reservation_name STRING Nome della prenotazione utilizzata dall'assegnazione.
job_type STRING Il tipo di job che può utilizzare la prenotazione. Può essere PIPELINE o QUERY.
assignee_id STRING ID che identifica in modo univoco la risorsa dell'assegnatario.
assignee_number INTEGER Numero che identifica in modo univoco la risorsa dell'assegnatario.
assignee_type STRING Tipo di risorsa assegnatario. Può essere organization, folder o project.

Conservazione dei dati

Le prenotazioni, gli impegni e le assegnazioni correnti vengono mantenuti nelle viste delle prenotazioni fino a quando non vengono eliminati. Le prenotazioni, gli impegni e le assegnazioni eliminati vengono conservati rispettivamente nelle visualizzazioni RESERVATION_CHANGES_BY_PROJECT, CAPACITY_COMMITMENT_CHANGES_BY_PROJECT e ASSIGNMENT_CHANGES_BY_PROJECT per un massimo di 41 giorni, dopodiché vengono rimossi dalle visualizzazioni.

Aree geografiche

Le viste delle prenotazioni INFORMATION_SCHEMA di BigQuery sono suddivise a livello di area geografica. Per eseguire query su queste viste, devi utilizzare un qualificatore per area geografica.

Unione delle viste delle prenotazioni e delle offerte di lavoro

Le visualizzazioni di lavoro 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 di prenotazione e quelle delle offerte di lavoro, puoi passare dalla colonna delle visualizzazioni delle offerte di lavoro reservation_id alle colonne delle visualizzazioni di prenotazione project_id e reservation_name; guarda questo esempio.

Esempi

I seguenti esempi mostrano vari utilizzi delle visualizzazioni di prenotazione.

Assegnazione di prenotazione corrente per un progetto

L'esempio seguente riceve una prenotazione del progetto attualmente assegnata e la sua capacità di slot. Queste informazioni sono utili per il debug delle prestazioni del job, grazie al confronto dell'utilizzo degli slot del progetto con la capacità dello slot della prenotazione assegnata a tale progetto.

SELECT
  reservation.reservation_name,
  reservation.slot_capacity
FROM
  `reservation-admin-project.region-us`.
  INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT assignment
INNER JOIN
  `reservation-admin-project.region-us`.
  INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT AS reservation
ON
  (assignment.reservation_name = reservation.reservation_name)
WHERE
   assignment.assignee_id = "my-project"
  AND job_type = "QUERY";

Cronologia prenotazioni

L'esempio seguente mostra la cronologia delle modifiche per una determinata prenotazione. Utilizza queste informazioni per visualizzare l'elenco delle modifiche apportate a una prenotazione specifica, ad esempio la creazione o l'eliminazione della prenotazione.

SELECT
  *
FROM
  `reservation-admin-project.region-us`.
  INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT
WHERE
  reservation_name = "my-reservation"
ORDER BY
  change_timestamp DESC;

Utilizzo slot nel tempo

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 è dato in unità di millisecondi dell'area annuncio 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_BY_PROJECT 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_BY_PROJECT 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_BY_PROJECT per ricevere informazioni sulle prenotazioni. Se le prenotazioni sono cambiate nell'ultima ora, la colonna reservation_slot_capacity potrebbe non essere accurata.

La query unisce RESERVATIONS_BY_PROJECT a JOBS_TIMELINE_BY_PROJECT per associare le sequenze temporali del job alle informazioni di prenotazione.

Passaggi successivi