Trabalhar com atribuições de reserva

Com a API BigQuery Reservation, você compra slots dedicados (chamados compromissos), cria pools de slots (chamados reservas) e atribui projetos, pastas e organizações a essas reservas.

Criar atribuições de reserva

Para usar os slots comprados, crie uma atribuição que atribui um projeto, uma pasta ou uma organização a uma reserva de slot.

Os projetos usam a reserva mais específica na hierarquia de recursos a que são atribuídos. Uma atribuição de pasta substitui uma atribuição de organização, e uma atribuição de projeto modifica uma atribuição de pasta. As atribuições de pasta e organização não estão disponíveis para reservas da edição padrão.

Para criar uma atribuição em uma reserva, ela precisa atender a pelo menos um dos seguintes critérios:

  • Ele é configurado com uma quantidade diferente de zero de slots de valor de referência atribuídos.

  • Ele é configurado com uma quantidade diferente de zero de slots de escalonamento automático.

  • Ele é configurado para usar slots ociosos e há slots ociosos disponíveis no projeto.

Se você tentar atribuir um recurso a uma reserva que não atende a pelo menos um desses critérios, a seguinte mensagem será exibida: Assignment is pending, your project will be executed as on-demand..

Permissões necessárias

Para criar uma atribuição de reserva, você precisa da seguinte permissão de gerenciamento de identidade e acesso (IAM):

Cada um dos seguintes papéis predefinidos do IAM inclui essa permissão:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Para mais informações sobre os papéis do IAM no BigQuery, consulte Papéis e permissões predefinidos.

Atribuir uma organização a uma reserva

Console

  1. No Console do Google Cloud, acesse a página do BigQuery.

    Ir para o BigQuery

  2. No painel de navegação, acesse a seção Gerenciamento de capacidade.

  3. Clique na guia Reservas.

  4. Encontrar a reserva na tabela de reservas

  5. Expanda a opção Ações.

  6. Clique em Criar atribuição.

  7. Na seção Criar uma atribuição, clique em Procurar.

  8. Procure ou pesquise a organização e a selecione.

  9. Na seção Tipo de job, selecione um tipo de job para atribuir a essa reserva. As opções incluem:

    • QUERY
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

    Para mais informações sobre tipos de jobs, consulte Atribuições de reserva. Esse valor padrão é QUERY.

  10. Clique em Criar.

SQL

Para atribuir uma organização a uma reserva, use a instrução DDL CREATE ASSIGNMENT.

  1. No Console do Google Cloud, acesse a página BigQuery.

    Ir para o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
    OPTIONS (
      assignee = 'organizations/ORGANIZATION_ID',
      job_type = 'JOB_TYPE');
    

    Substitua:

    • ADMIN_PROJECT_ID: o ID do projeto de administração que é proprietário do recurso de reserva.
    • LOCATION: o local da reserva
    • RESERVATION_NAME: o nome da reserva
    • ASSIGNMENT_ID: o ID da atribuição.

      Ele precisa ser exclusivo do projeto e do local, começar e terminar com uma letra minúscula ou um número e conter apenas letras minúsculas, números e traços.

    • ORGANIZATION_ID: o ID da organização.
    • JOB_TYPE: o tipo de job a ser atribuído a essa reserva, como QUERY, PIPELINE, BACKGROUND, ou ML_EXTERNAL

  3. Clique em Executar.

Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

bq

Para atribuir os jobs de uma organização a uma reserva, use o comando bq mk com a sinalização --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

Substitua:

  • ADMIN_PROJECT_ID: o ID do projeto de administração que é proprietário do recurso de reserva.
  • LOCATION: o local da reserva
  • RESERVATION_NAME: o nome da reserva
  • ORGANIZATION_ID: o ID da organização.
  • JOB_TYPE: o tipo de job a ser atribuído a essa reserva, como QUERY, PIPELINE, BACKGROUND, ou ML_EXTERNAL

Ao criar uma atribuição de reserva, aguarde pelo menos cinco minutos antes de executar uma consulta. Caso contrário, a consulta poderá ser cobrada por meio de preços sob demanda.

Atribuir um projeto ou uma pasta a uma reserva

Console

  1. No Console do Google Cloud, acesse a página do BigQuery.

    Ir para o BigQuery

  2. No painel de navegação, acesse a seção Gerenciamento de capacidade.

  3. Clique na guia Reservas.

  4. Encontrar a reserva na tabela de reservas

  5. Expanda a opção Ações.

  6. Clique em Criar atribuição.

  7. Na seção Criar uma atribuição, clique em Procurar.

  8. Procure ou pesquise o projeto ou a pasta e selecione-o.

  9. Na seção Tipo de job, selecione um tipo de job para atribuir a essa reserva. As opções incluem:

    • QUERY
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

    Para mais informações sobre tipos de jobs, consulte Atribuições de reserva. Esse valor padrão é QUERY.

  10. Clique em Criar.

SQL

Para atribuir um projeto a uma reserva, use a instrução DDL CREATE ASSIGNMENT.

  1. No Console do Google Cloud, acesse a página BigQuery.

    Ir para o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
    OPTIONS(
      assignee="projects/PROJECT_ID",
      job_type="JOB_TYPE");
    

    Substitua:

    • ADMIN_PROJECT_ID: o ID do projeto de administração que é proprietário do recurso de reserva.
    • LOCATION: o local da reserva
    • RESERVATION_NAME: o nome da reserva
    • ASSIGNMENT_ID: o ID da atribuição.

      Ele precisa ser exclusivo do projeto e do local, começar e terminar com uma letra minúscula ou um número e conter apenas letras minúsculas, números e traços.

    • PROJECT_ID: o ID do projeto a ser atribuído à reserva.
    • JOB_TYPE: o tipo de job a ser atribuído a essa reserva, como QUERY, PIPELINE, BACKGROUND, ou ML_EXTERNAL

  3. Clique em Executar.

Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

bq

Para atribuir jobs a uma reserva, use o comando bq mk com a sinalização --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

Substitua:

  • ADMIN_PROJECT_ID: o ID do projeto de administração que é proprietário do recurso de reserva.
  • LOCATION: o local da reserva
  • RESERVATION_NAME: o nome da reserva
  • PROJECT_ID: o ID do projeto a ser atribuído a essa reserva.
  • JOB_TYPE: o tipo de job a ser atribuído a essa reserva, como QUERY, PIPELINE, BACKGROUND, ou ML_EXTERNAL

Ao criar uma atribuição de reserva, aguarde pelo menos cinco minutos antes de executar uma consulta. Caso contrário, a consulta poderá ser cobrada por meio de preços sob demanda.

Para criar um projeto que usa apenas slots inativos, crie uma reserva com 0 slots atribuídos e siga as etapas acima para atribuir o projeto a ela.

Atribuir um projeto a none

Atribuir para none representa a ausência de atribuição. Os projetos atribuídos a none usam preços sob demanda.

SQL

Para atribuir um projeto a none, use a instrução DDL CREATE ASSIGNMENT.

  1. No Console do Google Cloud, acesse a página BigQuery.

    Ir para o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.none.ASSIGNMENT_ID`
    OPTIONS(
      assignee="projects/PROJECT_ID",
      job_type="JOB_TYPE");
    

    Substitua:

    • LOCATION: o local dos jobs que precisam usar preços sob demanda
    • ASSIGNMENT_ID: o ID da atribuição.

      Ele precisa ser exclusivo do projeto e do local, começar e terminar com uma letra minúscula ou um número e conter apenas letras minúsculas, números e traços.

    • PROJECT_ID: o ID do projeto a ser atribuído à reserva.

  3. Clique em Executar.

Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

bq

Para atribuir um projeto a none, use o comando bq mk com a sinalização --reservation_assignment:

bq mk \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=none \
    --job_type=QUERY \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

Substitua:

  • LOCATION: o local dos jobs que precisam usar preços sob demanda
  • PROJECT_ID: o ID do projeto a ser atribuído a none.

Atribuir slots a cargas de trabalho do BigQuery ML

Os seguintes tipos de modelo do BigQuery ML usam serviços externos:

É possível atribuir slots reservados a consultas com esses serviços usando o tipo de atribuição ML_EXTERNAL. Se nenhum tipo de atribuição ML_EXTERNAL for encontrado, o job de consulta será executado sob demanda.

Use o comando bq mk com a sinalização --reservation_assignment e defina a sinalização --job_type como 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

Substitua:

  • ADMIN_PROJECT_ID: o ID do projeto que é proprietário do recurso de reserva.
  • LOCATION: o local da reserva
  • RESERVATION_NAME: o nome da reserva
  • PROJECT_ID: o ID do projeto a ser atribuído a essa reserva.

Encontrar atribuições de reserva

Permissões necessárias

Para pesquisar uma atribuição de reserva para um determinado projeto, pasta ou organização, você precisa da seguinte permissão de gerenciamento de identidade e acesso (IAM):

  • bigquery.reservationAssignments.list no projeto de administração.

Cada um dos seguintes papéis predefinidos do IAM inclui essa permissão:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor
  • BigQuery Resource Viewer
  • BigQuery User

Para mais informações sobre os papéis do IAM no BigQuery, consulte Papéis e permissões predefinidos.

Encontrar a atribuição de reserva de um projeto

Para descobrir se o projeto, a pasta ou a organização está atribuída a uma reserva, faça o seguinte:

Console

  1. No Console do Google Cloud, acesse a página do BigQuery.

    Ir para o BigQuery

  2. No painel de navegação, acesse a seção Gerenciamento de capacidade.

  3. Clique na guia Reservas.

  4. Na tabela de reservas, expanda uma reserva para conferir quais recursos estão atribuídos a ela ou use o campo Filtro para filtrar por nome do recurso.

SQL

Para encontrar a reserva a que os jobs de consulta do projeto estão atribuídos, consulte a visualização INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT.

  1. No Console do Google Cloud, acesse a página BigQuery.

    Ir para o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

      SELECT
        assignment_id
      FROM `region-LOCATION`.INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT
      WHERE
        assignee_id = 'PROJECT_ID'
        AND job_type = 'JOB_TYPE';
    

    Substitua:

    • LOCATION: o local das reservas para visualizar
    • ADMIN_PROJECT_ID: o ID do projeto de administração que é proprietário do recurso de reserva.
    • PROJECT_ID: o ID do projeto a ser atribuído à reserva.
    • JOB_TYPE: o tipo de job a ser atribuído a essa reserva, como QUERY, PIPELINE, BACKGROUND, ou ML_EXTERNAL

  3. Clique em Executar.

Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

bq

Para descobrir a qual reserva os jobs de consulta do projeto estão atribuídos, use o comando bq show com a sinalização --reservation_assignment:

bq show \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --job_type=JOB_TYPE \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

Substitua:

  • ADMIN_PROJECT_ID: o ID do projeto que é proprietário do recurso de reserva.
  • LOCATION: o local das reservas para visualizar
  • JOB_TYPE: o tipo de job a ser atribuído a essa reserva, como QUERY, PIPELINE, BACKGROUND, ou ML_EXTERNAL
  • PROJECT_ID: o ID do projeto

Atualizar atribuições de reserva

Como mover uma atribuição para outra reserva

Você pode mover uma atribuição de uma reserva para outra.

Para mover uma atribuição de reserva, é preciso ter as seguintes permissões de gerenciamento de identidade e acesso (IAM) no projeto de administração e no responsável.

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

Cada um dos papéis predefinidos do IAM a seguir inclui estas permissões:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Para mais informações sobre os papéis do IAM no BigQuery, consulte Papéis e permissões predefinidos.

Para mover uma atribuição, use o 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

Substitua:

  • ADMIN_PROJECT_ID: o ID do projeto que é proprietário do recurso de reserva.
  • LOCATION: o local da nova reserva
  • RESERVATION_NAME: a reserva de onde a atribuição será movida
  • DESTINATION_RESERVATION: a reserva para onde a atribuição será movida.
  • ASSIGNMENT_ID: o ID da atribuição.

    Para conseguir o ID da atribuição, consulte Listar a atribuição da reserva de um projeto.

Excluir atribuições de reserva

É possível remover um projeto de uma reserva excluindo a atribuição da reserva. Se um projeto não estiver atribuído a nenhuma reserva, ele herdará todas as atribuições nas pastas ou organizações pai. Caso contrário, se não existirem atribuições pai, usará preços sob demanda.

Quando você exclui uma atribuição de reserva, os jobs em execução com slots dessa reserva continuam sendo executados até a conclusão.

Permissões necessárias

Para excluir uma atribuição de reserva, você precisa da seguinte permissão de gerenciamento de identidade e acesso (IAM, na sigla em inglês):

Cada um dos seguintes papéis predefinidos do IAM inclui essa permissão:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Remover um projeto de uma reserva

Para remover um projeto de uma reserva:

Console

  1. No Console do Google Cloud, acesse a página do BigQuery.

    Ir para o BigQuery

  2. No painel de navegação, acesse a seção Gerenciamento de capacidade.

  3. Clique na guia Reservas.

  4. Na tabela de reservas, expanda a reserva para encontrar o projeto.

  5. Expanda a opção Ações.

  6. Clique em Excluir.

SQL

Use a instrução DDL DROP ASSIGNMENT.

  1. No Console do Google Cloud, acesse a página BigQuery.

    Ir para o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

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

    Substitua:

  3. Clique em Executar.

Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

bq

Para remover um projeto de uma reserva, use o comando bq rm com a sinalização --reservation_assignment:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment RESERVATION_NAME.ASSIGNMENT_ID

Substitua:

  • ADMIN_PROJECT_ID: o ID do projeto que é proprietário do recurso de reserva.
  • LOCATION: o local da reserva
  • RESERVATION_NAME: o nome da reserva
  • ASSIGNMENT_ID: o ID da atribuição.

    Para conseguir o ID da atribuição, consulte Listar a atribuição da reserva de um projeto.