Gestisci le assegnazioni dei workload
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.
Questo documento spiega come creare, trovare, spostare ed eliminare le assegnazioni delle prenotazioni per organizzazioni, cartelle, progetti e singole entità. Mostra anche come eseguire attività, come la configurazione dei limiti dei progetti e l'override delle policy di pianificazione. Per i dettagli concettuali, consulta Informazioni sulle prenotazioni.
Crea assegnazioni di prenotazione
Per utilizzare gli slot che acquisti, crei un'assegnazione che assegna un progetto, una cartella, un'organizzazione o un'entità a una prenotazione di slot. Non puoi assegnare o allocare un numero specifico di slot a livello di assegnazione; gli slot vengono gestiti e assegnati a livello di prenotazione.
Logica e criteri di assegnazione
I progetti utilizzano la singola prenotazione più specifica nella gerarchia delle risorse a cui sono assegnati. BigQuery utilizza la seguente logica di valutazione per selezionare la prenotazione corretta:
- Priorità della gerarchia delle risorse: BigQuery valuta le assegnazioni in base all'origine della risorsa assegnataria (progetto > cartella > organizzazione). Le assegnazioni di cartelle e organizzazioni non sono disponibili per le prenotazioni della versione Standard.
Assegnazioni specifiche per l'utente utilizzando la proprietà
principal: le assegnazioni delle prenotazioni BigQuery supportano una proprietàprincipalfacoltativa, che consente agli amministratori di indirizzare le query a prenotazioni specifiche in base all'identità dell'utente o del account di servizio che esegue il job. All'interno di una risorsa assegnataria specifica, un'assegnazione con un'entità corrispondente ha la priorità su un'assegnazione generica in cui l'entità non è impostata.Il limite predefinito per progetto di assegnazioni specifiche per utente è 100. Per assistenza sulla modifica del limite predefinito, contatta bigquery-wlm-feedback@google.com.
Per creare un'assegnazione su una prenotazione, quest'ultima deve soddisfare almeno uno dei seguenti criteri:
È configurata con un numero di slot di riferimento assegnati diverso da zero.
È configurata con un numero di slot con scalabilità automatica diverso da zero.
È configurata per utilizzare gli slot inattivi e all'interno del progetto sono presenti slot inattivi disponibili.
Se tenti di assegnare una risorsa a una prenotazione che non soddisfa almeno uno di questi criteri, ricevi 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 rimane in attesa nella località secondaria.
Autorizzazioni obbligatorie
Per creare un'assegnazione di prenotazione, devi disporre della seguente autorizzazione Identity and Access Management (IAM):
bigquery.reservationAssignments.createsul progetto di amministrazione e sull'assegnatario.
Ognuno dei seguenti ruoli IAM predefiniti include questa autorizzazione:
BigQuery AdminBigQuery Resource AdminBigQuery Resource Editor
Per saperne di più sui ruoli IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.
Assegna un'organizzazione a una prenotazione
Console
Nella console Google Cloud , vai alla pagina BigQuery.
Nel menu di navigazione, fai clic su Workload Management.
Fai clic sulla scheda Prenotazioni.
Individua la prenotazione nella tabella delle prenotazioni.
Espandi l'opzione Azioni.
Fai clic su Crea compito.
Nella sezione Crea un'assegnazione, fai clic su Sfoglia.
Sfoglia o cerca l'organizzazione e selezionala.
Nella sezione Tipo di prestazione, seleziona un tipo di prestazione da assegnare a questa prenotazione. Le opzioni sono le seguenti:
QUERYCONTINUOUSPIPELINEBACKGROUNDML_EXTERNAL
Per saperne di più sui tipi di job, consulta 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 Configura Gemini in BigQuery.
(Facoltativo) Nel campo Utente, inserisci l'indirizzo email dell'utente, del account di servizio o dell'identità di terze parti.
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', principal = 'PRINCIPAL');
Sostituisci quanto segue:
ADMIN_PROJECT_ID: l'ID progetto del progetto amministrativo proprietario della risorsa di prenotazioneLOCATION: la località della prenotazioneRESERVATION_NAME: il nome della prenotazioneASSIGNMENT_ID: l'ID dell'assegnazioneL'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,CONTINUOUS,PIPELINE,BACKGROUNDoML_EXTERNAL- (Facoltativo)
PRINCIPAL: il formato dell'identità che specifica l'utente, il account di servizio o l'identità di terze partiIl campo
principalsupporta solo i seguenti formati di identificatori delle entità IAM:- Account Google
- Service account
- Singola identità in un pool di identità della forza lavoro
- Singola identità in un pool di identità del workload
Fai clic su Esegui.
Per saperne di più su come eseguire le query, consulta Esegui 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_type=ORGANIZATION \
--assignee_id=ORGANIZATION_ID \
--job_type=JOB_TYPE \
--principal=PRINCIPAL
Sostituisci quanto segue:
ADMIN_PROJECT_ID: l'ID progetto 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,CONTINUOUS,PIPELINE,BACKGROUNDoML_EXTERNAL(Facoltativo)
PRINCIPAL: il formato dell'identità che specifica l'utente, il account di servizio o l'identità di terze parti.Il flag
--principalsupporta solo i seguenti formati di identificatore dell'entità IAM:- Account Google
- Service account
- Singola identità in un pool di identità della forza lavoro
- Singola identità in un pool di identità del workload
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.
Configura i limiti dei progetti e gli override delle policy di pianificazione
Puoi creare limiti di progetto, un tipo di regola di assegnazione, per configurare override specifici per il progetto per le policy di pianificazione predefinite di una prenotazione. Ad esempio, puoi limitare il consumo di slot e il numero di query simultanee per il progetto.
A differenza di altri tipi di assegnazioni di prenotazione che determinano quale prenotazione viene utilizzata da un progetto, i limiti di progetto sono risorse di assegnazione che controllano solo il comportamento di pianificazione per un progetto specifico.
Quando crei un limite per il progetto, si applicano le seguenti limitazioni:
- L'assegnatario deve essere un progetto Google Cloud . Le cartelle e le organizzazioni non sono supportate.
- Il tipo di prestazione deve essere non impostato o impostato esplicitamente su
JOB_TYPE_UNSPECIFIED. - Le modifiche al valore della policy
max_slotsrichiedono l'avvio di una nuova query prima che l'aggiornamento abbia effetto. - I limiti di consumo degli slot a livello di progetto non vengono applicati alla fase di addestramento dei job
ML_EXTERNAL. Per maggiori dettagli, consulta Assegna slot ai workload di BigQuery ML.
Per creare limiti di progetto tramite queste assegnazioni delle policy di pianificazione, seleziona una delle seguenti opzioni:
Console
Nella console Google Cloud , vai alla pagina BigQuery.
Nel menu di navigazione, vai ad Amministrazione > Gestione dei workload.
Fai clic sulla scheda Regole di assegnazione.
Fai clic su Crea regola di assegnazione.
Nell'elenco Tipo di regola, seleziona Limite progetto.
Nell'elenco Seleziona un progetto, seleziona un progetto e poi fai clic su Continua.
Nell'elenco Prenotazione, seleziona una prenotazione e poi fai clic su Continua.
Nella sezione Override del progetto, inserisci i valori nei campi Numero massimo di slot e Concorrenza massima.
Fai clic su Crea.
SQL
Per creare un'assegnazione della policy di pianificazione dei progetti, utilizza l'istruzione DDL CREATE
ASSIGNMENT con le opzioni scheduling_policy_max_slots e scheduling_policy_concurrency.
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` OPTIONS ( assignee = 'projects/PROJECT_ID', scheduling_policy_max_slots = MAX_SLOTS, scheduling_policy_concurrency = MAX_CONCURRENCY);
Sostituisci quanto segue:
ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazioneLOCATION: la località della prenotazioneRESERVATION_NAME: il nome della prenotazioneASSIGNMENT_ID: l'ID dell'assegnazionePROJECT_ID: l'identificatore del progetto Google Cloud che viene assegnatoMAX_SLOTS: il limite massimo di consumo di slot per le query eseguite nel progettoMAX_CONCURRENCY: il limite massimo del numero di query simultanee consentite per il progetto
bq
Per creare un'assegnazione della policy di pianificazione utilizzando lo strumento a riga di comando bq,
utilizza il comando bq mk con i flag --scheduling_policy_max_slots e
--scheduling_policy_concurrency.
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--reservation_id=RESERVATION_NAME \
--assignee_id=PROJECT_ID \
--assignee_type=PROJECT \
--scheduling_policy_max_slots=MAX_SLOTS \
--scheduling_policy_concurrency=MAX_CONCURRENCY
Sostituisci quanto segue:
ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazioneLOCATION: la località della prenotazioneRESERVATION_NAME: il nome della prenotazionePROJECT_ID: l'identificatore del progetto Google Cloud che viene assegnatoMAX_SLOTS: il limite massimo di consumo di slot per le query eseguite nel progettoMAX_CONCURRENCY: il limite massimo del numero di query simultanee consentite per il progetto
Per modificare o rimuovere un'assegnazione di policy di pianificazione esistente, utilizza l'istruzione DDL ALTER ASSIGNMENT:
ALTER ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` SET OPTIONS ( scheduling_policy_max_slots = NEW_MAX_SLOTS, scheduling_policy_concurrency = NEW_MAX_CONCURRENCY); -- To remove a scheduling policy setting, set its values to null. To all settings, delete the assignment.
Sostituisci quanto segue:
ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazioneLOCATION: la località della prenotazioneRESERVATION_NAME: il nome della prenotazioneASSIGNMENT_ID: l'ID dell'assegnazioneNEW_MAX_SLOTS: il limite massimo di consumo di slot per le query eseguite nel progettoNEW_MAX_CONCURRENCY: il limite massimo del numero di query simultanee consentite per il progetto
Per visualizzare gli override delle policy di pianificazione attivi, controlla le colonne scheduling_policy e assignment_type nella visualizzazione INFORMATION_SCHEMA.ASSIGNMENTS.
Assegna un progetto o una cartella a una prenotazione
Console
Nella console Google Cloud , vai alla pagina BigQuery.
Nel menu di navigazione, fai clic su Workload Management.
Fai clic sulla scheda Prenotazioni.
Individua la prenotazione nella tabella delle prenotazioni.
Espandi l'opzione Azioni.
Fai clic su Crea compito.
Nella sezione Crea un'assegnazione, 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 a questa prenotazione. Le opzioni sono le seguenti:
QUERYCONTINUOUSPIPELINEBACKGROUNDML_EXTERNAL
La creazione e la modifica di tipi di prestazione in background più granulari, come
BACKGROUND_COLUMN_METADATA_INDEX, non sono ancora supportate tramite la console.Per saperne di più sui tipi di job, consulta Assegnazioni delle prenotazioni. Questo valore predefinito è
QUERY.(Facoltativo) Nel campo Utente, inserisci l'indirizzo email dell'utente, del account di servizio o dell'identità di terze parti.
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", principal="PRINCIPAL");
Sostituisci quanto segue:
ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazioneLOCATION: la località della prenotazioneRESERVATION_NAME: il nome della prenotazioneASSIGNMENT_ID: l'ID dell'assegnazioneL'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,CONTINUOUS,PIPELINE,BACKGROUNDoML_EXTERNAL(Facoltativo)
PRINCIPAL: il formato dell'identità che specifica l'utente, il account di servizio o l'identità di terze parti. Il campoprincipalsupporta solo i seguenti formati di identificatore dell'entità IAM:- Account Google
- Service account
- Singola identità in un pool di identità della forza lavoro
- Singola identità in un pool di identità del workload
Fai clic su Esegui.
Per saperne di più su come eseguire le query, consulta Esegui 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_type=PROJECT \
--assignee_id=PROJECT_ID \
--job_type=JOB_TYPE \
--principal=PRINCIPAL
Sostituisci quanto segue:
ADMIN_PROJECT_ID: l'ID progetto 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,CONTINUOUS,PIPELINE,BACKGROUNDoML_EXTERNAL(Facoltativo)
PRINCIPAL: il formato dell'identità che specifica l'utente, il account di servizio o l'identità di terze parti.Il flag
--principalsupporta solo i seguenti formati di identificatore dell'entità IAM:- Account Google
- Service account
- Singola identità in un pool di identità della forza lavoro
- Singola identità in un pool di identità del workload
Terraform
Utilizza la risorsa google_bigquery_reservation_assignment.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
L'esempio seguente assegna un progetto alla prenotazione denominata
my-reservation:
Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi descritti nelle 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 Terraform.
Prepara la directory
Ogni file di configurazione Terraform deve avere la 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.tfappena creato.Facoltativamente, 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 l'ultima versione del provider Google, includi l'opzione
-upgrade:terraform init -upgrade
Applica le modifiche
-
Esamina la configurazione e verifica che le risorse che Terraform creerà o aggiornerà corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo questo comando e inserendo
yesal prompt:terraform apply
Attendi finché Terraform non visualizza il messaggio "Apply complete!".
- 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 inattivi, crea una prenotazione con 0 slot assegnati, quindi segui i passaggi precedenti per assegnare il progetto alla prenotazione.
Assegnazioni specifiche per l'utente
Puoi assegnare una prenotazione a un'entità specifica, ad esempio un utente o un service account, all'interno di un progetto, una cartella o un'organizzazione. Questa funzionalità è utile per instradare i workload di utenti specifici verso prenotazioni dedicate.
Quando decide quale prenotazione utilizzare per un job, BigQuery valuta le assegnazioni nel seguente ordine:
- Valuta la gerarchia delle risorse, partendo dal progetto, poi dalle cartelle principali e infine dall'organizzazione.
- A ogni livello della gerarchia, BigQuery verifica innanzitutto la presenza di un'assegnazione corrispondente all'entità specifica che esegue il job.
- Se nessuna assegnazione corrisponde all'entità a quel livello, verifica se esiste un'assegnazione generale senza un'entità allo stesso livello.
- Se non viene trovata alcuna assegnazione, passa al livello successivo della gerarchia.
Un'assegnazione a livello di progetto senza un'entità esegue l'override di un'assegnazione a livello di cartella con un'entità.
Formati di entità supportati
L'opzione principal supporta i seguenti formati di entità IAM v2:
| Tipo di identità | Formato principale |
|---|---|
| Utenti | principal://goog/subject/EMAIL_ADDRESS |
| Service account | principal://iam.googleapis.com/projects/-/serviceAccounts/EMAIL_ADDRESS |
| Identità del pool di identità della forza lavoro | principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ID |
| Identità del pool di identità del workload | principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT_ID |
Assegna un'entità a una prenotazione
SQL
Per creare un'assegnazione specifica per l'utente, utilizza l'istruzione DDL CREATE ASSIGNMENT con l'opzione principal.
CREATE ASSIGNMENT
`ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
OPTIONS (
assignee = 'projects/PROJECT_ID',
principal = 'principal://goog/subject/EMAIL_ADDRESS',
job_type = 'QUERY');
Sostituisci quanto segue:
ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazioneLOCATION: la località della prenotazioneRESERVATION_NAME: il nome della prenotazioneASSIGNMENT_ID: l'ID assegnazionePROJECT_ID: l'ID progetto- `EMAIL_ADDRESS: l'indirizzo email dell'utente
JOB_TYPE: il tipo di job da assegnare a questa prenotazione, ad esempioQUERY,CONTINUOUS,PIPELINE,BACKGROUNDoML_EXTERNAL
bq
Per creare un'assegnazione specifica per l'utente, utilizza il comando bq mk con il flag --principal:
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--reservation_id=RESERVATION_NAME \
--assignee_id=PROJECT_ID \
--assignee_type=PROJECT \
--principal=PRINCIPAL \
--job_type=JOB_TYPE
Sostituisci quanto segue:
ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazioneLOCATION: la località della prenotazioneRESERVATION_NAME: il nome della prenotazioneASSIGNMENT_ID: l'ID assegnazionePROJECT_ID: l'ID progettoPRINCIPAL: the principal identifier, for example,principal://goog/subject/EMAIL_ADDRESS`JOB_TYPE: il tipo di job da assegnare a questa prenotazione, ad esempioQUERY,CONTINUOUS,PIPELINE,BACKGROUNDoML_EXTERNAL
Assegna 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 località dei job che devono utilizzare i prezzi on demandASSIGNMENT_ID: l'ID dell'assegnazioneL'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 saperne di più su come eseguire le query, consulta Esegui una query interattiva.
bq
Per assegnare un progetto a none, utilizza il comando bq mk con il flag --reservation_assignment:
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--reservation_id=none \
--job_type=QUERY \
--assignee_id=PROJECT_ID \
--assignee_type=PROJECT
Sostituisci quanto segue:
ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazioneLOCATION: la località dei job che devono 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 le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
L'esempio seguente assegna un progetto a none:
resource "google_bigquery_reservation_assignment" "default" { assignee = "projects/PROJECT_ID" job_type = "QUERY" reservation = "projects/ADMIN_PROJECT_ID/locations/LOCATION/reservations/none" }
Sostituisci quanto segue:
ADMIN_PROJECT_ID: l'ID progetto del progetto di amministrazione proprietario della risorsa di prenotazioneLOCATION: la località dei job che devono utilizzare i prezzi on demandPROJECT_ID: l'ID del progetto da assegnare anone
Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi descritti nelle 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 Terraform.
Prepara la directory
Ogni file di configurazione Terraform deve avere la 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.tfappena creato.Facoltativamente, 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 l'ultima versione del provider Google, includi l'opzione
-upgrade:terraform init -upgrade
Applica le modifiche
-
Esamina la configurazione e verifica che le risorse che Terraform creerà o aggiornerà corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo questo comando e inserendo
yesal prompt:terraform apply
Attendi finché Terraform non visualizza il messaggio "Apply complete!".
- 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.
Se non sono presenti prenotazioni nel progetto di amministrazione, devi utilizzare lo strumento a riga di comando bq per visualizzare i progetti assegnati a none.
Esegui l'override di una prenotazione su una query
Per utilizzare una prenotazione specifica in una query, devi disporre della seguente autorizzazione Identity and Access Management (IAM):
bigquery.reservations.usesulla prenotazione o sul relativo progetto di amministrazione.
Per assegnare una query da eseguire in una prenotazione specifica, esegui una delle seguenti operazioni:
Console
Vai alla pagina BigQuery.
Fai clic su Query SQL.
Nell'editor di query, inserisci una query GoogleSQL valida.
Fai clic su Modifica > Impostazioni query.
Deseleziona la casella di controllo Impostazione automatica della località, quindi seleziona la regione o la multi-regione in cui si trova la prenotazione.
Nell'elenco Prenotazione, seleziona la prenotazione in cui vuoi eseguire la query.
Fai clic su Salva.
Scrivi una query nella scheda Editor ed eseguila. La query viene eseguita nella prenotazione che hai specificato.
SQL
Imposta la variabile di sistema @@reservation nella sessione per assegnare la prenotazione in cui viene eseguita la query:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
SET @@reservation='RESERVATION'; SELECT QUERY;
Sostituisci quanto segue:
RESERVATION: la prenotazione in cui vuoi eseguire la query.QUERY: la query che vuoi eseguire.
Fai clic su Esegui.
Per saperne di più su come eseguire le query, consulta Esegui una query interattiva.
Ad esempio, la seguente query utilizza l'istruzione SET per impostare la prenotazione su test-reservation nella località multiregionale US, quindi chiama una query di base:
SET @@reservation='projects/project1/locations/US/reservations/test-reservation'; SELECT 42;
bq
-
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud , viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
In Cloud Shell, esegui la query utilizzando il comando
bq querycon il flag--reservation_id:bq query --use_legacy_sql=false --reservation_id=RESERVATION_ID 'QUERY'
Sostituisci quanto segue:
RESERVATION_ID: la prenotazione in cui vuoi eseguire la query.QUERY: l'istruzione SQL per la query.
Ad esempio, la seguente query viene eseguita nella prenotazione
test-reservationnella località multiregionaleUS:bq query --reservation_id=project1.US:test-reservation 'SELECT 42;'
API
Per specificare una prenotazione utilizzando l'API, inserisci un nuovo job e compila la proprietà di configurazione del job query. Specifica la prenotazione nel campo reservation.
Assegna slot ai workload di 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 Assegna un'organizzazione a una prenotazione o Assegna 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 prenotati alle query utilizzando 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 tipo di prestazione ML_EXTERNAL, il job di query viene eseguito utilizzando i prezzi on demand.
Per i job di addestramento dei 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 preemptible, ma durante la pre-elaborazione e la post-elaborazione è possibile utilizzare gli slot inattivi.
Modelli di fattorizzazione matriciale
Per creare un modello di fattorizzazione matriciale, devi creare una prenotazione che utilizzi la versione BigQuery Enterprise o Enterprise Plus, quindi creare un'assegnazione della 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 fattorizzazione matriciale, puoi assegnare slot prenotati alle query utilizzando questi servizi creando un'assegnazione della prenotazione che utilizza il tipo di prestazione QUERY.
Se non viene trovata alcuna assegnazione di prenotazione con un tipo di prestazione QUERY, il job di query viene eseguito utilizzando i prezzi on demand.
Trova le assegnazioni delle prenotazioni
Autorizzazioni obbligatorie
Per cercare un'assegnazione di prenotazione per un determinato progetto, cartella o organizzazione, devi disporre della seguente autorizzazione Identity and Access Management (IAM):
bigquery.reservationAssignments.listsul progetto di amministrazione.
Ognuno dei seguenti ruoli IAM predefiniti include questa autorizzazione:
BigQuery AdminBigQuery Resource AdminBigQuery Resource EditorBigQuery Resource ViewerBigQuery User
Per saperne di più sui ruoli IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.
Trova l'assegnazione della 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 menu di navigazione, fai clic su Workload Management.
Fai clic sulla scheda Prenotazioni.
Nella tabella delle prenotazioni, espandi una prenotazione per vedere quali risorse sono assegnate o utilizza il campo Filtro per filtrare in base al nome della risorsa.
SQL
Per scoprire a quale prenotazione sono assegnati i job di query del tuo progetto, esegui una query sulla vista 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 località delle prenotazioni da visualizzareADMIN_PROJECT_ID: l'ID progetto del progetto amministrativo 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,PIPELINE,BACKGROUNDoML_EXTERNAL
Fai clic su Esegui.
Per saperne di più su come eseguire le query, consulta Esegui una query interattiva.
bq
Per trovare la prenotazione a cui sono assegnati i job di query del tuo 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
Per trovare un'assegnazione specifica per un utente, includi il flag --principal:
bq show \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--job_type=JOB_TYPE \
--assignee_id=PROJECT_ID \
--assignee_type=PROJECT \
--principal=PRINCIPAL
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,CONTINUOUS,PIPELINE,BACKGROUNDoML_EXTERNALPROJECT_ID: l'ID progettoPRINCIPAL: l'identificatore dell'entità, ad esempioprincipal://goog/subject/EMAIL_ADDRESS
Per visualizzare le regole di assegnazione attive specifiche per l'utente, controlla la colonna principal nella visualizzazione INFORMATION_SCHEMA.ASSIGNMENTS o esegui bq ls
--reservation_assignment. Inoltre, puoi verificare quale prenotazione ha eseguito un job specifico eseguendo una query sulla vista INFORMATION_SCHEMA.JOBS. Quando utilizzi il comando bq show --reservation_assignment, puoi includere il flag facoltativo --principal per filtrare in base a un'assegnazione utente specifica.
Aggiorna le assegnazioni delle prenotazioni
Sposta un'assegnazione in un'altra prenotazione
Puoi spostare un'assegnazione da una prenotazione all'altra.
Per spostare un'assegnazione di prenotazione, devi disporre delle seguenti autorizzazioni Identity and Access Management (IAM) per il progetto di amministrazione e l'assegnatario.
bigquery.reservationAssignments.createbigquery.reservationAssignments.delete
Ognuno dei seguenti ruoli IAM predefiniti include queste autorizzazioni:
BigQuery AdminBigQuery Resource AdminBigQuery Resource Editor
Per saperne di più sui ruoli IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.
Per spostare un'assegnazione, 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 a cui spostare l'assegnazioneASSIGNMENT_ID: l'ID dell'assegnazionePer 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 ad alcuna prenotazione, eredita le assegnazioni nelle cartelle o nelle organizzazioni principali oppure utilizza i prezzi on demand se non esistono assegnazioni principali.
Quando elimini un'assegnazione di prenotazione, i job in esecuzione con gli slot di quella prenotazione continuano a essere eseguiti fino al completamento.
Autorizzazioni obbligatorie
Per eliminare un'assegnazione di prenotazione, devi disporre della seguente autorizzazione Identity and Access Management (IAM):
bigquery.reservationAssignments.deletesul progetto di amministrazione e sull'assegnatario.
Ognuno dei seguenti ruoli IAM predefiniti include questa autorizzazione:
BigQuery AdminBigQuery Resource AdminBigQuery Resource Editor
Rimuovi un progetto da una prenotazione
Per rimuovere un progetto da una prenotazione:
Console
Nella console Google Cloud , vai alla pagina BigQuery.
Nel menu di navigazione, fai clic su Workload Management.
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 progetto del progetto di amministrazione proprietario della risorsa di prenotazioneLOCATION: la località della prenotazioneRESERVATION_NAME: il nome della prenotazioneASSIGNMENT_ID: l'ID dell'assegnazionePer trovare l'ID assegnazione, consulta Elenca l'assegnazione della prenotazione di un progetto.
Fai clic su Esegui.
Per saperne di più su come eseguire le query, consulta Esegui 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 dell'assegnazionePer ottenere l'ID assegnazione, consulta Trova l'assegnazione della prenotazione di un progetto.