Orçamentos personalizados

Os orçamentos personalizados permitem que você monitore os custos de computação de um grupo personalizado de objetos. Você pode especificar quais objetos deseja monitorar de duas maneiras:

  • Adicionar uma tag ao orçamento. Todos os objetos que têm o par tag/valor especificado são monitorados pelo orçamento.

  • Adicionar cada objeto ao orçamento individualmente.

O mesmo orçamento pode rastrear objetos adicionados individualmente e adicionados usando tags. Se um objeto foi incluído no orçamento por mais de um motivo (por exemplo, ele foi adicionado individualmente e tem o par tag/valor especificado), seu uso de crédito conta apenas uma vez em relação ao limite de gastos do orçamento.

Ao adicionar um objeto a um orçamento personalizado, o orçamento monitora todos os custos de computação do objeto, incluindo operações de manutenção em segundo plano e recursos sem servidor. Por exemplo, se você adicionar uma tabela a um orçamento personalizado e a tabela tiver o clustering automático habilitado, o orçamento monitorará o uso de crédito para manutenção em segundo plano para clustering automático.

Uso de tags para monitorar objetos

É possível aplicar tags a orçamentos para monitorar o uso de crédito por objetos que pertencem a uma unidade lógica na conta. Suponha que você use a tag cost_center para rastrear custos incorridos por centros de custo na organização. Você pode marcar todos os objetos atribuídos à equipe de vendas com o par tag/valor cost_center = 'sales'. Em vez de adicionar cada objeto usado pela equipe de vendas a um orçamento, você pode apenas adicionar o par tag/valor cost_center = 'sales', e o orçamento vai monitorar automaticamente o uso de crédito de todos os objetos que foram designadoss a esse par tag/valor.

Herança de tag

Adicionar uma tag a um orçamento rastreia todos os objetos com essa tag, incluindo os que a herdaram de um objeto pai. Por exemplo, se um banco de dados tem uma tag, as tabelas do banco de dados herdam a tag e são rastreadas por um orçamento. Como o orçamento rastreia o uso com base no par tag/valor, se você substituir o valor da tag no nível da tabela, isso poderá mudar se o orçamento rastreia ou não o uso associado à tabela. Por exemplo, suponha que você tenha um orçamento que rastreie objetos com a tag team = 'eng'. Se o banco de dados tiver a tag team = 'eng', mas uma tabela do banco de dados tiver a tag team = 'IT', o orçamento não vai monitorar os custos associados a essa tabela.

No contexto de orçamentos, as tags não são herdadas de uma conta porque o orçamento da conta é destinado a atender a esse caso de uso.

Para obter mais informações, incluindo como os valores da tag são substituídos, consulte Herança de tag.

Rastreamento de um objeto com vários orçamentos

Vários orçamentos podem adicionar o mesmo par tag/valor, o que significa mais uso de crédito do mesmo objeto do que o orçamento pode rastrear. Por exemplo, suponha que você adicione a tag cost_center = 'eng' a ambos budget_1 e budget_2. Como um warehouse com a tag cost_center = 'eng' consome créditos, isso será considerado no limite de crédito de ambos budget_1 e budget_2.

Se tiver várias tags, um objeto também poderá ser rastreado por mais de um orçamento. Por exemplo, suponha que um warehouse tenha duas tags: cost_center = 'finance' e stage = 'dev'. Você pode criar um orçamento que rastreia cost_center = 'finance' e outro que rastreia stage = 'dev'. Os créditos consumidos pelo warehouse contam para o limite de crédito de ambos os orçamentos.

Limitações e considerações

Ao usar tags para monitorar objetos, tenha em mente o seguinte:

  • Quando você altera uma tag em um objeto, pode levar até seis horas para que a alteração seja refletida nos orçamentos que usam tags.

  • Atualmente, os alertas não podem ser monitorados com tags. Você deve adicioná-los individualmente.

  • As mudanças nas tags nos primeiros dois dias do mês são refletidas no uso do mês anterior.

Objetos compatíveis para orçamentos personalizados

Você pode criar um orçamento personalizado para monitorar os seguintes tipos de objetos Snowflake:

Objeto

Custos monitorados

Alertas

Os alertas sem servidor são monitorados pelo orçamento da conta. Para monitorar o uso de crédito de um alerta executado por meio de um warehouse gerenciado pelo usuário, é necessário adicionar o warehouse ao orçamento. Para obter mais informações sobre os custos dos alertas, consulte Explicação dos custos dos alertas.

Aplicativos . (Snowflake Native Apps)

O comportamento dos orçamentos para objetos criados e pertencentes a um Snowflake Native App depende se você adiciona o app diretamente ou adicionando uma tag.

  • Quando você adiciona um Snowflake Native App a um orçamento usando tags, somente warehouses que tenham a combinação tag/valor correspondente são rastreados automaticamente, sejam ou não compartilhados.

  • Ao adicionar um Snowflake Native App a um orçamento diretamente, todos os objetos que consomem créditos e são criados e pertencentes ao app são adicionados automaticamente ao orçamento. Isso inclui warehouses e pools de computação Snowpark Container Services que são de propriedade do aplicativo. Os warehouses e pools de computação compartilhados não são rastreados automaticamente pelo orçamento, embora você possa adicioná-los manualmente.

    Você não pode adicionar objetos criados e pertencentes a um aplicativo a um orçamento separado. É possível adicionar warehouses e pools de computação que estejam compartilhados com um orçamento separado.

    Para determinar se um warehouse ou pool de computação é de propriedade de um aplicativo, verifique o seguinte:

    • Para warehouses, execute o comando SHOW WAREHOUSES. Se o valor na coluna owner_role_type for APPLICATION, o warehouse é de propriedade de um Snowflake Native App.

    • Para pools de computação, execute o comando SHOW COMPUTE POOLS. Se o valor na coluna application não for NULL, o pool de computação será de propriedade de um Snowflake Native App.

Pool de computação

Uso do pool de computação para o Snowpark Container Services. Para obter mais informações, consulte Custo do pool de computação.

Bancos de dados

Quando você adiciona um banco de dados a um orçamento, todos os objetos compatíveis que o banco de dados contém também são adicionados automaticamente. O orçamento monitora o uso de crédito para os seguintes objetos e recursos sem servidor:

  • Objetos de esquema compatíveis conforme descrito acima.

  • Replicação para bancos de dados secundários (réplicas).

    Nota

    Os custos de replicação para bancos de dados secundários replicados em um grupo de replicação ou failover só podem ser monitorados pelo orçamento da conta.

Exibições materializadas

Manutenção em segundo plano para a exibição materializada. Para obter mais informações, consulte Custo de exibições materializadas.

Esquemas

Quando você adiciona um esquema a um orçamento, todos os objetos compatíveis que o esquema contém também são adicionados automaticamente. O orçamento monitora o uso de crédito para objetos de esquema, conforme descrito acima.

Canais

Consumo de recursos para carregar dados usando o Snowpipe. Para obter mais informações, consulte Custos do Snowpipe.

Tabelas

Operações de manutenção em segundo plano para clustering automático e otimização de pesquisa se estiverem habilitadas na tabela.

Tarefas

Tarefas sem servidor são monitoradas por um orçamento personalizado. Para monitorar o uso de crédito para uma tarefa executada usando um warehouse gerenciado pelo usuário, você deve adicionar o warehouse ao orçamento. Para obter mais informações, consulte Custos da tarefa.

Warehouses

Recursos de computação para execução de consulta, interface da Web e outros recursos (consulte Uso de crédito do warehouse virtual), tarefas sem servidor e computação de serviços de nuvem.

Para obter mais informações, consulte Adição ou remoção de tags de um orçamento personalizado.

Criação de um orçamento personalizado

As próximas seções explicam como criar um orçamento personalizado:

É possível criar um orçamento personalizado usando a Snowsight ou executando instruções SQL.

Crie uma função personalizada para criar orçamentos

Você pode usar uma função personalizada para criar orçamentos personalizados em sua conta. Para obter uma lista completa de privilégios e funções que devem ser concedidos a uma função para criar um orçamento personalizado, consulte Funções e privilégios do Budgets.

O exemplo a seguir cria uma função denominada budget_owner e concede a função e os privilégios necessários para criar orçamentos personalizados no esquema budgets_db.budgets_schema. O exemplo deve ser executado usando a função ACCOUNTADMIN:

USE ROLE ACCOUNTADMIN;
   
CREATE ROLE budget_owner;
  
GRANT USAGE ON DATABASE budgets_db TO ROLE budget_owner;
GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO ROLE budget_owner;

GRANT DATABASE ROLE SNOWFLAKE.BUDGET_CREATOR TO ROLE budget_owner;

GRANT CREATE SNOWFLAKE.CORE.BUDGET ON SCHEMA budgets_db.budgets_schema
  TO ROLE budget_owner;
Copy

Se quiser habilitar uma função diferente do proprietário do orçamento para modificar as configurações de orçamento personalizado, você pode criar uma função personalizada com privilégios de modificação. Para obter mais informações, consulte Criação de uma função personalizada para gerenciar um orçamento personalizado.

Como usar o Snowsight para criar um orçamento personalizado

Nota

Se o orçamento da conta não foi ativado ou foi desativado, você não pode usar o Snowsight para criar orçamentos personalizados. No entanto, você pode criar orçamentos personalizados usando SQL.

  1. Faça login no Snowsight.

  2. Selecione Admin » Cost Management.

  3. Selecione Budgets.

  4. Selecione Ícone de mais (adicionar orçamento).

  5. Insira um Budget name.

  6. Selecione o banco de dados e o esquema no qual deseja criar seu orçamento.

  7. Digite o Spending limit.

  8. Especifique os endereços de e-mail para receber notificações.

    Nota

    Cada endereço de e-mail adicionado para notificações de orçamento deve ser verificado. A configuração do e-mail de notificação falhará se algum endereço de e-mail da lista não for verificado.

  9. Selecione + Tag & resources e adicione as tags e os recursos que você quer adicionar ao orçamento personalizado.

    Nota

    • Quando você seleciona um banco de dados ou esquema, todos os objetos suportados (por exemplo, tabelas) contidos no banco de dados ou esquema também são adicionados ao orçamento.

    • Se você estiver adicionando objetos individuais diretamente, só poderá adicionar um objeto a um orçamento personalizado. Se esse for o caso, quando um objeto já estiver incluído em um orçamento personalizado, e você adicionar esse objeto a um segundo orçamento personalizado, o Budgets removerá o objeto do primeiro orçamento personalizado sem nenhum um aviso. Esse comportamento não se aplica ao uso de tags para adicionar objetos aos orçamentos. Um objeto com uma ou mais tags pode ser incluído em vários orçamentos personalizados se você usa tags para adicionar o objeto aos orçamentos.

Após criar e configurar um orçamento personalizado, você pode criar uma função personalizada para permitir que administradores não pertencentes à conta monitorem os recursos e o uso do orçamento. Para obter mais informações, consulte Criação de uma função personalizada para monitorar um orçamento personalizado.

Como usar os comandos SQL para criar um orçamento personalizado

Crie um orçamento personalizado e defina o limite de gastos e os endereços de e-mail de notificação.

Nota

  1. Revise os orçamentos existentes em sua conta:

    Nota

    A instrução a seguir retorna os orçamentos para os quais você tem privilégios de acesso. Somente um usuário com a função ACCOUNTADMIN pode ver todos os orçamentos na conta.

    SELECT SYSTEM$SHOW_BUDGETS_IN_ACCOUNT();
    
    Copy
  2. Crie o orçamento my_budget em budgets_db.budgets_schema usando o comando CREATE BUDGET:

    USE SCHEMA budgets_db.budgets_schema;
    
    CREATE SNOWFLAKE.CORE.BUDGET my_budget();
    
    Copy
  3. Defina o limite de gastos mensais. Por exemplo, defina o limite de gastos para 500 créditos por mês:

    CALL my_budget!SET_SPENDING_LIMIT(500);
    
    Copy
  4. Configure notificações para o orçamento, de modo que você receba notificações quando for esperado que o uso de crédito exceda os limites de gastos.

    Consulte Notificações sobre orçamentos.

Após criar e configurar um orçamento personalizado, você pode criar uma função personalizada para permitir que administradores não pertencentes à conta monitorem os recursos e o uso do orçamento. Para obter mais informações, consulte Criação de uma função personalizada para monitorar um orçamento personalizado.

Para adicionar objetos ao seu novo orçamento, consulte Adição e remoção de objetos de um orçamento personalizado.

Criação de uma função personalizada para gerenciar um orçamento personalizado

Para monitorar e modificar um orçamento personalizado, você pode conceder privilégios e funções de instância a uma função personalizada. Para obter uma lista completa de privilégios e funções que devem ser concedidos a uma função para modificar um orçamento personalizado, consulte Funções e privilégios do Budgets.

Exemplo de função personalizada

Conceda à função personalizada budget_admin a capacidade de modificar o orçamento my_budget no esquema budgets_db.budgets_schema:

Nota

Você precisa do privilégio OWNERSHIP no orçamento personalizado para executar os exemplos a seguir.

  • Conceda os privilégios necessários e a função de instância à função personalizada budget_admin para o orçamento my_budget no esquema budgets_db.budgets_schema:

    GRANT USAGE ON DATABASE budgets_db TO ROLE budget_admin;
    
    GRANT USAGE ON SCHEMA budget_db.budgets_schema TO ROLE budget_admin;
    
    GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.my_budget!ADMIN
       TO ROLE budget_admin;
    
    GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE budget_admin;
    
    Copy
  • Conceda o privilégio APPLYBUDGET aos objetos e às tags que serão adicionados ou removidos de um orçamento personalizado. Essa etapa é necessária para cada objeto ou tag que será adicionado ou removido.

    Por exemplo, para habilitar a função budget_admin para adicionar o banco de dados db1 ao orçamento personalizado my_budget, execute as seguintes instruções:

    GRANT USAGE ON DATABASE db1 TO ROLE budget_admin;
    
    GRANT APPLYBUDGET ON DATABASE db1 TO ROLE budget_admin;
    
    Copy

Adição ou remoção de tags de um orçamento personalizado

Você pode adicionar ou remover tags de um orçamento personalizado usando a Snowsight ou o SQL. Cada tag adicionada ao orçamento inclui um ou mais valores para a tag.

Nota

Para adicionar ou remover tags de um orçamento personalizado, você deve usar uma função com os privilégios necessários no orçamento e na tag. Para obter mais informações, consulte Criação de uma função personalizada para gerenciar um orçamento personalizado.

Uso da Snowsight para adicionar ou remover tags de um orçamento personalizado

  1. Faça login no Snowsight.

  2. Selecione Admin » Cost Management.

  3. Selecione Budgets.

  4. Selecione o orçamento a ser editado.

  5. No painel, selecione Ícone de lápis (ícone de edição).

  6. Selecione + Tags & resources.

  7. Expanda Tags e navegue até a tag que quer adicionar.

  8. Faça uma das seguintes opções:

    • Se a tag tiver uma lista de valores permitidos, selecione um ou mais valores.

    • Se a tag puder ser definida com qualquer valor, especifique o valor.

  9. Selecione Done.

Nota

Ao adicionar tags ao orçamento na Snowsight, tenha em mente o seguinte:

  • Uma tag deve ser aplicada a pelo menos um objeto antes de ser adicionada a um orçamento.

  • Pode levar até duas horas para que uma tag apareça após ser adicionada a um objeto.

Uso de comandos SQL para adicionar ou remover tags de um orçamento personalizado

A função usada para adicionar ou remover uma tag de um orçamento deve ter o privilégio APPLYBUDGET na tag. Para obter mais informações, consulte os exemplos na seção Criação de uma função personalizada para gerenciar um orçamento personalizado.

Para revisar a lista de tags que já estão no orçamento personalizado, chame o método <budget_name>!GET_LINKED_TAGS do orçamento. Por exemplo, para ver a lista de tags no orçamento my_budget no esquema budgets_db.budgets_schema, execute a seguinte instrução:

CALL budgets_db.budgets_schema.my_budget!GET_LINKED_TAGS();
Copy

As tags devem ser adicionadas ou removidas de um orçamento por uma referência.

  1. Você pode adicionar a tag cost_mgmt_db.tags.cost_center ao orçamento my_budget seguindo as etapas abaixo:

    1. Conceda o privilégio APPLYBUDGET na tag à função budget_admin executando a seguinte instrução:

      GRANT APPLYBUDGET ON TAG cost_center TO ROLE budget_admin;
      
      Copy
    2. Passe uma referência da tag cost_center ao método de instância ADD_TAG executando a instrução a seguir. O valor da tag é definido como finance.

      CALL budgets_db.budgets_schema.my_budget!ADD_TAG(
         SELECT SYSTEM$REFERENCE('TAG',
            'cost_mgmt_db.tags.cost_center',
            'SESSION',
            'applybudget'),
            'finance');
      
      Copy

      A função SYSTEM$REFERENCE cria uma referência da tag cost_center, com o privilégio APPLYBUDGET concedido na tag. Isso permite que o orçamento monitore os objetos que têm o par tag/valor especificado em sua conta. O terceiro parâmetro da função especifica o escopo da referência. Neste caso, «SESSION» cria uma referência com escopo de sessão. As referências passadas ao método ADD_TAG para um orçamento podem ser criadas com qualquer escopo de referência transitório (ou seja, o terceiro parâmetro pode ser “SESSION” ou “CALL”).

  2. Você pode remover a tag cost_center do orçamento my_budget seguindo estas etapas:

    1. Conceda o privilégio APPLYBUDGET no banco de dados à função budget_admin executando a seguinte instrução:

      GRANT APPLYBUDGET ON TAG cost_center TO ROLE budget_admin;
      
      Copy
    2. Remova a tag passando uma referência ao método de instância REMOVE_TAG:

      CALL budgets_db.budgets_schema.my_budget!REMOVE_TAG(
         SELECT SYSTEM$REFERENCE('TAG',
            'cost_mgmt_db.tags.cost_center',
            'SESSION',
            'applybudget'),
            'finance');
      
      Copy

Adição e remoção de objetos de um orçamento personalizado

Você pode adicionar ou remover objetos de um orçamento personalizado usando o Snowsight ou SQL.

Nota

Para adicionar ou remover objetos de um orçamento personalizado, você deve usar uma função com os privilégios necessários no orçamento e no objeto. Para obter mais informações, consulte Criação de uma função personalizada para gerenciar um orçamento personalizado.

Como usar o Snowsight para adicionar ou remover objetos de um orçamento personalizado

  1. Faça login no Snowsight.

  2. Selecione Admin » Cost Management.

  3. Selecione Budgets.

  4. Selecione o orçamento a ser editado.

  5. No painel, selecione Ícone de lápis (ícone de edição).

  6. Selecione + Tags & resources e os objetos que você quer adicionar ao orçamento personalizado.

    Nota

    • Quando você seleciona um banco de dados ou esquema, todos os objetos suportados (por exemplo, tabelas) contidos no banco de dados ou esquema também são adicionados ao orçamento.

    • Se você estiver adicionando objetos individuais diretamente, só poderá adicionar um objeto a um orçamento personalizado. Se esse for o caso, quando um objeto já estiver incluído em um orçamento personalizado, e você adicionar esse objeto a um segundo orçamento personalizado, o Budgets removerá o objeto do primeiro orçamento personalizado sem nenhum um aviso. Esse comportamento não se aplica ao uso de tags para adicionar objetos aos orçamentos. Um objeto com uma ou mais tags pode ser incluído em vários orçamentos personalizados se você usa tags para adicionar o objeto aos orçamentos.

  7. Selecione Done.

Como usar os comandos SQL para adicionar ou remover objetos de um orçamento personalizado

A função usada para adicionar ou remover um objeto de um orçamento deve ter o privilégio APPLYBUDGET sobre o objeto. Para obter mais informações, consulte os exemplos na seção Criação de uma função personalizada para gerenciar um orçamento personalizado.

Para revisar a lista de objetos já no orçamento personalizado, chame o método <budget_name>!GET_LINKED_RESOURCES do orçamento. Por exemplo, para ver a lista de objetos no orçamento my_budget no esquema budgets_db.budgets_schema, execute a seguinte instrução:

CALL budgets_db.budgets_schema.my_budget!GET_LINKED_RESOURCES();
Copy

A instrução retorna a seguinte saída:

+-------------+-----------------+-----------+-------------+---------------+
| RESOURCE_ID | NAME            | DOMAIN    | SCHEMA_NAME | DATABASE_NAME |
|-------------+-----------------+-----------+-------------+---------------|
|         326 | DB1             | DATABASE  | NULL        | NULL          |
|         157 | MY_WH           | WAREHOUSE | NULL        | NULL          |
+-------------+-----------------+-----------+-------------+---------------+

Nota

A lista não inclui:

  • Objetos adicionados automaticamente (por exemplo, pools de computação e warehouses criados e pertencentes a um Snowflake Native App).

  • Objetos adicionados quando uma tag foi adicionada ao orçamento.

Os objetos devem ser adicionados ou removidos de um orçamento por referência.

  1. Você pode adicionar a tabela t1 ao orçamento my_budget seguindo os seguintes passos:

    1. Conceda o privilégio APPLYBUDGET na tabela à função budget_admin executando a seguinte instrução:

      GRANT APPLYBUDGET ON TABLE t1 TO ROLE budget_admin;
      
      Copy
    2. Passe uma referência para a tabela t1 ao método de instância ADD_RESOURCE executando a seguinte instrução:

      CALL budgets_db.budgets_schema.my_budget!ADD_RESOURCE(
         SELECT SYSTEM$REFERENCE('TABLE', 't1', 'SESSION', 'applybudget'));
      
      Copy

      A função SYSTEM$REFERENCE cria uma referência para um objeto TABLE, t1, com o privilégio APPLYBUDGET concedido na tabela. Isso permite que o orçamento monitore o objeto especificado em sua conta. O terceiro parâmetro da função especifica o escopo da referência. Neste caso, «SESSION» cria uma referência com escopo de sessão. As referências passadas ao método ADD_RESOURCE para um orçamento podem ser criadas com qualquer escopo de referência transitório (ou seja, o terceiro parâmetro pode ser “SESSION” ou “CALL”).

      Nota

      Se você quiser adicionar um Snowflake Native App a um orçamento, ao chamar SYSTEM$REFERENCE, especifique 'DATABASE' (não 'APPLICATION') para o argumento object_type.

      Para uma lista completa de objetos e privilégios, consulte Tipos de objetos e privilégios suportados para referências.

      Nota

      Se você estiver adicionando objetos individuais diretamente, só poderá adicionar um objeto a um orçamento personalizado. Se esse for o caso, quando um objeto já estiver incluído em um orçamento personalizado, e você adicionar esse objeto a um segundo orçamento personalizado, o Budgets removerá o objeto do primeiro orçamento personalizado sem nenhum um aviso. Esse comportamento não se aplica ao uso de tags para adicionar objetos aos orçamentos. Um objeto com uma ou mais tags pode ser incluído em vários orçamentos personalizados se você usa tags para adicionar o objeto aos orçamentos.

  2. Você pode remover o banco de dados db1 do orçamento my_budget seguindo os seguintes passos:

    1. Conceda o privilégio APPLYBUDGET no banco de dados à função budget_admin executando a seguinte instrução:

      GRANT APPLYBUDGET ON DATABASE db1 TO ROLE budget_admin;
      
      Copy
    2. Remova o banco de dados passando uma referência ao método de instância REMOVE_RESOURCE:

      CALL budgets_db.budgets_schema.my_budget!REMOVE_RESOURCE(
         SELECT SYSTEM$REFERENCE('DATABASE', 'db1', 'SESSION', 'applybudget'));
      
      Copy