Criar e ativar orçamentos personalizados¶
Para usar o recurso Budgets, ative o orçamento da conta e crie orçamentos personalizados para monitorar o uso de crédito para um grupo de objetos Snowflake específico.
Neste tópico:
Ativação do orçamento da conta¶
Para começar a usar o recurso Budgets para monitorar o uso de crédito da sua conta, ative o orçamento da conta. Após ativar o orçamento da conta, você pode defini o limite de gastos da conta e endereços de e-mail para receber notificações quando estiver previsto que o uso de crédito excederá o limite de gastos. As notificações começam quando os gastos projetados estão mais de 10% acima do limite de gastos.
Você pode ativar o orçamento da conta usando Snowsight ou SQL.
Criação de uma função personalizada para gerenciar o orçamento de conta¶
Você pode criar uma função personalizada para ativar e modificar o orçamento da conta. Um usuário que receber essa função poderá atuar como administrador de orçamento, bem como executar as seguintes ações no orçamento da conta:
Ativar e desativar o orçamento da conta.
Definir o limite de gastos.
Editar as configurações de notificação.
Monitorar o uso de crédito da conta.
Para obter uma lista completa de funções e privilégios necessários para a função de administrador de orçamento, consulte Funções e privilégios do Budgets.
Por exemplo, crie uma função account_budget_admin
e conceda à função a capacidade de monitorar e gerenciar o orçamento da conta:
USE ROLE ACCOUNTADMIN;
CREATE ROLE account_budget_admin;
GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_ADMIN TO ROLE account_budget_admin;
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE account_budget_admin;
Ativação e configuração do orçamento da conta usando o Snowsight¶
Nota
Somente um usuário com a função ACCOUNTADMIN ou uma função com privilégios de administrador do orçamento de conta concedidos pode ativar e configurar o orçamento da conta.
Faça login no Snowsight.
Selecione Admin » Cost Management.
Selecione Budgets.
Se solicitado, selecione um warehouse.
No canto superior direito do painel, selecione Set up Account Budget.
Insira o limite de gastos desejado para a conta.
Insira os endereços de e-mail para receber e-mails de notificação.
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 Finish Setup.
Ativação e configuração do orçamento da conta usando SQL¶
Nota
Somente um usuário com a função ACCOUNTADMIN ou uma função com privilégios de administrador do orçamento de conta concedidos pode ativar e configurar o orçamento da conta.
Ative o orçamento da conta usando o método account_root_budget!ACTIVATE:
CALL snowflake.local.account_root_budget!ACTIVATE();
Defina o limite de gastos usando o método <budget_name>!SET_SPENDING_LIMIT:
CALL snowflake.local.account_root_budget!SET_SPENDING_LIMIT(1000);
Crie uma integração de notificação com os endereços de e-mail para receber notificações de orçamento.
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.
Esta etapa é opcional. Se você tiver uma integração de notificação existente com endereços de e-mail verificados na listaALLOWED_RECIPIENTS, pule para a próxima etapa.
CREATE NOTIFICATION INTEGRATION budgets_notification_integration TYPE=EMAIL ENABLED=TRUE ALLOWED_RECIPIENTS=('costadmin@example.com','budgetadmin@example.com');
Para obter mais informações sobre a criação de uma integração de notificação, consulte Criar uma integração de notificação por e-mail.
Conceda o privilégio USAGE na integração de notificação ao aplicativo SNOWFLAKE. O privilégio USAGE permite que o orçamento use a integração de notificação para enviar e-mails:
GRANT USAGE ON INTEGRATION budgets_notification_integration TO APPLICATION snowflake;
Defina a notificação por e-mail para o orçamento da conta usando o método <budget_name>!SET_EMAIL_NOTIFICATIONS:
CALL snowflake.local.account_root_budget!SET_EMAIL_NOTIFICATIONS( 'budgets_notification_integration', 'costadmin@example.com, budgetadmin@example.com');
Após ativar e configurar o orçamento da conta, você pode permitir que um usuário não administrador monitore o orçamento da conta usando uma função personalizada. Para obter mais informações, consulte Criação de uma função personalizada para monitorar o orçamento da conta.
Criação de um orçamento personalizado¶
Você pode criar um orçamento personalizado usando o Snowsight ou 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.
Por exemplo, crie uma função budget_owner
e conceda a função e os privilégios necessários para criar orçamentos personalizados no esquema budgets_db.budgets_schema
. O exemplo a seguir 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.
Criação de um orçamento personalizado usando Snowsight¶
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.
No canto superior direito do painel, selecione (adicionar Budget).
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 Resources to monitor.
Para adicionar um banco de dados, expanda Databases para selecionar um banco de dados.
Para adicionar objetos em um esquema, expanda o esquema para listar os objetos disponíveis. Expanda a categoria do objeto (por exemplo, Tables ou Tasks) para selecionar objetos.
Para adicionar um warehouse, expanda Warehouses e selecione um warehouse.
Para adicionar um pool de computação, expanda Compute Pools e selecione um pool de computação.
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.
Você só pode adicionar um objeto a um orçamento personalizado. Se um objeto estiver atualmente 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 emitir um aviso.
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.
Criação de um orçamento personalizado usando SQL¶
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);
Defina a integração de notificações e os endereços de e-mail:
Nota
Se você ainda não tiver criado uma integração com notificação por e-mail, consulte as etapas na seção de orçamento da conta para criar uma.
Para enviar notificações, o aplicativo SNOWFLAKE deve receber o privilégio USAGE na integração de notificação:
GRANT USAGE ON INTEGRATION budgets_notification_integration TO APPLICATION snowflake;
CALL my_budget!SET_EMAIL_NOTIFICATIONS('budgets_notification_integration', 'costadmin@example.com');
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 Como adicionar e remover 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.
Exemplos¶
Conceda à função personalizada budget_admin
a capacidade de modificar o orçamento my_budget
no esquema budgets_db.budgets_schema
:
Nota
Apenas uma função com o privilégio OWNERSHIP no orçamento personalizado pode executar os seguintes exemplos.
Por exemplo, 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 para objetos a serem adicionados ou removidos de um orçamento personalizado. Esta etapa é necessária para cada objeto a 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;
Para modificar os objetos em um orçamento personalizado, consulte Como adicionar e remover objetos de um orçamento personalizado.
Como adicionar e remover 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 adicionar e remover objetos de um orçamento personalizado usando o Snowsight¶
Faça login no Snowsight.
Selecione Admin » Cost Management.
Selecione Budgets.
Selecione o orçamento a ser editado.
No canto superior direito do painel, selecione (ícone de edição).
Selecione + Resources.
Para adicionar ou remover um banco de dados, expanda Databases para selecionar ou desmarcar um banco de dados.
Para adicionar ou remover objetos em um esquema, expanda o esquema para listar os objetos disponíveis. Expanda a categoria de objeto (por exemplo, Tables ou Tasks) para cancelar a seleção de objetos.
Para adicionar ou remover um warehouse, expanda Warehouses para selecionar ou desmarcar um warehouse.
Para adicionar ou remover um pool de computação, expanda Compute Pools para selecionar ou desmarcar um pool de computação.
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.
Você só pode adicionar um objeto a um orçamento personalizado. Se um objeto estiver atualmente 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 emitir um aviso.
Selecione Done.
Como adicionar e remover objetos de um orçamento personalizado usando SQL¶
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 |
+-------------+-----------------+-----------+-------------+---------------+
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( 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”).Para uma lista completa de objetos e privilégios, consulte Tipos de objetos e privilégios suportados para referências.
Nota
Você só pode adicionar um objeto a um orçamento personalizado. Se um objeto estiver atualmente 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 emitir um aviso.
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( SYSTEM$REFERENCE('DATABASE', 'db1', 'SESSION', 'applybudget'));
Criação de uma função personalizada para monitorar orçamentos¶
Você pode delegar o monitoramento de orçamento criando uma função personalizada que pode ser usada por usuários não administradores para monitorar orçamentos.
Criação de uma função personalizada para monitorar o orçamento da conta¶
Você pode criar uma função personalizada para permitir que usuários não administradores da conta monitorem o orçamento da conta. Para obter uma lista completa de privilégios e funções que devem ser concedidos a uma função para monitorar o orçamento da conta, consulte Funções e privilégios do Budgets.
Exemplo¶
Nota
Somente um administrador de conta pode executar as instruções neste exemplo.
Por exemplo, criar uma função account_budget_monitor
e conceder à função a capacidade de exibir o uso de crédito ao orçamento da conta:
USE ROLE ACCOUNTADMIN;
CREATE ROLE account_budget_monitor;
GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_VIEWER TO ROLE account_budget_monitor;
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE account_budget_monitor;
Criação de uma função personalizada para monitorar um orçamento personalizado¶
Você pode criar uma função personalizada para permitir que usuários não administradores de conta monitorem orçamentos personalizados. Para obter uma lista completa de privilégios e funções que devem ser concedidos a uma função para monitorar um orçamento personalizado, consulte Funções e privilégios do Budgets.
Exemplo¶
Nota
Apenas um proprietário de orçamento (uma função com o privilégio OWNERSHIP) pode executar as instruções neste exemplo.
Use a função de proprietário do orçamento para conceder à função personalizada budget_monitor
a capacidade de monitorar o orçamento my_budget
no esquema budgets_db.budgets_schema
:
USE ROLE custom_budget_owner;
GRANT USAGE ON DATABASE budgets_db TO ROLE budget_monitor;
GRANT USAGE ON SCHEMA budget_db.budgets_schema TO ROLE budget_monitor;
GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.my_budget!VIEWER
TO ROLE budget_monitor;
GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE budget_monitor;
Monitoramento de orçamentos¶
Você pode monitorar orçamentos usando o Snowsight ou SQL.
Monitoramento de orçamentos usando o Snowsight¶
Você pode visualizar os gastos atuais e históricos de orçamento usando a página Budgets no Snowsight.
Nota
Somente um usuário com a função ACCOUNTADMIN ou uma função com os privilégios e função necessários pode monitorar orçamentos usando o Snowsight.
Para obter mais informações sobre como usar uma função de conta personalizada para monitorar o orçamento da conta, consulte Criação de uma função personalizada para monitorar o orçamento da conta.
Para obter mais informações sobre como usar uma função de conta personalizada para monitorar orçamentos personalizados, consulte Criação de uma função personalizada para monitorar um orçamento personalizado.
Você pode visualizar os gastos atuais e históricos do orçamento usando a página Budgets em Snowsight.
Faça login no Snowsight.
Selecione Admin » Cost Management.
Selecione Budgets.
Na exibição Current Month de um orçamento, você pode revisar o uso de crédito por dia até o dia atual. Você pode ver se pode exceder seu orçamento do mês. O gráfico de barras continua até o fim do mês com o uso de crédito projetado com base no uso real de crédito no mês. A linha Spending limit indica o limite de gastos no qual uma notificação de orçamento é acionada.
Selecione (meses a serem exibidos) para filtrar a exibição por Current Month ou períodos mais longos.
Você pode comparar Spend (uso atual de crédito) com Interval (tempo restante do mês atual) para ver se seus gastos estão ultrapassando seu orçamento mensal.
Você pode filtrar a exibição selecionando Budgets ou Resources:
Você pode selecionar um orçamento personalizado na exibição Budgets para obter detalhes sobre um orçamento específico.
Nota
A lista Service Type para um orçamento personalizado inclui um tipo Unused Resources. Este tipo de serviço é exibido quando um objeto em um orçamento não tem dados de uso de crédito para exibir. Isso pode acontecer se o objeto não tiver uso de crédito para custos de computação ou se você adicionou recentemente um objeto a um orçamento e a tarefa em segundo plano sem servidor ainda não foi executada.
Na exibição Resources, você pode filtrar e classificar por Service Type, objeto Name e Credit Usage.
Monitoramento de orçamentos usando SQL¶
Para monitorar o orçamento da conta, você deve ter os privilégios necessários. Para obter mais informações, consulte Criação de uma função personalizada para monitorar o orçamento da conta.
Use a função account_budget_monitor
para visualizar o histórico de gastos do orçamento da conta:
USE ROLE account_budget_monitor;
CALL snowflake.local.account_root_budget!GET_SPENDING_HISTORY(
TIME_LOWER_BOUND => DATEADD('days', -7, CURRENT_TIMESTAMP()),
TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
Você pode monitorar o histórico de gastos por tipo de serviço. Para visualizar o histórico de gastos do recurso sem servidor de otimização de pesquisa para o orçamento da conta na semana passada, execute as seguintes instruções:
USE ROLE account_budget_monitor;
CALL snowflake.local.account_root_budget!GET_SERVICE_TYPE_USAGE(
SERVICE_TYPE => 'SEARCH_OPTIMIZATION',
TIME_DEPART => 'day',
USER_TIMEZONE => 'UTC',
TIME_LOWER_BOUND => DATEADD('day', -7, CURRENT_TIMESTAMP()),
TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
Para monitorar um orçamento personalizado, você deve ter os privilégios necessários. Para obter mais informações, consulte Criação de uma função personalizada para monitorar um orçamento personalizado.
Use a função budget_monitor
para visualizar o histórico de gastos de um orçamento personalizado. Por exemplo, para visualizar o histórico de gastos do orçamento personalizado na_finance_budget
no esquema budgets_db.budgets_schema
, execute as seguintes instruções:
USE ROLE budget_monitor;
CALL budgets_db.budgets_schema.na_finance_budget!GET_SPENDING_HISTORY(
TIME_LOWER_BOUND => DATEADD('days', -7, CURRENT_TIMESTAMP()),
TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
Você pode monitorar o histórico de gastos por tipo de serviço. Por exemplo, para visualizar o histórico de gastos das exibições materializadas inclusas no orçamento, execute as seguintes instruções:
USE ROLE budget_monitor;
CALL budgets_db.budgets_schema.na_finance_budget!GET_SERVICE_TYPE_USAGE(
SERVICE_TYPE => 'MATERIALIZED_VIEW',
TIME_DEPART => 'day',
USER_TIMEZONE => 'UTC',
TIME_LOWER_BOUND => DATEADD('day', -7, CURRENT_TIMESTAMP()),
TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
Para obter mais informações, consulte Métodos do Budget.
Desativação do orçamento da conta¶
Você pode desativar o orçamento da conta usando o Snowsight ou SQL.
Desativar o orçamento da conta redefine o orçamento da conta ao seu estado anterior à ativação:
Todos os dados históricos do orçamento da conta são excluídos.
A tarefa de medição em segundo plano para o orçamento da conta está suspensa.
As configurações do orçamento da conta para limite de gastos e notificações por e-mail são redefinidas.
A desativação do orçamento da conta não afeta os orçamentos personalizados. Para remover um orçamento personalizado da sua conta, use o comando DROP BUDGET.
Nota
Se o orçamento da conta estiver desativado, você não poderá criar novos orçamentos personalizados usando o Snowsight. No entanto, você pode continuar criando orçamentos personalizados usando SQL.
Desativação do orçamento da conta usando Snowsight¶
Você pode desativar o orçamento da conta usando a página Budgets:
Faça login no Snowsight.
Selecione Admin » Cost Management.
Selecione Budgets.
Selecione o menu mais … no canto superior direito.
Selecione Deactivate account budget.
Desative o orçamento da conta usando SQL.¶
Você pode usar o método account_root_budget!DEACTIVATE para desativar o orçamento da conta:
CALL snowflake.local.account_root_budget!DEACTIVATE();