Utilizzare 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.
Crea assegnazioni di prenotazione
Per utilizzare gli slot che acquisti, devi creare un compito che assegna un un progetto, una cartella o un'organizzazione a una prenotazione di slot.
I progetti utilizzano la prenotazione più specifica nella gerarchia delle risorse a cui sono assegnati. Un'assegnazione a una cartella ha la precedenza su un'organizzazione mentre un'assegnazione di progetto sostituisce l'assegnazione a una cartella. Cartelle e le assegnazioni dell'organizzazione non sono disponibili per standard di Google Cloud.
Per creare un'assegnazione in una prenotazione, quest'ultima deve completare almeno uno dei seguenti criteri:
È configurato con un numero di slot di riferimento assegnati diverso da zero.
È configurato con una quantità diversa da zero di slot a scalabilità automatica.
È configurato per utilizzare 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 per il 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
il progetto di amministrazione e l'assegnatario.
Ciascuno dei seguenti ruoli IAM predefiniti include 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
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
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 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 job, consulta le assegnazioni delle prenotazioni. Questo valore predefinito è
QUERY
.Fai clic su Crea.
SQL
Per assegnare un'organizzazione a una prenotazione, utilizza la
CREATE ASSIGNMENT
Istruzione DDL.
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor 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 progetto del progetto di amministrazione proprietario della risorsa di prenotazioneLOCATION
: il località della prenotazioneRESERVATION_NAME
: il nome del prenotazioneASSIGNMENT_ID
: l'ID del compitoL'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 organizzazioneJOB_TYPE
: il tipo di lavoro da assegnare a questa prenotazione, ad esempioQUERY
,CONTINUOUS
(anteprima),PIPELINE
,BACKGROUND
oML_EXTERNAL
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
bq
Per assegnare job di un'organizzazione a una prenotazione, usa 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
: il località della prenotazioneRESERVATION_NAME
: il nome del prenotazioneORGANIZATION_ID
: il ID organizzazioneJOB_TYPE
: il tipo di lavoro 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 eseguirla una query. In caso contrario, la query potrebbe essere fatturata utilizzando 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.
Cerca 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 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
.Fai clic su Crea.
SQL
Per assegnare un progetto a una prenotazione, utilizza il metodo
CREATE ASSIGNMENT
Istruzione DDL.
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor 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 progetto del progetto di amministrazione proprietario della risorsa di prenotazioneLOCATION
: il località della prenotazioneRESERVATION_NAME
: il nome del prenotazioneASSIGNMENT_ID
: l'ID del compitoL'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.
PROJECT_ID
: l'ID del progetto da assegnare alla prenotazioneJOB_TYPE
: il tipo di lavoro da assegnare a questa prenotazione, ad esempioQUERY
,CONTINUOUS
(anteprima),PIPELINE
,BACKGROUND
oML_EXTERNAL
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le 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 del progetto di amministrazione che possiede la risorsa di prenotazioneLOCATION
: la posizione della prenotazioneRESERVATION_NAME
: il nome del prenotazionePROJECT_ID
: l'ID del progetto da assegnare a questa prenotazioneJOB_TYPE
: il tipo di lavoro da assegnare a questa prenotazione, ad esempioQUERY
,CONTINUOUS
(anteprima),PIPELINE
,BACKGROUND
oML_EXTERNAL
Terraform
Utilizza la
google_bigquery_reservation_assignment
risorsa.
Per eseguire l'autenticazione in BigQuery, configura il valore predefinito dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
L'esempio seguente assegna un progetto alla prenotazione denominata
my-reservation
:
Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito dove 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 in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
file al suo interno. Il nome file deve contenere i caratteri
.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 di esempio in ogni sezione o passaggio.
Copia il codice campione nel nuovo oggetto
main.tf
.Facoltativamente, copia il codice da GitHub. 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 creerà o
che l'aggiornamento soddisfi le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
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.
- 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 eseguire una query. In caso contrario, la query potrebbe essere fatturata utilizzando prezzi on demand.
Per creare un progetto che utilizzi solo idle
slot machine, crea una
prenotazione con 0
gli slot assegnati, quindi segui i passaggi precedenti per assegnare il progetto
prenotazione.
Assegnare un progetto a none
I compiti a none
rappresentano l'assenza di un compito. Progetti assegnati
per none
utilizza i prezzi on demand.
SQL
Per assegnare un progetto a none
, usa la
CREATE ASSIGNMENT
Istruzione DDL.
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à, iniziano e terminano 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 le 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 località di offerte di lavoro che dovrebbero utilizzare i prezzi on demandPROJECT_ID
: l'ID del progetto da assegnare anone
Terraform
Utilizza la risorsa
google_bigquery_reservation_assignment
.
Per eseguire l'autenticazione in BigQuery, configura il valore predefinito dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura 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 in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
all'interno di quella directory. Il nome file deve contenere i caratteri
.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 di esempio in ogni sezione o passaggio.
Copia il codice campione nel nuovo oggetto
main.tf
.Facoltativamente, copia il codice da GitHub. 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 creerà o
che l'aggiornamento soddisfi le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
alla richiesta:terraform apply
Attendi che Terraform mostri il messaggio "Applicazione completata".
- Apri il 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.
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 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 prenotazioneLOCATION
: la località della prenotazioneRESERVATION_NAME
: il nome della prenotazionePROJECT_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 devi disporre della seguente autorizzazione IAM (Identity and Access Management):
bigquery.reservationAssignments.list
nel progetto di amministrazione.
Ciascuno dei seguenti ruoli IAM predefiniti include autorizzazione:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery Resource Viewer
BigQuery User
Per ulteriori informazioni sui ruoli IAM in BigQuery, vedi Autorizzazioni e ruoli predefiniti.
Trovare l'assegnazione di prenotazione di un progetto
Puoi scoprire se il tuo progetto, la tua cartella o la tua organizzazione sono assegnati a un effettuando la seguente procedura:
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro 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 assegnati alla prenotazione oppure utilizza il campo Filtro per filtrare in base al nome della risorsa.
SQL
Per trovare a quale prenotazione sono assegnati i job di query del tuo progetto,
la vista INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT
.
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor 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 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 le query, consulta Eseguire una query interattiva.
bq
Per trovare la prenotazione a cui 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 è proprietario della risorsa di prenotazioneLOCATION
: la posizione delle prenotazioni da visualizzareJOB_TYPE
: il tipo di lavoro 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'assegnazione in una prenotazione diversa
Puoi spostare un'assegnazione 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 questi autorizzazioni:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
Per ulteriori informazioni sui ruoli IAM in BigQuery, vedi Autorizzazioni e ruoli 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 è proprietario della risorsa di prenotazioneLOCATION
: la località della nuova prenotazioneRESERVATION_NAME
: la prenotazione da cui spostare l'assegnazioneDESTINATION_RESERVATION
: il prenotazione in cui spostare l'assegnazioneASSIGNMENT_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 eliminandola o del compito assegnato. Se un progetto non è assegnato a nessuna prenotazione, eredita i compiti nelle rispettive cartelle o organizzazioni principali oppure usa le se non ci sono assegnazioni padre.
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 un'assegnazione di prenotazione, è necessario quanto segue Autorizzazione Identity and Access Management (IAM):
bigquery.reservationAssignments.delete
il 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 progetto.
Espandi
Azioni.Fai clic su Elimina.
SQL
Utilizza la
DROP ASSIGNMENT
Istruzione DDL.
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
: il località della prenotazioneRESERVATION_NAME
: il nome della prenotazioneASSIGNMENT_ID
: l'ID del compitoPer trovare l'ID compito, 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
Flag --reservation_assignment
:
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 è proprietario della risorsa di prenotazioneLOCATION
: la località della prenotazioneRESERVATION_NAME
: il nome della prenotazioneASSIGNMENT_ID
: l'ID del compitoPer ottenere l'ID assegnazione, consulta Trova un'assegnazione della prenotazione di un progetto.