Utilizzare le prenotazioni di slot legacy

L'API BigQuery Reservation consente di acquistare slot dedicati (chiamati impegni), creare pool di slot (chiamati prenotazioni) e assegnare progetti, cartelle e organizzazioni a queste prenotazioni.

Le prenotazioni consentono di assegnare un numero dedicato di slot a un carico di lavoro. Ad esempio, potresti non volere che un carico di lavoro di produzione competa con i carichi di lavoro di test per gli slot. Potresti creare una prenotazione denominata prod e assegnare i carichi di lavoro di produzione a questa prenotazione. Per maggiori informazioni, consulta Prenotazioni.

Crea prenotazioni

Autorizzazioni obbligatorie

Per creare una prenotazione, devi disporre della seguente autorizzazione IAM (Identity and Access Management):

Ciascuno dei seguenti ruoli IAM predefiniti include questa autorizzazione:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Per ulteriori informazioni sui ruoli IAM in BigQuery, consulta Autorizzazioni e ruoli predefiniti.

Crea una prenotazione con slot dedicati

Seleziona una delle seguenti opzioni:

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel pannello di navigazione, vai alla sezione Gestione della capacità.

  3. Fai clic su Crea prenotazione.

  4. Nel campo Nome prenotazione, inserisci un nome per la prenotazione.

  5. Nell'elenco a discesa Località, seleziona la località.

  6. Nella sezione Modello di capacità, seleziona il modello di capacità.

  7. Se selezioni l'opzione Tariffa fissa, in Slot di riferimento, inserisci il numero di slot per la prenotazione.

    1. Nell'elenco del selettore Dimensioni massime della prenotazione, seleziona la dimensione massima della prenotazione.
    2. (Facoltativo) Nel campo Slot di riferimento, inserisci il numero di slot di riferimento per la prenotazione. Per utilizzare solo la capacità degli slot specificata, fai clic sul pulsante di attivazione/disattivazione Ignora gli slot inattivi.

      La quantità di slot di scalabilità automatica disponibili viene determinata sottraendo il valore degli slot di riferimento dal valore massimo della dimensione della prenotazione. Ad esempio, se crei una prenotazione con 100 slot di base e una dimensione massima della prenotazione di 400, la prenotazione ha 300 slot con scalabilità automatica. Per maggiori informazioni sugli slot di riferimento, consulta Utilizzo delle prenotazioni con slot di riferimento e con scalabilità automatica.

  8. Per disattivare la condivisione degli slot inattivi, fai clic sull'opzione Ignora gli slot inattivi.

  9. La suddivisione degli slot viene visualizzata nella tabella Stima dei costi. Un riepilogo della prenotazione viene visualizzato nella tabella Riepilogo della capacità.

  10. Fai clic su Salva.

La nuova prenotazione è visibile nella scheda Prenotazioni.

SQL

Per creare una prenotazione, utilizza l'istruzione DDL CREATE RESERVATION.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'Editor query, inserisci la seguente istruzione:

    CREATE RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    OPTIONS (
      slot_capacity = NUMBER_OF_SLOTS,
    );
    

    Sostituisci quanto segue:

    • ADMIN_PROJECT_ID: l'ID del progetto di amministrazione proprietario della risorsa di prenotazione
    • LOCATION: la località della prenotazione. Se selezioni una località di BigQuery Omni, la tua versione è limitata alla versione Enterprise.
    • RESERVATION_NAME: il nome della prenotazione

      Deve iniziare e terminare con una lettera minuscola o un numero e contenere solo lettere minuscole, numeri e trattini.

    • NUMBER_OF_SLOTS: il numero di slot da allocare alla prenotazione. L'impegno deve contenere un numero sufficiente di slot non allocati. Non puoi impostare le opzioni slot_capacity e edition nella stessa prenotazione.
    • EDITION: la versione della prenotazione. L'assegnazione di una prenotazione a una versione comporta modifiche alle funzionalità e ai prezzi. Per saperne di più, consulta Introduzione alle versioni di BigQuery.
    • NUMBER_OF_AUTOSCALING_SLOTS: il numero di slot con scalabilità automatica assegnati alla prenotazione. Disponibile solo quando è specificata l'opzione edition.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

bq

Per creare una prenotazione, utilizza il comando bq mk con il flag --reservation:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation \
    --slots=NUMBER_OF_SLOTS \
    --ignore_idle_slots=false \
    RESERVATION_NAME

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: l'ID progetto
  • LOCATION: la località della prenotazione. Se selezioni una località di BigQuery Omni, l'opzione della tua versione è limitata alla versione Enterprise.
  • NUMBER_OF_SLOTS: il numero di slot da allocare alla prenotazione

    L'impegno deve contenere un numero sufficiente di slot non allocati.

  • RESERVATION_NAME: il nome della prenotazione

  • EDITION: la versione della prenotazione. L'assegnazione di una prenotazione a una versione comporta modifiche alle funzionalità e ai prezzi. Per saperne di più, consulta Introduzione alle versioni di BigQuery.

  • NUMBER_OF_AUTOSCALING_SLOTS: il numero di slot con scalabilità automatica assegnati alla prenotazione. Disponibile solo quando è specificata l'opzione edition.

Per informazioni sul flag --ignore_idle_slots, consulta Slot inattivi. Il valore predefinito è false.

Python

Installa il pacchetto google-cloud-bigquery-reservation prima di utilizzare questo esempio di codice. Crea un ReservationServiceClient. Descrivi la prenotazione che vuoi creare con una prenotazione. Crea la prenotazione con il metodo create_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the number of slots in the
# reservation.
slot_capacity = 100

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

parent = reservation_client.common_location_path(project_id, location)

reservation = reservation_types.Reservation(slot_capacity=slot_capacity)
reservation = reservation_client.create_reservation(
    parent=parent,
    reservation=reservation,
    reservation_id=reservation_id,
)

print(f"Created reservation: {reservation.name}")

Aggiorna prenotazioni

Puoi apportare i seguenti aggiornamenti a una prenotazione:

  • Modifica le dimensioni della prenotazione aggiungendo o rimuovendo slot.
  • Configura se le query in questa prenotazione utilizzano slot inattivi.
  • Modifica il numero di slot di riferimento o di scalabilità automatica assegnati a una prenotazione.

Autorizzazioni obbligatorie

Per aggiornare una prenotazione, devi disporre della seguente autorizzazione IAM (Identity and Access Management):

Ciascuno dei seguenti ruoli IAM predefiniti include questa autorizzazione:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Per ulteriori informazioni sui ruoli IAM in BigQuery, consulta Autorizzazioni e ruoli predefiniti.

Modificare le dimensioni di una prenotazione

Puoi aggiungere o rimuovere slot da una prenotazione esistente.

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel pannello di navigazione, vai alla sezione Gestione della capacità.

  3. Fai clic sulla scheda Prenotazioni.

  4. Trova la prenotazione che vuoi aggiornare.

  5. Espandi l'opzione Azioni.

  6. Fai clic su Modifica.

  7. Nella finestra di dialogo del selettore Dimensione massima prenotazione, inserisci la dimensione massima della prenotazione.

  8. Nel campo Slot di riferimento, inserisci il numero di slot di riferimento.

  9. Fai clic su Salva.

SQL

Per modificare le dimensioni di una prenotazione, utilizza l'istruzione ALTER RESERVATION SET OPTIONS Data Definition Language (DDL).

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'Editor query, inserisci la seguente istruzione:

    ALTER RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    SET OPTIONS (
      slot_capacity = NUMBER_OF_SLOTS,
    );
    

    Sostituisci quanto segue:

    • ADMIN_PROJECT_ID: l'ID del progetto di amministrazione proprietario della risorsa di prenotazione
    • LOCATION: la località della prenotazione, ad esempio europe-west9.
    • RESERVATION_NAME: il nome della prenotazione. Deve iniziare e terminare con una lettera minuscola o un numero e contenere solo lettere minuscole, numeri e trattini.

    • NUMBER_OF_SLOTS: il numero di slot da allocare alla prenotazione.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

bq

Per aggiornare le dimensioni di una prenotazione, utilizza il comando bq update con il flag --reservation:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --slots=NUMBER_OF_SLOTS \
    --reservation RESERVATION_NAME

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: l'ID progetto
  • LOCATION: la località della prenotazione
  • NUMBER_OF_SLOTS: il numero di slot da allocare alla prenotazione
  • RESERVATION_NAME: il nome della prenotazione

Python

Installa il pacchetto google-cloud-bigquery-reservation prima di utilizzare questo esempio di codice. Crea un ReservationServiceClient. Descrivi le proprietà aggiornate con una proprietà Prenotazione e FieldMask.paths. Aggiorna la prenotazione con il metodo update_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the new number of slots in the
# reservation.
slot_capacity = 50

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)
from google.protobuf import field_mask_pb2

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation = reservation_types.Reservation(
    name=reservation_name,
    slot_capacity=slot_capacity,
)
field_mask = field_mask_pb2.FieldMask(paths=["slot_capacity"])
reservation = reservation_client.update_reservation(
    reservation=reservation, update_mask=field_mask
)

print(f"Updated reservation: {reservation.name}")
print(f"\tslot_capacity: {reservation.slot_capacity}")

Configura se le query utilizzano slot inattivi

Il flag --ignore_idle_slots consente di stabilire se le query eseguite in una prenotazione possono utilizzare slot inattivi di altre prenotazioni. Per maggiori informazioni, consulta Slot inattivi. Puoi aggiornare questa configurazione su una prenotazione esistente.

Per aggiornare una prenotazione, utilizza il comando bq update con il flag --reservation . L'esempio seguente imposta --ignore_idle_slots su true, il che significa che la prenotazione utilizzerà solo gli slot assegnati alla prenotazione.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --ignore_idle_slots=true \
    --reservation RESERVATION_NAME

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: l'ID progetto
  • LOCATION: la località della prenotazione
  • RESERVATION_NAME: il nome della prenotazione

Elenca la configurazione degli slot inattivi

Per elencare l'impostazione degli slot inattivi per una prenotazione:

SQL

Esegui una query sulla colonna ignore_idle_slots della vista INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'Editor query, inserisci la seguente istruzione:

    SELECT
      reservation_name,
      ignore_idle_slots
    FROM
      `ADMIN_PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT;
    

    Sostituisci quanto segue:

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

bq

Utilizza il comando bq ls con il flag --reservation:

bq ls --reservation \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION

Sostituisci quanto segue:

Il campo ignoreIdleSlots contiene l'impostazione di configurazione.

Elimina prenotazioni

Quando elimini una prenotazione, tutti i job attualmente in esecuzione con slot di quella prenotazione non andranno a buon fine. Per evitare errori, consenti il completamento dei job in esecuzione prima di eliminare la prenotazione.

Autorizzazioni obbligatorie

Per eliminare una prenotazione, devi disporre della seguente autorizzazione IAM (Identity and Access Management):

Ciascuno dei seguenti ruoli IAM predefiniti include questa autorizzazione:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Per ulteriori informazioni sui ruoli IAM in BigQuery, consulta Autorizzazioni e ruoli predefiniti.

Eliminazione di una prenotazione

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel pannello di navigazione, vai alla sezione Gestione della capacità.

  3. Fai clic sulla scheda Prenotazioni.

  4. Trova la prenotazione da eliminare.

  5. Espandi l'opzione Azioni.

  6. Fai clic su Elimina.

  7. Nella finestra di dialogo Elimina prenotazione, fai clic su Elimina.

SQL

Per eliminare una prenotazione, utilizza l'istruzione DDL DROP RESERVATION.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'Editor query, inserisci la seguente istruzione:

    DROP RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`;
    

    Sostituisci quanto segue:

    • ADMIN_PROJECT_ID: l'ID del progetto di amministrazione proprietario della risorsa di prenotazione
    • LOCATION: la località della prenotazione
    • RESERVATION_NAME: l'ID della prenotazione

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

bq

Per eliminare una prenotazione, utilizza il comando bq rm con il flag --reservation:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation RESERVATION_NAME

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: l'ID del progetto di amministrazione proprietario della risorsa di prenotazione
  • LOCATION: la località della prenotazione
  • RESERVATION_NAME: il nome della prenotazione

Python

Installa il pacchetto google-cloud-bigquery-reservation prima di utilizzare questo esempio di codice. Crea un ReservationServiceClient. Elimina la prenotazione con il metodo delete_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)
reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation_client.delete_reservation(name=reservation_name)

print(f"Deleted reservation: {reservation_name}")

Aggiungere l'API BigQuery Reservation ai Controlli di servizio VPC

L'API BigQuery Reservation supporta i Controlli di servizio VPC. Per integrare l'API BigQuery Reservation con i Controlli di servizio VPC, segui le istruzioni riportate in Creare un perimetro di servizio e aggiungi l'API BigQuery Reservation ai servizi protetti.

Un perimetro di servizio protegge l'accesso a prenotazioni, impegni e assegnazioni all'interno dei progetti di amministrazione specificati all'interno del perimetro. Quando crei un'assegnazione, i Controlli di servizio VPC proteggono il progetto di amministrazione e il progetto, la cartella e l'organizzazione dell'assegnatario.