Lavorare con le assegnazioni delle prenotazioni
L'API BigQuery Reservation ti consente di acquistare slot dedicati (chiamati impegni), creare pool di slot (chiamati prenotazioni) e assegnare progetti, cartelle e organizzazioni a queste prenotazioni.
Creare 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. Le assegnazioni di cartelle e organizzazioni non sono disponibili per le prenotazioni dell'edizione standard.
Per poter creare un'assegnazione per una prenotazione, quest'ultima deve soddisfare almeno uno dei seguenti criteri:
È configurato con un numero di slot di riferimento assegnati diverso da zero.
È configurato con una quantità di slot di scalabilità automatica diversa da zero.
È configurato per utilizzare gli slot inattivi e sono disponibili slot inattivi all'interno del progetto.
Se provi ad assegnare una risorsa a una prenotazione che non soddisfa almeno uno di questi criteri, viene visualizzato il seguente messaggio: Assignment is pending, your project will be executed as on-demand.
Puoi assegnare una risorsa a una prenotazione di failover, ma l'assegnazione è in attesa nella località secondaria.
Autorizzazioni obbligatorie
Per creare un'assegnazione di prenotazioni, devi disporre della seguente autorizzazione Identity and Access Management (IAM):
bigquery.reservationAssignments.create
nel progetto di amministrazione e l'assegnatario.
Ogni uno dei seguenti ruoli IAM predefiniti include questa autorizzazione:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
Per saperne di più sui ruoli IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.
Assegnare un'organizzazione a una prenotazione
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nel pannello di navigazione, vai alla sezione Gestione della capacità.
Fai clic sulla scheda Prenotazioni.
Trova la prenotazione nella tabella delle prenotazioni
Espandi l'opzione
Azioni.Fai clic su Crea compito.
Nella sezione Crea un compito, fai clic su Sfoglia.
Sfoglia o cerca l'organizzazione e selezionala.
Nella sezione Tipo di job, seleziona un tipo di job da assegnare per questa prenotazione. Le opzioni includono:
QUERY
CONTINUOUS
(Anteprima)PIPELINE
BACKGROUND
ML_EXTERNAL
Per ulteriori informazioni sui tipi di job, consulta le assegnazioni delle prenotazioni. Questo valore predefinito è
QUERY
.Per scoprire di più su come consentire agli utenti di utilizzare Gemini in BigQuery con le assegnazioni della versione Enterprise Plus, consulta Configurare Gemini in BigQuery.
Fai clic su Crea.
SQL
Per assegnare un'organizzazione a una prenotazione, utilizza l'istruzione DDL CREATE ASSIGNMENT
.
Nella console Google Cloud, vai alla pagina BigQuery.
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 prenotazioneLOCATION
: la posizione della prenotazioneRESERVATION_NAME
: il nome della prenotazioneASSIGNMENT_ID
: l'ID del compitoL'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.
ORGANIZATION_ID
: ID organizzazioneJOB_TYPE
: il tipo di job da assegnare a questa prenotazione, ad esempioQUERY
,CONTINUOUS
(Anteprima),PIPELINE
,BACKGROUND
oML_EXTERNAL
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire 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:
ADMIN_PROJECT_ID
: l'ID del progetto di amministrazione che possiede la risorsa di prenotazioneLOCATION
: la posizione della prenotazioneRESERVATION_NAME
: il nome della prenotazioneORGANIZATION_ID
: l'ID organizzazioneJOB_TYPE
: il tipo di job da assegnare a questa prenotazione, ad esempioQUERY
,CONTINUOUS
(Anteprima),PIPELINE
,BACKGROUND
oML_EXTERNAL
Quando crei un'assegnazione di prenotazione, attendi almeno 5 minuti prima di eseguire 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
Nella console Google Cloud, vai alla pagina BigQuery.
Nel pannello di navigazione, vai alla sezione Gestione della capacità.
Fai clic sulla scheda Prenotazioni.
Trova la prenotazione nella tabella delle prenotazioni.
Espandi l'opzione
Azioni.Fai clic su Crea compito.
Nella sezione Crea un compito, fai clic su Sfoglia.
Sfoglia o cerca il progetto o la cartella e selezionali.
Nella sezione Tipo di job, seleziona un tipo di job da assegnare per questa prenotazione. Le opzioni includono:
QUERY
CONTINUOUS
(Anteprima)PIPELINE
BACKGROUND
ML_EXTERNAL
Per ulteriori informazioni sui tipi di job, consulta le assegnazioni delle prenotazioni. Questo valore predefinito è
QUERY
.Fai clic su Crea.
SQL
Per assegnare un progetto a una prenotazione, utilizza l'istruzione DDL CREATE ASSIGNMENT
.
Nella console Google Cloud, vai alla pagina BigQuery.
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 prenotazioneLOCATION
: la posizione della prenotazioneRESERVATION_NAME
: il nome della prenotazioneASSIGNMENT_ID
: l'ID del compitoL'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 prenotazioneJOB_TYPE
: il tipo di job da assegnare a questa prenotazione, ad esempioQUERY
,CONTINUOUS
(Anteprima),PIPELINE
,BACKGROUND
oML_EXTERNAL
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire query, consulta Eseguire una query interattiva.
bq
Per assegnare i job a una prenotazione, utilizza il comando bq mk
con il
--reservation_assignment
flag:
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 del progetto di amministrazione che possiede la risorsa di prenotazioneLOCATION
: la posizione della prenotazioneRESERVATION_NAME
: il nome della prenotazionePROJECT_ID
: l'ID del progetto da assegnare a questa prenotazioneJOB_TYPE
: il tipo di job da assegnare a questa prenotazione, ad esempioQUERY
,CONTINUOUS
(Anteprima),PIPELINE
,BACKGROUND
oML_EXTERNAL
Terraform
Utilizza la risorsa google_bigquery_reservation_assignment
.
Per autenticarti in BigQuery, configura le credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente assegna un progetto alla prenotazione my-reservation
:
Per applicare la configurazione Terraform in un progetto Google Cloud, completa i passaggi nelle seguenti sezioni.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi farlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.
Prepara la directory
Ogni file di configurazione di Terraform deve avere una propria directory (chiamata anche modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
file al suo interno. Il nome file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione 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.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Se vuoi, per utilizzare la versione più recente del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform sta per creare o
aggiornare corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform apply
Attendi che Terraform mostri il messaggio "Applicazione completata".
- Apri il tuo progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
Quando crei un'assegnazione di prenotazione, attendi almeno 5 minuti prima di eseguire 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.
Assegnare un progetto a none
Compiti a none
rappresentano l'assenza di un'assegnazione. I progetti assegnati
a none
utilizzano i prezzi on demand.
SQL
Per assegnare un progetto a none
, utilizza
l'istruzione DDL CREATE ASSIGNMENT
.
Nella console Google Cloud, vai alla pagina BigQuery.
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 demandASSIGNMENT_ID
: l'ID del compitoL'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
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire query, consulta Eseguire una query interattiva.
bq
Per assegnare un progetto a none
, utilizza il comando bq mk
con il
--reservation_assignment
flag:
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 demandPROJECT_ID
: l'ID del progetto da assegnare anone
Terraform
Utilizza la risorsa google_bigquery_reservation_assignment
.
Per autenticarti in BigQuery, configura le credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente assegna un progetto a none
:
Per applicare la configurazione Terraform in un progetto Google Cloud, completa i passaggi nelle seguenti sezioni.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi farlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.
Prepara la directory
Ogni file di configurazione di Terraform deve avere una propria directory (chiamata anche modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
file al suo interno. Il nome file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione 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.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Se vuoi, per utilizzare la versione più recente del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform sta per creare o
aggiornare corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform apply
Attendi che Terraform mostri il messaggio "Applicazione completata".
- Apri il tuo progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
Assegnare gli slot ai carichi di lavoro BigQuery ML
Le sezioni seguenti forniscono informazioni sui requisiti di assegnazione delle prenotazioni per i modelli BigQuery ML. Puoi creare queste assegnazioni di prenotazione seguendo le procedure descritte in Assegnare un'organizzazione a una prenotazione o Assegnare un progetto o una cartella a una prenotazione.
Modelli esterni
I seguenti tipi di modelli BigQuery ML utilizzano servizi esterni:
- Autoencoder
- AutoML
- Albero con boosting
- Rete neurale profonda (DNN)
- Foresta casuale
- Rete Wide and Deep
Puoi assegnare slot riservati alle query che utilizzano questi servizi creando un'assegnazione della prenotazione che utilizza il tipo di job ML_EXTERNAL
. Se non viene trovata alcuna assegnazione di prenotazione con un ML_EXTERNAL
tipo di job, il job di query viene eseguito utilizzando i prezzi on demand.
Per i job di addestramento di modelli esterni, gli slot nell'assegnazione della prenotazione vengono utilizzati per i passaggi di pre-elaborazione, addestramento e post-elaborazione. Durante l'addestramento, gli slot non sono preemptibili, ma durante la preelaborazione e la postelaborazione, possono essere utilizzati gli slot inattivi.
Modelli di fattorizzazione matriciale
Per creare un modello di fattorizzazione matriciale, devi creare una prenotazione che utilizzi la versione Enterprise o Enterprise Plus di BigQuery, quindi creare un'assegnazione di prenotazione che utilizzi il tipo di job QUERY
.
Altri tipi di modelli
Per i modelli BigQuery ML che non sono modelli esterni o modelli di fattorizazione della matrice, puoi assegnare slot riservati alle query che utilizzano questi servizi creando un'assegnazione di prenotazione che utilizza il tipo di job QUERY
.
Se non viene trovata alcuna assegnazione di prenotazione con un tipo di job QUERY
, il job di query viene eseguito utilizzando i prezzi on demand.
Trovare le 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 saperne di più 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, svolgi i seguenti passaggi:
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nel pannello di navigazione, vai alla sezione Gestione della capacità.
Fai clic sulla scheda Prenotazioni.
Nella tabella delle prenotazioni, espandi una prenotazione per vedere quali risorse sono assegnate o 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
.
Nella console Google Cloud, vai alla pagina BigQuery.
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
: la posizione delle prenotazioni da visualizzareADMIN_PROJECT_ID
: l'ID del progetto di amministrazione proprietario della risorsa di prenotazionePROJECT_ID
: l'ID del progetto da assegnare alla prenotazioneJOB_TYPE
: il tipo di job da assegnare a questa prenotazione, ad esempioQUERY
,CONTINUOUS
(Anteprima),PIPELINE
,BACKGROUND
oML_EXTERNAL
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire query, consulta Eseguire una query interattiva.
bq
Per trovare a quale prenotazione sono assegnati i job di query del progetto, utilizza il 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 prenotazioneLOCATION
: la posizione delle prenotazioni da visualizzareJOB_TYPE
: il tipo di job da assegnare a questa prenotazione, ad esempioQUERY
,CONTINUOUS
(Anteprima),PIPELINE
,BACKGROUND
oML_EXTERNAL
PROJECT_ID
: l'ID del progetto
Aggiornare le assegnazioni di prenotazione
Spostare un compito in un'altra prenotazione
Puoi spostare un compito da una prenotazione a un'altra.
Per spostare l'assegnazione di una prenotazione, devi disporre delle seguenti autorizzazioni IAM sul progetto di amministrazione e sull'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 saperne di più 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 prenotazioneLOCATION
: la posizione della nuova prenotazioneRESERVATION_NAME
: la prenotazione da cui spostare l'assegnazioneDESTINATION_RESERVATION
: la prenotazione a cui spostare il compitoASSIGNMENT_ID
: l'ID del compitoPer ottenere l'ID assegnazione, consulta Elenca l'assegnazione della prenotazione di un progetto.
Eliminazione assegnazioni di prenotazione
Puoi rimuovere un progetto da una prenotazione eliminando l'assegnazione della prenotazione. 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 di quella prenotazione continuano a funzionare fino al completamento.
Autorizzazioni obbligatorie
Per eliminare l'assegnazione di una prenotazione, devi disporre della seguente autorizzazione Identity and Access Management (IAM):
bigquery.reservationAssignments.delete
nel progetto di amministrazione e l'assegnatario.
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
Nella console Google Cloud, vai alla pagina BigQuery.
Nel pannello di navigazione, vai alla sezione Gestione della capacità.
Fai clic sulla scheda Prenotazioni.
Nella tabella delle prenotazioni, espandi la prenotazione per trovare il progetto.
Espandi l'opzione
Azioni.Fai clic su Elimina.
SQL
Utilizza
l'istruzione DDL DROP ASSIGNMENT
.
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
DROP ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`;
Sostituisci quanto segue:
ADMIN_PROJECT_ID
: l'ID del progetto di amministrazione proprietario della risorsa di prenotazioneLOCATION
: la posizione della prenotazioneRESERVATION_NAME
: il nome della prenotazioneASSIGNMENT_ID
: l'ID del compitoPer trovare l'ID assegnazione, consulta Elenca l'assegnazione della prenotazione di un progetto.
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:
ADMIN_PROJECT_ID
: l'ID del progetto che possiede la risorsa di prenotazioneLOCATION
: la posizione della prenotazioneRESERVATION_NAME
: il nome della prenotazioneASSIGNMENT_ID
: l'ID del compitoPer ottenere l'ID assegnazione, consulta Trovare l'assegnazione di prenotazione di un progetto.