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;
Copy

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.

  1. Faça login na Snowsight.

  2. Selecione Admin » Cost Management.

  3. Selecione Budgets.

  4. Se solicitado, selecione um warehouse.

  5. No canto superior direito do painel, selecione Set up Account Budget.

  6. Insira o limite de gastos desejado para a conta.

  7. 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.

  8. 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.

  1. 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();
    
    Copy
  2. Defina o limite de gastos chamando o método <budget_name>!SET_SPENDING_LIMIT:

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_SPENDING_LIMIT(1000);
    
    Copy
  3. 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 Como trabalhar com notificações para um orçamento.

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;
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 na Snowsight.

  2. Selecione Admin » Cost Management.

  3. Selecione Budgets.

  4. No canto superior direito do painel, selecione Ícone de mais (adicionar Budget).

  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 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

  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 Como trabalhar com notificações para um orçamento.

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.

  1. Por exemplo, 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
  2. 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 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

    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:

  1. (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.

    1. 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');
      
      Copy
    2. 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')
      );
      
      Copy
    3. 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;
      
      Copy
  2. 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'
      );
      
      Copy

      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'
      );
      
      Copy
    • 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'
      );
      
      Copy

      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'
      );
      
      Copy
  3. 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();
    
    Copy

    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();
    
    Copy

Configuração da notificação de fila

Para configurar a notificação de fila:

  1. 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>';
    
    Copy

    Nota

    Para notificações de fila e webhook, é possível associar até 10 integrações de notificação a um orçamento.

  2. 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')
    );
    
    Copy
  3. 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;
    
    Copy
  4. 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',
    );
    
    Copy

    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',
    );
    
    Copy
  5. 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();
    
    Copy

    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();
    
    Copy

    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:

  1. 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;
    
    Copy

    Nota

    Para notificações de fila e webhook, é possível associar até 10 integrações de notificação a um orçamento.

  2. 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')
    );
    
    Copy
  3. 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;
    
    Copy
  4. 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;
    
    Copy
  5. 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',
    );
    
    Copy

    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',
    );
    
    Copy
  6. 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();
    
    Copy

    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();
    
    Copy

    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"
}
Copy

O objeto JSON contém os seguintes pares chave-valor:

Chave

Descrição

account_name

Nome de sua conta.

budget_name

Nome de seu orçamento. Para o orçamento de conta, o nome é ACCOUNT_ROOT_BUDGET.

type

O tipo de notificação (por exemplo, BUDGET_LIMIT_WARNING).

limit

O limite de gastos que você definiu para o orçamento.

spending

O valor do uso de crédito para esse mês.

spending_percent

A porcentagem do limite de gastos que já foi gasta (spending / limit).

spending_trend_percent

Percentual esperado do limite de gastos a ser utilizado até o fim do mês (spending_percent / time_percent * 100).

time_percent

Porcentagem do tempo decorrido no mês (por exemplo, 50.00 se o mês estiver na metade).

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'
  )
);
Copy

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',
);
Copy

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

  1. Faça login na Snowsight.

  2. Selecione Admin » Cost Management.

  3. Selecione Budgets.

  4. Selecione o orçamento a ser editado.

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

  6. 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.

  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).

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(
         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”).

      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 argumento object_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.

  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(
         SYSTEM$REFERENCE('DATABASE', 'db1', 'SESSION', 'applybudget'));
      
      Copy

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;
Copy

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;
Copy

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.

  1. Faça login na Snowsight.

  2. Selecione Admin » Cost Management.

  3. 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.

Gráfico de gastos projetados de Budgets

Selecione Ícone de relógio (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 Ícone de Budgets Budgets ou Ícone de recursos 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()
);
Copy

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()
);
Copy

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()
);
Copy

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()
);
Copy

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);
Copy

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:

  1. Faça login na Snowsight.

  2. Selecione Admin » Cost Management.

  3. Selecione Budgets.

  4. Selecione o menu mais no canto superior direito.

  5. 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();
Copy