Ativação do orçamento da conta ou criação de 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.
É possível configurar um orçamento para notificá-lo por e-mail, por uma fila do provedor de nuvem ou por um webhook quando se espera que o uso de crédito exceda o limite de gastos.
Nota
As notificações por e-mail são processadas por meio das implementações do Amazon Web Services (AWS) do Snowflake, usando o AWS Simple Email Service (SES). O conteúdo de uma mensagem de e-mail enviada usando AWS pode ser retido pela Snowflake por até trinta dias para gerenciar a entrega da mensagem. Após esse período, o conteúdo da mensagem é excluído.
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.
É possível ativar o orçamento da conta usando Snowsight ou executando instruções SQL.
As próximas seções explicam como ativar o orçamento da conta:
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 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.
O exemplo a seguir cria uma função chamada account_budget_admin
e concede à 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;
Use Snowsight para ativar o orçamento da conta¶
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 na 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.
Como usar os comandos SQL para ativar o orçamento da conta¶
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 chamando o método account_root_budget!ACTIVATE no objeto SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET:
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ACTIVATE();
Defina o limite de gastos chamando o método <budget_name>!SET_SPENDING_LIMIT:
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_SPENDING_LIMIT(1000);
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.
Criação de um orçamento personalizado¶
É possível criar um orçamento personalizado usando o Snowsight ou executando instruções SQL.
As próximas seções explicam como criar um orçamento personalizado:
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 na 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.
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.
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 trabalhar com notificações para um orçamento¶
Para receber notificações quando se espera que seu uso de crédito exceda os limites de gastos, é necessário configurar o orçamento para que as notificações possam ser enviadas para o destino de sua escolha. É possível receber notificações por meio do seguinte:
E-mail.
Mensagens enviadas para uma fila fornecida por um serviço de nuvem (Amazon SNS, Azure Event Grid ou Google Cloud PubSub).
Chamadas para um webhook do Slack, Microsoft Teams ou PagerDuty.
As próximas seções explicam como configurar as notificações e interpretar as mensagens de notificação:
Configuração da notificação por e-mail¶
Para configurar a notificação por e-mail:
(Opcional) Se quiser usar sua própria integração de notificação, crie uma ou escolha uma existente. Uma integração de notificação permite que o Snowflake envie notificações para um sistema de terceiros.
Crie uma integração de notificação com TYPE = EMAIL e ALLOWED_RECIPIENTS definidos como a lista de endereços de e-mail verificados dos destinatários. Para obter informações, consulte Criar uma integração de notificação por e-mail e Restringir a lista de endereços de e-mail que podem 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.
Por exemplo:
CREATE NOTIFICATION INTEGRATION budgets_notification_integration TYPE = EMAIL ENABLED = TRUE ALLOWED_RECIPIENTS = ('costadmin@example.com','budgetadmin@example.com');
Verifique se a integração de notificação funciona conforme o esperado chamando o procedimento armazenado SYSTEM$SEND_SNOWFLAKE_NOTIFICATION para enviar uma mensagem de teste.
Por exemplo, é possível enviar uma mensagem de teste no formato JSON:
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION( SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{"name": "value"}'), SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration') );
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 a notificação. Por exemplo:
GRANT USAGE ON INTEGRATION budgets_notification_integration TO APPLICATION snowflake;
Especifique os endereços de e-mail que devem receber a notificação. Se você criou ou selecionou uma integração de notificação a ser usada, associe a integração de notificação ao orçamento.
Para fazer isso, chame o método <budget_name>!SET_EMAIL_NOTIFICATIONS e especifique o seguinte:
Se você não tiver uma integração de notificação que deseja usar, passe uma lista delimitada por vírgulas de endereços de e-mail verificados. Por exemplo, se você estiver configurando notificações para o orçamento da conta:
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_EMAIL_NOTIFICATIONS( 'costadmin@example.com, budgetadmin@example.com' );
Se você estiver configurando notificações para um orçamento personalizado, chame o método no objeto do orçamento personalizado. Por exemplo, se você criou um orçamento personalizado chamado
my_budget
:CALL my_budget!SET_EMAIL_NOTIFICATIONS( 'costadmin@example.com, budgetadmin@example.com' );
Se você tiver uma integração de notificação que deseja usar, passe o nome dessa integração e uma lista delimitada por vírgulas de endereços de e-mail verificados. Por exemplo, se você estiver configurando notificações para o orçamento da conta:
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_EMAIL_NOTIFICATIONS( 'budgets_notification_integration', 'costadmin@example.com, budgetadmin@example.com' );
Se você estiver configurando notificações para um orçamento personalizado, chame o método no objeto do orçamento personalizado. Por exemplo, se você criou um orçamento personalizado chamado
my_budget
:CALL my_budget!SET_EMAIL_NOTIFICATIONS( 'budgets_notification_integration', 'costadmin@example.com, budgetadmin@example.com' );
Se você associou uma integração de notificação ao orçamento, poderá verificar se o orçamento está associado à sua integração de notificação chamando o método <budget_name>!GET_NOTIFICATION_INTEGRATION_NAME. Esse método retorna o nome da integração de notificação por e-mail associada ao orçamento.
Por exemplo, se você estiver configurando notificações para o orçamento da conta:
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATION_NAME();
Se você estiver configurando notificações para um orçamento personalizado, chame o método no objeto do orçamento personalizado. Por exemplo, se você criou um orçamento personalizado chamado
my_budget
:CALL my_budget!GET_NOTIFICATION_INTEGRATION_NAME();
Configuração da notificação de fila¶
Para configurar a notificação de fila:
Crie uma integração de notificação ou escolha uma integração de notificação existente que deseje usar. Uma integração de notificação permite que o Snowflake envie notificações para um sistema de terceiros.
Crie uma integração de notificação com TYPE=QUEUE, DIRECTION=OUTBOUND e as propriedades adicionais necessárias para o provedor de nuvem. Para obter mais informações, consulte:
Nota
Sua conta deve estar na mesma plataforma de nuvem que a fila do provedor de nuvem.
Por exemplo:
CREATE OR REPLACE NOTIFICATION INTEGRATION budgets_notification_integration ENABLED = TRUE TYPE = QUEUE DIRECTION = OUTBOUND NOTIFICATION_PROVIDER = AWS_SNS AWS_SNS_TOPIC_ARN = '<ARN_for_my_SNS_topic>' AWS_SNS_ROLE_ARN = '<ARN_for_my_IAM_role>';
Nota
Para notificações de fila e webhook, é possível associar até 10 integrações de notificação a um orçamento.
Verifique se a integração de notificação funciona conforme o esperado chamando o procedimento armazenado SYSTEM$SEND_SNOWFLAKE_NOTIFICATION para enviar uma mensagem de teste.
Por exemplo, é possível enviar uma mensagem de teste no formato JSON:
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION( SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{"name": "value"}'), SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration') );
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 a notificação. Por exemplo:
GRANT USAGE ON INTEGRATION budgets_notification_integration TO APPLICATION snowflake;
Associe a integração da notificação ao orçamento. Chame o método <budget_name>!ADD_NOTIFICATION_INTEGRATION, passando o nome da integração.
Por exemplo, se você estiver configurando notificações para o orçamento da conta:
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ADD_NOTIFICATION_INTEGRATION( 'budgets_notification_integration', );
Se você estiver configurando notificações para um orçamento personalizado, chame o método no objeto do orçamento personalizado. Por exemplo, se você criou um orçamento personalizado chamado
my_budget
:CALL my_budget!ADD_NOTIFICATION_INTEGRATION( 'budgets_notification_integration', );
Verifique se a integração de notificação está associada ao orçamento.
Chame o método <budget_name>!GET_NOTIFICATION_INTEGRATIONS para imprimir a lista de integrações de notificação associadas ao orçamento.
Por exemplo, se você estiver configurando notificações para o orçamento da conta:
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATIONS();
Se você estiver configurando notificações para um orçamento personalizado, chame o método no objeto do orçamento personalizado. Por exemplo, se você criou um orçamento personalizado chamado
my_budget
:CALL my_budget!GET_NOTIFICATION_INTEGRATIONS();
O método imprime uma tabela que lista os nomes das integrações, os horários em que foram usadas pela última vez para enviar notificações e as datas em que foram adicionadas.
+----------------------------------+------------------------+------------+ | INTEGRATION_NAME | LAST_NOTIFICATION_TIME | ADDED_DATE | +----------------------------------+------------------------+------------+ | budgets_notification_integration | -1 | 2024-09-23 | +----------------------------------+------------------------+------------+
Configuração da notificação por webhook¶
Para configurar a notificação por webhook:
Crie uma integração de notificação ou escolha uma integração de notificação existente que deseje usar. Uma integração de notificação permite que o Snowflake envie notificações para um sistema de terceiros.
Crie uma integração de notificação com TYPE=WEBHOOK e as propriedades adicionais necessárias para o webhook. Para obter mais informações, consulte Envio de notificações de webhook.
A mensagem de notificação está no formato JSON, portanto, você deve configurar a integração de notificação para lidar com isso. Por exemplo, as instruções a seguir criam um segredo e uma integração de notificação para um webhook do Slack:
CREATE OR REPLACE SECRET my_database.my_schema.slack_secret TYPE = GENERIC_STRING SECRET_STRING = '... secret in my Slack webhook URL ...'; CREATE OR REPLACE NOTIFICATION INTEGRATION budgets_notification_integration ENABLED = TRUE TYPE = WEBHOOK WEBHOOK_URL = 'https://hooks.slack.com/services/SNOWFLAKE_WEBHOOK_SECRET' WEBHOOK_BODY_TEMPLATE='{"text": "SNOWFLAKE_WEBHOOK_MESSAGE"}' WEBHOOK_HEADERS=('Content-Type'='application/json') WEBHOOK_SECRET = slack_secret;
Nota
Para notificações de fila e webhook, é possível associar até 10 integrações de notificação a um orçamento.
Verifique se a integração de notificação funciona conforme o esperado chamando o procedimento armazenado SYSTEM$SEND_SNOWFLAKE_NOTIFICATION para enviar uma mensagem de teste.
Por exemplo, é possível enviar uma mensagem de teste no formato JSON. Certifique-se de escapar as aspas duplas na cadeia de caracteres JSON e as barras invertidas:
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION( SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{\\\"name\\\": \\\"value\\\"}'), SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration') );
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 a notificação. Por exemplo:
GRANT USAGE ON INTEGRATION budgets_notification_integration TO APPLICATION snowflake;
Se estiver usando uma integração de notificação por webhook que dependa de um segredo, conceda os seguintes privilégios ao aplicativo SNOWFLAKE.
O privilégio READ sobre esse segredo.
O privilégio USAGE no esquema que contém esse segredo.
O privilégio USAGE no banco de dados que contém esse esquema.
Por exemplo:
GRANT READ ON SECRET slack_secret TO APPLICATION snowflake; GRANT USAGE ON SCHEMA my_schema TO APPLICATION snowflake; GRANT USAGE ON DATABASE my_database TO APPLICATION snowflake;
Associe a integração da notificação ao orçamento.
Chame o método <budget_name>!ADD_NOTIFICATION_INTEGRATION e passe o nome da integração.
Por exemplo, se você estiver configurando notificações para o orçamento da conta:
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ADD_NOTIFICATION_INTEGRATION( 'budgets_notification_integration', );
Se você estiver configurando notificações para um orçamento personalizado, chame o método no objeto do orçamento personalizado. Por exemplo, se você criou um orçamento personalizado chamado
my_budget
:CALL my_budget!ADD_NOTIFICATION_INTEGRATION( 'budgets_notification_integration', );
Verifique se a integração de notificação está associada ao orçamento.
Chame o método <budget_name>!GET_NOTIFICATION_INTEGRATIONS, que imprime a lista de integrações de notificação associadas ao orçamento.
Por exemplo, se você estiver configurando notificações para o orçamento da conta:
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATIONS();
Se você estiver configurando notificações para um orçamento personalizado, chame o método no objeto do orçamento personalizado. Por exemplo, se você criou um orçamento personalizado chamado
my_budget
:CALL my_budget!GET_NOTIFICATION_INTEGRATIONS();
O método imprime uma tabela que lista os nomes das integrações, os horários em que foram usadas pela última vez para enviar notificações e as datas em que foram adicionadas.
+----------------------------------+------------------------+------------+ | INTEGRATION_NAME | LAST_NOTIFICATION_TIME | ADDED_DATE | +----------------------------------+------------------------+------------+ | budgets_notification_integration | -1 | 2024-09-23 | +----------------------------------+------------------------+------------+
Interpretação da mensagem de notificação JSON¶
Ao configurar um orçamento para enviar uma notificação a uma fila de provedor de nuvem ou a um webhook, a mensagem de notificação contém um objeto JSON semelhante ao seguinte:
{
"account_name": "MY_ACCOUNT",
"budget_name": "MY_BUDGET_NAME",
"type": "BUDGET_LIMIT_WARNING",
"limit": "100",
"spending": "67.42",
"spending_percent": "67.42",
"spending_trend_percent": "130.63",
"time_percent":"51.61"
}
O objeto JSON contém os seguintes pares chave-valor:
Chave |
Descrição |
---|---|
|
Nome de sua conta. |
|
Nome de seu orçamento. Para o orçamento de conta, o nome é |
|
O tipo de notificação (por exemplo, |
|
O limite de gastos que você definiu para o orçamento. |
|
O valor do uso de crédito para esse mês. |
|
A porcentagem do limite de gastos que já foi gasta ( |
|
Percentual esperado do limite de gastos a ser utilizado até o fim do mês ( |
|
Porcentagem do tempo decorrido no mês (por exemplo, |
Verificar o histórico de notificações sobre um orçamento¶
Para visualizar o histórico de notificações sobre um orçamento, chame a função NOTIFICATION_HISTORY e filtre pelo nome da integração. Por exemplo:
SELECT * FROM TABLE(
INFORMATION_SCHEMA.NOTIFICATION_HISTORY(
INTEGRATION_NAME=>'budgets_notification_integration'
)
);
A coluna message_source
contém BUDGET
para linhas que representam notificações de orçamento.
Remoção de uma integração de notificação de um orçamento¶
Para remover uma integração de notificação de um orçamento, chame o método <budget_name>!REMOVE_NOTIFICATION_INTEGRATION, informando o nome da integração. Por exemplo:
CALL my_budget!REMOVE_NOTIFICATION_INTEGRATION(
'budgets_notification_integration',
);
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 usar o Snowsight para adicionar ou remover objetos de um orçamento personalizado¶
Faça login na 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 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).
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
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
.
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.
Como usar o Snowsight para monitorar os orçamentos¶
Você pode visualizar os gastos atuais e históricos do orçamento usando a página Budgets em 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.
Faça login na 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.
Como usar os comandos SQL para monitorar os orçamentos¶
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 das notificações de um orçamento¶
Para desativar as notificações de um orçamento, chame o método SET_NOTIFICATION_MUTE_FLAG e passe TRUE como argumento. Por exemplo:
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_NOTIFICATION_MUTE_FLAG(TRUE);
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.
Use Snowsight para desativar o orçamento da conta¶
Você pode desativar o orçamento da conta usando a página Budgets:
Faça login na Snowsight.
Selecione Admin » Cost Management.
Selecione Budgets.
Selecione o menu mais … no canto superior direito.
Selecione Deactivate account budget.
Use comandos SQL para desativar o orçamento da conta¶
Você pode usar o método account_root_budget!DEACTIVATE para desativar o orçamento da conta:
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!DEACTIVATE();