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):
bigquery.reservationAssignments.create
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
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 una 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. 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'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
: il località della prenotazioneRESERVATION_NAME
: il nome della 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 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 del prenotazioneORGANIZATION_ID
: l'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 i prezzi on demand.
Assegnare un progetto o una cartella a una prenotazione
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro 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 selezionalo.
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 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 del 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 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 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
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
:
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 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).
-
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 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.
- 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
Facoltativamente, per utilizzare la versione più recente del provider Google, includi
-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 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
.
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
, 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 demandPROJECT_ID
: l'ID del progetto da assegnare anone
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
:
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 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).
-
In Cloud Shell, crea una directory e un nuovo
all'interno di quella directory. Il nome file deve contenere
.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 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.
- 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
Facoltativamente, per utilizzare la versione più recente del provider Google, includi
-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.
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 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 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
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 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
.
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
: 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 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 prenotazioneLOCATION
: la località di 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
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 prenotazioneLOCATION
: la posizione della nuova prenotazioneRESERVATION_NAME
: la prenotazione per spostare compito daDESTINATION_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 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):
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 riquadro di navigazione, vai alla sezione Gestione della capacità.
Fai clic sulla scheda Prenotazioni.
Nella tabella delle prenotazioni, espandi la prenotazione per trovare 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 progetto 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 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 è proprietario della risorsa di prenotazioneLOCATION
: la località 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.