Utilizzare le assegnazioni di prenotazione
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.
Crea assegnazioni prenotazione
Per utilizzare gli slot acquistati, crei 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 cartella sostituisce un'assegnazione dell'organizzazione, mentre un'assegnazione progetto sostituisce un'assegnazione cartella. Le assegnazioni di cartelle e organizzazioni non sono disponibili per le prenotazioni nella versione standard.
Per creare un'assegnazione su una prenotazione, quest'ultima deve soddisfare almeno uno dei seguenti criteri:
È configurato con un numero diverso da zero di slot di riferimento assegnati.
È configurato con un numero di slot a scalabilità automatica diversa da zero.
È configurato per utilizzare 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, 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 viene collocata nella località secondaria.
Autorizzazioni obbligatorie
Per creare un'assegnazione di prenotazione, devi disporre della seguente autorizzazione IAM (Identity and Access Management):
bigquery.reservationAssignments.create
sul progetto di amministrazione e sull'assegnatario.
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.
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.
Trovare 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 le seguenti:
QUERY
PIPELINE
BACKGROUND
ML_EXTERNAL
Per ulteriori informazioni sui tipi di prestazioni, consulta la pagina relativa alle assegnazioni di prenotazioni. 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 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 località della prenotazioneRESERVATION_NAME
: il nome della prenotazioneASSIGNMENT_ID
: l'ID del compitoL'ID deve essere univoco per il progetto e la località, iniziare e terminare con una lettera minuscola o un numero e contenere solo lettere minuscole, numeri e trattini.
ORGANIZATION_ID
: l'ID organizzazioneJOB_TYPE
: il tipo di job da assegnare a questa prenotazione, ad esempioQUERY
,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 proprietario della risorsa di prenotazioneLOCATION
: la località della prenotazioneRESERVATION_NAME
: il nome della prenotazioneORGANIZATION_ID
: l'ID organizzazioneJOB_TYPE
: il tipo di job da assegnare a questa prenotazione, ad esempioQUERY
,PIPELINE
,BACKGROUND
oML_EXTERNAL
Quando crei un'assegnazione di prenotazione, attendi almeno cinque minuti prima di eseguire una query. In caso contrario, la query potrebbe essere fatturata utilizzando i prezzi on demand.
Assegna 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 le seguenti:
QUERY
PIPELINE
BACKGROUND
ML_EXTERNAL
Per ulteriori informazioni sui tipi di prestazioni, consulta la pagina relativa alle assegnazioni di 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 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 località della prenotazioneRESERVATION_NAME
: il nome della prenotazioneASSIGNMENT_ID
: l'ID del compitoL'ID deve essere univoco per il progetto e la località, 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
,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 il
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 proprietario della risorsa di prenotazioneLOCATION
: la località 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
,PIPELINE
,BACKGROUND
oML_EXTERNAL
Quando crei un'assegnazione di prenotazione, attendi almeno cinque minuti prima di eseguire una query. In caso contrario, la query potrebbe essere fatturata utilizzando i prezzi on demand.
Per creare un progetto che utilizza solo gli slot inattivi, crea una prenotazione con 0
slot assegnati, quindi segui i passaggi precedenti per assegnare il progetto a quella prenotazione.
Assegna un progetto a none
I compiti a none
rappresentano l'assenza di un compito. I progetti assegnati a none
usano 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 query, inserisci la seguente istruzione:
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.none.ASSIGNMENT_ID` OPTIONS( assignee="projects/PROJECT_ID", job_type="JOB_TYPE");
Sostituisci quanto segue:
LOCATION
: la località dei job che dovrebbero utilizzare prezzi on demandASSIGNMENT_ID
: l'ID del compitoL'ID deve essere univoco per il progetto e la località, 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 le query, consulta Eseguire una query interattiva.
bq
Per assegnare un progetto a none
, utilizza il comando bq mk
con il 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 località dei job che devono utilizzare i prezzi on demandPROJECT_ID
: l'ID del progetto da assegnare anone
Assegna slot ai carichi di lavoro BigQuery ML
I seguenti tipi di modelli BigQuery ML utilizzano servizi esterni:
- Codificatore automatico
- AutoML
- Albero potenziato
- Rete neurale profonda (DNN)
- Foresta casuale
- Rete Wide-and-Deep
Puoi assegnare slot riservati alle query utilizzando 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 imposta il flag --job_type
su 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 proprietario della risorsa di prenotazioneLOCATION
: la località della prenotazioneRESERVATION_NAME
: il nome della prenotazionePROJECT_ID
: l'ID del progetto da assegnare a questa prenotazione
Trovare le assegnazioni di prenotazione
Autorizzazioni obbligatorie
Per cercare un'assegnazione di prenotazione per un determinato progetto, cartella o organizzazione, devi disporre della seguente autorizzazione IAM (Identity and Access Management):
bigquery.reservationAssignments.list
sul progetto di amministrazione.
Ciascuno 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 Autorizzazioni e ruoli predefiniti.
Trovare l'assegnazione della prenotazione di un progetto
Per scoprire se il tuo progetto, la tua cartella o la tua organizzazione è assegnato 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 vedere quali risorse sono assegnate a quella prenotazione o utilizza il campo Filtro 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 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
: la località 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
,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 proprietario della risorsa di prenotazioneLOCATION
: la località delle prenotazioni da visualizzareJOB_TYPE
: il tipo di job da assegnare a questa prenotazione, ad esempioQUERY
,PIPELINE
,BACKGROUND
oML_EXTERNAL
PROJECT_ID
: l'ID del progetto
Aggiorna le assegnazioni della prenotazione
Spostare un'assegnazione in un'altra prenotazione
Puoi spostare un compito da una prenotazione a un'altra.
Per spostare un'assegnazione di prenotazione, devi disporre delle seguenti autorizzazioni IAM (Identity and Access Management) nel progetto di amministrazione e nell'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 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 proprietario della risorsa di prenotazioneLOCATION
: la località della nuova prenotazioneRESERVATION_NAME
: la prenotazione da cui spostare l'assegnazioneDESTINATION_RESERVATION
: la prenotazione in cui spostare l'assegnazioneASSIGNMENT_ID
: l'ID del compitoPer ottenere l'ID assegnazione, consulta Elenco delle assegnazioni 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 ad alcuna prenotazione, eredita eventuali assegnazioni nelle cartelle o nelle organizzazioni padre oppure utilizza i prezzi on demand se non ci sono assegnazioni principali.
Quando elimini un'assegnazione di prenotazione, i job in esecuzione con slot di quella prenotazione continuano a essere eseguiti fino al completamento.
Autorizzazioni obbligatorie
Per eliminare un'assegnazione di prenotazione, devi disporre della seguente autorizzazione IAM (Identity and Access Management):
bigquery.reservationAssignments.delete
sul progetto di amministrazione e sull'assegnatario.
Ciascuno 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 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 località della prenotazioneRESERVATION_NAME
: il nome della prenotazioneASSIGNMENT_ID
: l'ID del compitoPer trovare l'ID assegnazione, consulta Elencare l'assegnazione della prenotazione di un progetto.
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
bq
Per rimuovere un progetto da una prenotazione, utilizza il comando bq rm
con il 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 proprietario della risorsa di prenotazioneLOCATION
: la località della prenotazioneRESERVATION_NAME
: il nome della prenotazioneASSIGNMENT_ID
: l'ID del compitoPer ottenere l'ID assegnazione, vedi Trovare l'assegnazione della prenotazione di un progetto.