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.
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.
|
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:
|
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;
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.
Faça login no Snowsight.
Selecione Admin » Cost Management.
Selecione Budgets.
Insira um Budget name.
Selecione o banco de dados e o esquema no qual deseja criar seu orçamento.
Digite o Spending limit.
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.
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
Para criar um orçamento personalizado, você deve usar uma função com os privilégios necessários para criar um orçamento.
Para modificar um orçamento personalizado, você deve usar uma função com os privilégios necessários para modificar um orçamento.
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();
Crie o orçamento
my_budget
embudgets_db.budgets_schema
usando o comando CREATE BUDGET:USE SCHEMA budgets_db.budgets_schema; CREATE SNOWFLAKE.CORE.BUDGET my_budget();
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);
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çamentomy_budget
no esquemabudgets_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;
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 dadosdb1
ao orçamento personalizadomy_budget
, execute as seguintes instruções:GRANT USAGE ON DATABASE db1 TO ROLE budget_admin; GRANT APPLYBUDGET ON DATABASE db1 TO ROLE budget_admin;
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¶
Faça login no Snowsight.
Selecione Admin » Cost Management.
Selecione Budgets.
Selecione o orçamento a ser editado.
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.
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();
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.
Você pode adicionar a tabela
t1
ao orçamentomy_budget
seguindo os seguintes passos: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;
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'));
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 argumentoobject_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.
Você pode remover o banco de dados
db1
do orçamentomy_budget
seguindo os seguintes passos: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;
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'));