Utilizzare le assegnazioni di prenotazione

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

Crea assegnazioni di prenotazione

Per utilizzare gli slot acquistati, crea un'assegnazione che assegna un progetto, una cartella o un'organizzazione a una prenotazione di slot.

I progetti utilizzano la singola prenotazione più specifica nella gerarchia delle risorse a cui sono assegnati. Un'assegnazione di cartella ha la precedenza su un'assegnazione di organizzazione e un'assegnazione di progetto ha la precedenza su un'assegnazione di cartella. Cartelle e le assegnazioni dell'organizzazione non sono disponibili per standard di Google Cloud.

Per poter creare un'assegnazione per una prenotazione, quest'ultima deve soddisfare almeno uno dei seguenti criteri:

  • È configurato con una quantità diversa da zero di slot di riferimento assegnati.

  • È configurato con una quantità diversa da zero di slot a scalabilità automatica.

  • È configurato per utilizzare gli slot inattivi e sono disponibili slot inattivi all'interno del progetto.

Se tenti di assegnare una risorsa a una prenotazione che non soddisfa almeno uno di questi criteri, riceverai quanto segue: messaggio: Assignment is pending, your project will be executed as on-demand.

Puoi assegnare una risorsa a un failover , ma l'assegnazione pende nella località secondaria.

Autorizzazioni obbligatorie

Per creare un'assegnazione di prenotazioni, devi disporre della seguente autorizzazione Identity and Access Management (IAM):

Ogni uno dei seguenti ruoli IAM predefiniti include questa autorizzazione:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

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

Assegnare un'organizzazione a 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 una prenotazione nella tabella delle prenotazioni

  5. Espandi l'opzione Azioni.

  6. Fai clic su Crea compito.

  7. Nella sezione Crea un compito, fai clic su Sfoglia.

  8. Sfoglia o cerca l'organizzazione e selezionala.

  9. Nella sezione Tipo di job, seleziona un tipo di job da assegnare per questa prenotazione. Sono incluse le seguenti opzioni:

    • QUERY
    • CONTINUOUS (Anteprima)
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

    Per ulteriori informazioni sui tipi di prestazione, consulta assegnazioni di prenotazione. Questo valore predefinito è QUERY.

  10. Fai clic su Crea.

SQL

Per assegnare un'organizzazione a una prenotazione, utilizza l'istruzione DDL CREATE ASSIGNMENT.

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

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
    OPTIONS (
      assignee = 'organizations/ORGANIZATION_ID',
      job_type = 'JOB_TYPE');

    Sostituisci quanto segue:

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

      L'ID deve essere univoco per il progetto e la località, iniziano e terminano con una lettera minuscola o un numero e contenere solo lettere minuscole, numeri e trattini.

    • ORGANIZATION_ID: il ID organizzazione
    • JOB_TYPE: il tipo di lavoro da assegnare a questa prenotazione, ad esempio QUERY, CONTINUOUS (anteprima), PIPELINE, BACKGROUND o ML_EXTERNAL

  3. Fai clic su Esegui.

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

bq

Per assegnare i job di un'organizzazione a una prenotazione, utilizza il comando bq mk con il flag --reservation_assignment:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_id=ORGANIZATION_ID \
    --job_type=JOB_TYPE \
    --assignee_type=ORGANIZATION

Sostituisci quanto segue:

Quando crei un'assegnazione di prenotazione, attendi almeno 5 minuti prima di eseguirla una query. In caso contrario, la query potrebbe essere fatturata utilizzando i prezzi on demand.

Assegnare un progetto o una cartella a una prenotazione

Console

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

    Vai a BigQuery

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

  3. Fai clic sulla scheda Prenotazioni.

  4. Cerca la prenotazione nella tabella delle prenotazioni.

  5. Espandi l'opzione Azioni.

  6. Fai clic su Crea compito.

  7. Nella sezione Crea un compito, fai clic su Sfoglia.

  8. Sfoglia o cerca il progetto o la cartella e selezionalo.

  9. Nella sezione Tipo di prestazione, seleziona un tipo di prestazione da assegnare per questa prenotazione. Sono incluse le seguenti opzioni:

    • QUERY
    • CONTINUOUS (Anteprima)
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

    Per ulteriori informazioni sui tipi di prestazione, consulta assegnazioni di prenotazione. Questo valore predefinito è QUERY.

  10. Fai clic su Crea.

SQL

Per assegnare un progetto a una prenotazione, utilizza l'istruzione DDL CREATE ASSIGNMENT.

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

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
    OPTIONS(
      assignee="projects/PROJECT_ID",
      job_type="JOB_TYPE");

    Sostituisci quanto segue:

    • ADMIN_PROJECT_ID: l'ID del progetto di amministrazione proprietario della risorsa di prenotazione
    • LOCATION: la posizione della prenotazione
    • RESERVATION_NAME: il nome del prenotazione
    • ASSIGNMENT_ID: l'ID del compito

      L'ID deve essere univoco per il progetto e la località, deve iniziare e terminare con una lettera minuscola o un numero e contenere solo lettere minuscole, numeri e trattini.

    • PROJECT_ID: l'ID del progetto da assegnare alla prenotazione
    • JOB_TYPE: il tipo di job da assegnare a questa prenotazione, ad esempio QUERY, CONTINUOUS (Anteprima), PIPELINE, BACKGROUND o ML_EXTERNAL

  3. Fai clic su Esegui.

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

bq

Per assegnare job a una prenotazione, utilizza il comando bq mk con Flag --reservation_assignment:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_id=PROJECT_ID \
    --job_type=JOB_TYPE \
    --assignee_type=PROJECT

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazione
  • LOCATION: la posizione della prenotazione
  • RESERVATION_NAME: il nome della prenotazione
  • PROJECT_ID: l'ID del progetto da assegnare a questa prenotazione
  • JOB_TYPE: il tipo di job da assegnare a questa prenotazione, ad esempio QUERY, CONTINUOUS (Anteprima), PIPELINE, BACKGROUND o ML_EXTERNAL

Terraform

Utilizza la google_bigquery_reservation_assignment risorsa.

Per eseguire l'autenticazione in BigQuery, configura il valore predefinito dell'applicazione Credenziali. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.

L'esempio seguente assegna un progetto alla prenotazione denominata my-reservation:

resource "google_bigquery_reservation" "default" {
  name              = "my-reservation"
  location          = "us-central1"
  slot_capacity     = 100
  edition           = "ENTERPRISE"
  ignore_idle_slots = false # Use idle slots from other reservations
  concurrency       = 0     # Automatically adjust query concurrency based on available resources
  autoscale {
    max_slots = 200 # Allow the reservation to scale up to 300 slots (slot_capacity + max_slots) if needed
  }
}

data "google_project" "project" {}

resource "google_bigquery_reservation_assignment" "default" {
  assignee    = "projects/${data.google_project.project.project_id}"
  job_type    = "QUERY"
  reservation = google_bigquery_reservation.default.id
}

Per applicare la configurazione Terraform in un progetto Google Cloud, completa i passaggi nelle seguenti sezioni.

Prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. Imposta il progetto Google Cloud predefinito dove vuoi applicare le configurazioni Terraform.

    Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione di Terraform.

Prepara la directory

Ogni file di configurazione Terraform deve avere una directory dedicata (inoltre chiamato modulo principale).

  1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione .tf, ad esempio main.tf. In questo tutorial, il file è denominato main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.

    Copia il codice di esempio nel file main.tf appena creato.

    Se vuoi, copia il codice da GitHub. Questa opzione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.

  3. Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
  4. Salva le modifiche.
  5. Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
    terraform init

    Facoltativamente, per utilizzare la versione più recente del provider Google, includi -upgrade :

    terraform init -upgrade

Applica le modifiche

  1. Rivedi la configurazione e verifica che le risorse che Terraform creerà o che l'aggiornamento soddisfi le tue aspettative:
    terraform plan

    Apporta le correzioni necessarie alla configurazione.

  2. Applica la configurazione Terraform eseguendo questo comando e inserendo yes alla richiesta:
    terraform apply

    Attendi che Terraform mostri il messaggio "Applicazione completata".

  3. Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.

Quando crei un'assegnazione di prenotazione, attendi almeno 5 minuti prima di eseguirla una query. In caso contrario, la query potrebbe essere fatturata utilizzando i prezzi on demand.

Per creare un progetto che utilizzi solo slot inutilizzati, crea una prenotazione con 0 slot assegnati, quindi segui i passaggi precedenti per assegnare il progetto alla prenotazione.

Assegna un progetto a none

Le assegnazioni a none rappresentano l'assenza di un'assegnazione. Progetti assegnati per none utilizza i prezzi on demand.

SQL

Per assegnare un progetto a none, utilizza l'istruzione DDL CREATE ASSIGNMENT.

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

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.none.ASSIGNMENT_ID`
    OPTIONS(
      assignee="projects/PROJECT_ID",
      job_type="QUERY");

    Sostituisci quanto segue:

    • LOCATION: la posizione dei job che devono utilizzare i prezzi on demand
    • ASSIGNMENT_ID: l'ID del compito

      L'ID deve essere univoco per il progetto e la località, deve iniziare e terminare con una lettera minuscola o un numero e contenere solo lettere minuscole, numeri e trattini.

    • PROJECT_ID: l'ID del progetto da assegnare alla prenotazione

  3. Fai clic su Esegui.

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

bq

Per assegnare un progetto a none, usa il comando bq mk con la Flag --reservation_assignment:

bq mk \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=none \
    --job_type=QUERY \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

Sostituisci quanto segue:

  • LOCATION: la posizione delle attività che devono utilizzare i prezzi on demand
  • PROJECT_ID: l'ID del progetto da assegnare a none

Terraform

Utilizza la google_bigquery_reservation_assignment risorsa.

Per autenticarti a BigQuery, configura le credenziali predefinite per l'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

L'esempio seguente assegna un progetto a none:

data "google_project" "project" {}

resource "google_bigquery_reservation_assignment" "default" {
  assignee    = "projects/${data.google_project.project.project_id}"
  job_type    = "QUERY"
  reservation = "projects/${data.google_project.project.project_id}/locations/us/reservations/none"
}

Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.

Prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.

    Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione di Terraform.

Prepara la directory

Ogni file di configurazione Terraform deve avere una directory dedicata (inoltre chiamato modulo principale).

  1. In Cloud Shell, crea una directory e un nuovo all'interno di quella directory. Il nome file deve contenere .tf, ad esempio main.tf. In questo tutorial, il file è denominato main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.

    Copia il codice di esempio nel file main.tf appena creato.

    Se vuoi, copia il codice da GitHub. Questa opzione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.

  3. Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
  4. Salva le modifiche.
  5. Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
    terraform init

    Facoltativamente, per utilizzare la versione più recente del provider Google, includi -upgrade :

    terraform init -upgrade

Applica le modifiche

  1. Rivedi la configurazione e verifica che le risorse che Terraform creerà o che l'aggiornamento soddisfi le tue aspettative:
    terraform plan

    Apporta le correzioni necessarie alla configurazione.

  2. Applica la configurazione Terraform eseguendo questo comando e inserendo yes alla richiesta:
    terraform apply

    Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". per creare un nuovo messaggio email.

  3. Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.

Assegna slot ai carichi di lavoro BigQuery ML

I seguenti tipi di modelli BigQuery ML utilizzano servizi esterni:

Puoi assegnare slot prenotati alle query che utilizzano questi servizi utilizzando il tipo di assegnazione ML_EXTERNAL. Se non viene trovato alcun tipo di assegnazione ML_EXTERNAL, il job di query viene eseguito come on demand.

Usa il comando bq mk con il flag --reservation_assignment e impostalo il flag --job_type a ML_EXTERNAL.

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --job_type=ML_EXTERNAL\
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: l'ID del progetto che è proprietario della risorsa di prenotazione
  • LOCATION: la località della prenotazione
  • RESERVATION_NAME: il nome della prenotazione
  • PROJECT_ID: l'ID del progetto da assegnare a questa prenotazione

Trova assegnazioni di prenotazione

Autorizzazioni obbligatorie

Per cercare un'assegnazione di prenotazione per un determinato progetto, una cartella o un'organizzazione, devi disporre della seguente autorizzazione Identity and Access Management (IAM):

  • bigquery.reservationAssignments.list nel progetto di amministrazione.

Ogni uno dei seguenti ruoli IAM predefiniti include questa autorizzazione:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor
  • BigQuery Resource Viewer
  • BigQuery User

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

Trovare l'assegnazione di prenotazione di un progetto

Per scoprire se il tuo progetto, la tua cartella o la tua organizzazione sono assegnati a una prenotazione, segui questi passaggi:

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. Nella tabella delle prenotazioni, espandi una prenotazione per visualizzare le risorse assegnate oppure utilizza il campo Filtra per filtrare in base al nome della risorsa.

SQL

Per trovare la prenotazione a cui sono assegnati i job di query del progetto, esegui una query sulla visualizzazione INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT.

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

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

      SELECT
        assignment_id
      FROM `region-LOCATION`.INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT
      WHERE
        assignee_id = 'PROJECT_ID'
        AND job_type = 'JOB_TYPE';

    Sostituisci quanto segue:

    • LOCATION: il posizione di prenotazioni da visualizzare
    • ADMIN_PROJECT_ID: l'ID del progetto di amministrazione proprietario della risorsa di prenotazione
    • PROJECT_ID: l'ID del progetto da assegnare alla prenotazione
    • JOB_TYPE: il tipo di job da assegnare a questa prenotazione, ad esempio QUERY, CONTINUOUS (Anteprima), PIPELINE, BACKGROUND o ML_EXTERNAL

  3. Fai clic su Esegui.

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

bq

Per trovare a quale prenotazione sono assegnati i job di query del tuo progetto, utilizza la classe Comando bq show con il flag --reservation_assignment:

bq show \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --job_type=JOB_TYPE \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: l'ID del progetto che possiede la risorsa di prenotazione
  • LOCATION: la località di prenotazioni da visualizzare
  • JOB_TYPE: il tipo di lavoro da assegnare a questa prenotazione, ad esempio QUERY, CONTINUOUS (anteprima), PIPELINE, BACKGROUND o ML_EXTERNAL
  • PROJECT_ID: l'ID del progetto

Aggiorna assegnazioni di prenotazione

Spostare un compito in un'altra prenotazione

Puoi spostare un compito da una prenotazione a un'altra.

Per spostare un'assegnazione di prenotazione, è necessario quanto segue nelle autorizzazioni IAM (Identity and Access Management) progetto di amministrazione e l'assegnatario.

  • bigquery.reservationAssignments.create
  • bigquery.reservationAssignments.delete

Ciascuno dei seguenti ruoli IAM predefiniti include queste autorizzazioni:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

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

Per spostare un compito, utilizza il comando bq update:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --destination_reservation_id=DESTINATION_RESERVATION \
    ADMIN_PROJECT_ID:LOCATION.RESERVATION_NAME.ASSIGNMENT_ID

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: l'ID del progetto che possiede la risorsa di prenotazione
  • LOCATION: la posizione della nuova prenotazione
  • RESERVATION_NAME: la prenotazione per spostare compito da
  • DESTINATION_RESERVATION: il prenotazione in cui spostare l'assegnazione
  • ASSIGNMENT_ID: l'ID del compito

    Per ottenere l'ID assegnazione, consulta Elenca l'assegnazione della prenotazione di un progetto.

Eliminazione assegnazioni di prenotazione

Puoi rimuovere un progetto da una prenotazione eliminandola compito. Se un progetto non è assegnato a nessuna prenotazione, eredita eventuali assegnazioni nelle cartelle o nelle organizzazioni principali oppure utilizza i prezzi on demand se non sono presenti assegnazioni principali.

Quando elimini un'assegnazione di prenotazione, i job in esecuzione con gli slot la prenotazione continuerà a essere eseguita fino al completamento.

Autorizzazioni obbligatorie

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

Ogni uno dei seguenti ruoli IAM predefiniti include questa autorizzazione:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Rimuovere un progetto da una prenotazione

Per rimuovere un progetto da una prenotazione:

Console

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

    Vai a BigQuery

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

  3. Fai clic sulla scheda Prenotazioni.

  4. Nella tabella delle prenotazioni, espandi la prenotazione per trovare progetto.

  5. Espandi l'opzione Azioni.

  6. Fai clic su Elimina.

SQL

Utilizza l'istruzione DDL DROP ASSIGNMENT.

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

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    DROP ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`;

    Sostituisci quanto segue:

  3. Fai clic su Esegui.

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

bq

Per rimuovere un progetto da una prenotazione, utilizza il comando bq rm con il --reservation_assignment flag:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment RESERVATION_NAME.ASSIGNMENT_ID

Sostituisci quanto segue: