Utilizzare le assegnazioni delle prenotazioni

L'API BigQuery Reservation consente di acquistare slot dedicati (chiamati impegni), creare pool di slot (prenotazioni) e assegnare progetti, cartelle e organizzazioni a queste prenotazioni.

Crea assegnazioni di prenotazione

Per utilizzare gli slot che acquisti, crea un'assegnazione che assegna 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 sostituisce un'assegnazione dell'organizzazione e un'assegnazione a un progetto sostituisce un'assegnazione a una cartella. Le assegnazioni di cartelle e organizzazioni non sono disponibili per le prenotazioni della versione standard.

Per creare un'assegnazione su 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 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, 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 nella località secondaria.

Autorizzazioni obbligatorie

Per creare un'assegnazione della prenotazione, devi disporre della seguente autorizzazione Identity and Access Management (IAM):

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, vedi Ruoli e autorizzazioni predefiniti.

Assegnare un'organizzazione a una prenotazione

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel pannello di navigazione, vai alla sezione Gestione della capacità.

  3. Fai clic sulla scheda Prenotazioni.

  4. Cercare una prenotazione nella tabella delle prenotazioni.

  5. Espandi l'opzione Azioni.

  6. Fai clic su Crea compito.

  7. Nella sezione Crea un compito, fai clic su Sfoglia.

  8. Sfoglia o cerca l'organizzazione e selezionala.

  9. Nella sezione Tipo di job, seleziona un tipo di job da assegnare per questa prenotazione. Sono incluse le seguenti opzioni:

    • QUERY
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

    Per ulteriori informazioni sui tipi di job, consulta assegnazioni di prenotazione. Questo valore predefinito è QUERY.

  10. Fai clic su Crea.

SQL

Per assegnare un'organizzazione a una prenotazione, utilizza l'istruzione DDL CREATE ASSIGNMENT.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. 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 prenotazione
    • LOCATION: la località della prenotazione
    • RESERVATION_NAME: il nome della prenotazione
    • ASSIGNMENT_ID: l'ID del compito

      L'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 organizzazione
    • JOB_TYPE: il tipo di job da assegnare a questa prenotazione, ad esempio QUERY, PIPELINE, BACKGROUND o ML_EXTERNAL

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, vedi 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 prenotazione
  • LOCATION: la località della prenotazione
  • RESERVATION_NAME: il nome della prenotazione
  • ORGANIZATION_ID: l'ID organizzazione
  • JOB_TYPE: il tipo di job da assegnare a questa prenotazione, ad esempio QUERY, PIPELINE, BACKGROUND o ML_EXTERNAL

Quando crei un'assegnazione di prenotazione, attendi almeno 5 minuti prima di eseguire una query. In caso contrario, la query potrebbe essere fatturata utilizzando prezzi on demand.

Assegnare un progetto o una cartella a una prenotazione

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel pannello di navigazione, vai alla sezione Gestione della capacità.

  3. Fai clic sulla scheda Prenotazioni.

  4. Cerca la prenotazione nella tabella delle prenotazioni.

  5. Espandi l'opzione Azioni.

  6. Fai clic su Crea compito.

  7. Nella sezione Crea un compito, fai clic su Sfoglia.

  8. Sfoglia o cerca il progetto o la cartella e selezionalo.

  9. Nella sezione Tipo di job, seleziona un tipo di job da assegnare per questa prenotazione. Sono incluse le seguenti opzioni:

    • QUERY
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

    Per ulteriori informazioni sui tipi di job, consulta assegnazioni di prenotazione. Questo valore predefinito è QUERY.

  10. Fai clic su Crea.

SQL

Per assegnare un progetto a una prenotazione, utilizza l'istruzione DDL CREATE ASSIGNMENT.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. 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 prenotazione
    • LOCATION: la località della prenotazione
    • RESERVATION_NAME: il nome della prenotazione
    • ASSIGNMENT_ID: l'ID del compito

      L'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
    • JOB_TYPE: il tipo di job da assegnare a questa prenotazione, ad esempio QUERY, PIPELINE, BACKGROUND o ML_EXTERNAL

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, vedi 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 prenotazione
  • LOCATION: la località della prenotazione
  • RESERVATION_NAME: il nome della prenotazione
  • PROJECT_ID: l'ID del progetto da assegnare a questa prenotazione
  • JOB_TYPE: il tipo di job da assegnare a questa prenotazione, ad esempio QUERY, PIPELINE, BACKGROUND o ML_EXTERNAL

Quando crei un'assegnazione di prenotazione, attendi almeno 5 minuti prima di eseguire una query. In caso contrario, la query potrebbe essere fatturata utilizzando prezzi on demand.

Per creare un progetto che utilizza solo slot inattivi, crea una prenotazione con 0 slot assegnati, quindi segui i passaggi precedenti per assegnare il progetto alla prenotazione.

Assegna un progetto a none

I compiti a none rappresentano l'assenza di un compito. I progetti assegnati a none utilizzano i prezzi on demand.

SQL

Per assegnare un progetto a none, utilizza l'istruzione DDL CREATE ASSIGNMENT.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. 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 devono utilizzare i prezzi on demand
    • ASSIGNMENT_ID: l'ID del compito

      L'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

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, vedi 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 demand
  • PROJECT_ID: l'ID del progetto da assegnare a none

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.

Utilizza 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 prenotazione
  • LOCATION: la località della prenotazione
  • RESERVATION_NAME: il nome della prenotazione
  • PROJECT_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, cartella o organizzazione, devi disporre della seguente autorizzazione di Identity and Access Management (IAM):

  • bigquery.reservationAssignments.list nel 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, vedi Ruoli e autorizzazioni predefiniti.

Trova l'assegnazione della prenotazione di un progetto

Per sapere se il progetto, la cartella o l'organizzazione sono assegnati a una prenotazione:

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel pannello di navigazione, vai alla sezione Gestione della capacità.

  3. Fai clic sulla scheda Prenotazioni.

  4. Nella tabella delle prenotazioni, espandi una prenotazione per vedere quali risorse sono assegnate 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, esegui una query sulla vista INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. 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 visualizzare
    • ADMIN_PROJECT_ID: l'ID del progetto di amministrazione proprietario della risorsa di prenotazione
    • PROJECT_ID: l'ID del progetto da assegnare alla prenotazione
    • JOB_TYPE: il tipo di job da assegnare a questa prenotazione, ad esempio QUERY, PIPELINE, BACKGROUND o ML_EXTERNAL

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, vedi Eseguire una query interattiva.

bq

Per trovare a quale prenotazione 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

Sostituisci quanto segue:

  • ADMIN_PROJECT_ID: l'ID del progetto proprietario della risorsa di prenotazione
  • LOCATION: la località delle prenotazioni da visualizzare
  • JOB_TYPE: il tipo di job da assegnare a questa prenotazione, ad esempio QUERY, PIPELINE, BACKGROUND o ML_EXTERNAL
  • PROJECT_ID: l'ID del progetto

Aggiorna assegnazioni di prenotazione

Spostare un'assegnazione in una prenotazione diversa

Puoi spostare un'assegnazione da una prenotazione a un'altra.

Per spostare un'assegnazione della prenotazione, devi disporre delle seguenti autorizzazioni di Identity and Access Management (IAM) sul progetto di amministrazione e sull'assegnatario.

  • bigquery.reservationAssignments.create
  • bigquery.reservationAssignments.delete

Ciascuno dei seguenti ruoli IAM predefiniti include le seguenti autorizzazioni:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Per ulteriori informazioni sui ruoli IAM in BigQuery, vedi 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 proprietario della risorsa di prenotazione
  • LOCATION: la località della nuova prenotazione
  • RESERVATION_NAME: la prenotazione da cui spostare l'assegnazione
  • DESTINATION_RESERVATION: la prenotazione in cui spostare il compito
  • ASSIGNMENT_ID: l'ID del compito

    Per ottenere l'ID assegnazione, vedi Elencare le 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 tutte le assegnazioni nelle relative cartelle o organizzazioni principali oppure utilizza i prezzi on demand se non esistono assegnazioni padre.

Quando elimini un'assegnazione della prenotazione, i job in esecuzione con gli slot della prenotazione continuano a essere eseguiti fino al completamento.

Autorizzazioni obbligatorie

Per eliminare un'assegnazione della prenotazione, devi disporre della seguente autorizzazione IAM (Identity and Access Management):

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

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel pannello di navigazione, vai alla sezione Gestione della capacità.

  3. Fai clic sulla scheda Prenotazioni.

  4. Nella tabella delle prenotazioni, espandi la prenotazione per trovare il progetto.

  5. Espandi l'opzione Azioni.

  6. Fai clic su Elimina.

SQL

Utilizza l'istruzione DDL DROP ASSIGNMENT.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor query, inserisci la seguente istruzione:

    DROP ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`;
    

    Sostituisci quanto segue:

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, vedi 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: