Tutorial: Introdução aos orçamentos

Introdução

Este tutorial apresenta o monitoramento do uso de crédito ao nível da conta com o Budgets, configurando o orçamento da conta e criando um orçamento personalizado que monitore um grupo de objetos especificados.

Com os orçamentos, você pode monitorar o uso de crédito para os custos de computação de objetos compatíveis, incluindo o uso de crédito para tarefas de manutenção em segundo plano e recursos sem servidor. Budgets permite que você defina um limite de gastos mensais para cada orçamento e envie um e-mail de notificação quando seus gastos atuais estiverem projetados para exceder o limite de gastos mensais.

Você pode concluir este tutorial usando uma planilha no Snowsight ou um cliente CLI como SnowSQL. Algumas partes deste tutorial podem ser concluídas usando o Snowsight.

Ao final deste tutorial, você aprenderá como fazer o seguinte:

  • Crie funções personalizadas para monitorar e gerenciar orçamentos.

  • Conceda os privilégios necessários para adicionar objetos a um orçamento personalizado.

  • Ative e configure um orçamento de conta.

  • Crie um orçamento personalizado e adicione objetos a ele.

Pré-requisitos

Para concluir este tutorial, os seguintes pré-requisitos são necessários:

  • Você deve ser capaz de usar a função ACCOUNTADMIN para criar as funções usadas neste tutorial.

  • Você deve verificar seu endereço de e-mail. Somente endereços de e-mail verificados podem ser adicionados a uma lista de notificação de orçamento.

Criação de uma integração de notificação

Budgets usa uma integração de notificação para enviar e-mails de notificação quando se espera que o uso de crédito atual exceda o limite de gastos mensais. A lista ALLOWED_RECIPIENTS deve incluir os endereços de e-mail verificados dos usuários para receber notificações de orçamentos.

Uma integração de notificação é necessária se você estiver concluindo o tutorial usando SQL. Siga os passos abaixo para criar uma.

Ao usar o Snowsight para definir um orçamento, a integração de notificação é criada automaticamente para você. Se você irá usar o Snowsight para configurar seus orçamentos, você pode pular para a próxima etapa.

  1. Execute a seguinte instrução para criar uma integração de notificação. Use seu endereço de e-mail verificado na lista ALLOWED_RECIPIENTS:

    USE ROLE ACCOUNTADMIN;
    
    CREATE NOTIFICATION INTEGRATION budgets_notification_integration
      TYPE=EMAIL
      ENABLED=TRUE
      ALLOWED_RECIPIENTS=('<YOUR_EMAIL_ADDRESS>');
    
    Copy
  2. Após criar a integração de notificação, conceda o privilégio USAGE para o aplicativo SNOWFLAKE. Esse privilégio é necessário para que o Budgets use a integração de notificações para enviar e-mails.

    Execute a seguinte instrução para conceder o privilégio USAGE na integração de notificação:

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy

Criação de banco de dados, esquema e funções personalizadas.

Nesta etapa, os seguintes objetos são criados para o tutorial de criação, gerenciamento e monitoramento de orçamentos:

  • Um banco de dados e um esquema para criar orçamentos personalizados.

  • Uma função de aplicativo para gerenciar o orçamento da conta.

  • Uma função personalizada para monitorar o orçamento da conta.

  • Uma função personalizada para criar orçamentos personalizados.

  1. Crie um banco de dados e um esquema para criar um orçamento personalizado usando as seguintes etapas:

    1. Crie o banco de dados e o esquema nos quais será criado o orçamento personalizado:

      USE ROLE ACCOUNTADMIN;
      
      CREATE DATABASE budgets_db;
      
      CREATE SCHEMA budgets_db.budgets_schema;
      
      Copy
  2. Crie uma função personalizada account_budget_admin para o administrador do orçamento da conta. O administrador do orçamento da conta pode realizar 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.

    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
  3. Criar uma função personalizada account_budget_monitor a ser concedida aos monitores do orçamento de contas. Um monitor de orçamento de conta pode realizar as seguintes ações no orçamento da conta:

    • Monitorar o uso de crédito da conta.

    • Visualizar as configurações de notificação por e-mail.

    • Visualizar o limite de gastos do 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
  4. Criar uma função personalizada budget_owner com a função e os privilégios necessários para criar orçamentos personalizados no esquema budgets_db.budgets_schema:

    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
  5. Cria duas funções personalizadas para gerenciar e monitorar orçamentos personalizados. Essas funções receberão privilégios adicionais posteriormente no tutorial, após a criação do orçamento personalizado. Para criar funções personalizadas, siga estas etapas:

    1. Crie uma função budget_admin personalizada que possa gerenciar e monitorar um orçamento personalizado:

      USE ROLE ACCOUNTADMIN;
      
      CREATE ROLE budget_admin;
      
      GRANT USAGE ON DATABASE budgets_db TO ROLE budget_admin;
      
      GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO ROLE budget_admin;
      
      GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE budget_admin;
      
      Copy
    1. Crie uma função budget_monitor personalizada que possa monitorar um orçamento personalizado:

    USE ROLE ACCOUNTADMIN;
    
    CREATE ROLE budget_monitor;
    
    GRANT USAGE ON DATABASE budgets_db TO ROLE budget_monitor;
    
    GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO ROLE budget_monitor;
    
    GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE budget_monitor;
    
    Copy
  6. Conceda a si mesmo as funções de orçamento personalizadas para usar em etapas futuras do tutorial:

    1. Conceda a função account_budget_admin a si mesmo:

      GRANT ROLE account_budget_admin
        TO USER <YOUR_USER_NAME>;
      
      Copy
    2. Conceda a função account_budget_monitor a si mesmo:

      GRANT ROLE account_budget_monitor
        TO USER <YOUR_USER_NAME>;
      
      Copy
    3. Conceda a função budget_owner a si mesmo:

      GRANT ROLE budget_owner
        TO USER <YOUR_USER_NAME>;
      
      Copy
    4. Conceda a função budget_monitor a si mesmo:

      GRANT ROLE budget_monitor
        TO USER <YOUR_USER_NAME>;
      
      Copy

Nesta seção, você criou funções personalizadas para gerenciar e monitorar orçamentos, bem como criar orçamentos personalizados.

Criação dos objetos para o orçamento personalizado

Nesta etapa, crie objetos para adicionar a um orçamento personalizado e conceda privilégios às funções personalizadas criadas na etapa anterior. Você criará os seguintes objetos:

  • Um warehouse para adicionar a um orçamento personalizado.

  • Um banco de dados para adicionar a um orçamento personalizado.

  1. Crie um warehouse e conceda os privilégios USAGE e APPLYBUDGET no warehouse para as funções personalizadas criadas. O privilégio APPLYBUDGET é necessário para adicionar um objeto a um orçamento.

    1. Crie um warehouse na_finance_wh:

      CREATE WAREHOUSE na_finance_wh;
      
      Copy
    2. Conceda o privilégio USAGE às funções de orçamento personalizadas:

      GRANT USAGE ON WAREHOUSE na_finance_wh TO ROLE account_budget_admin;
      GRANT USAGE ON WAREHOUSE na_finance_wh TO ROLE account_budget_monitor;
      GRANT USAGE ON WAREHOUSE na_finance_wh TO ROLE budget_admin;
      GRANT USAGE ON WAREHOUSE na_finance_wh TO ROLE budget_owner;
      GRANT USAGE ON WAREHOUSE na_finance_wh TO ROLE budget_monitor;
      
      Copy
    3. Conceda o privilégio APPLYBUDGET no warehouse à função budget_owner:

      GRANT APPLYBUDGET ON WAREHOUSE na_finance_wh TO ROLE budget_owner;
      
      Copy
  2. Crie um banco de dados e conceda o privilégio APPLYBUDGET no warehouse à função de proprietário de orçamento personalizado criada. O privilégio APPLYBUDGET é necessário para adicionar um objeto a um orçamento.

    1. Crie um banco de dados:

      CREATE DATABASE na_finance_db;
      
      Copy
    2. Conceda o privilégio APPLYBUDGET no banco de dados à função budget_owner:

      GRANT APPLYBUDGET ON DATABASE  na_finance_db TO ROLE budget_owner;
      
      Copy

Nesta seção, você criou os objetos a serem adicionados a um orçamento personalizado e concedeu o privilégio APPLYBUDGET necessário para adicionar esses objetos a um orçamento. Você também criou o banco de dados e o esquema para criar o orçamento personalizado e concedeu o privilégio USAGE necessário para criar um orçamento no esquema. Agora você está pronto para ativar, criar e configurar orçamentos.

Ativação e configuração do orçamento da conta

O orçamento da conta monitora o uso de crédito para os custos de computação de todos os objetos compatíveis com o Budgets na conta, incluindo tarefas de manutenção em segundo plano (por exemplo, clustering automático) e recursos sem servidor. O orçamento da conta deve ser ativado antes que seja possível começar a monitorar o uso de crédito. Após a ativação, você pode definir o limite de gastos mensais para a conta e a lista de e-mails dos destinatários das notificações. Budgets envia um e-mail de notificação quando se espera que o uso atual de crédito exceda o limite de gastos mensal.

Ative e configure o orçamento da conta por meio das seguintes etapas:

  1. Use a função account_budget_admin criada em uma etapa anterior para ativar o orçamento da conta:

    USE ROLE account_budget_admin;
    
    CALL snowflake.local.account_root_budget!ACTIVATE();
    
    Copy
  2. Defina o limite de gastos do orçamento da conta para 500 créditos por mês:

    CALL snowflake.local.account_root_budget!SET_SPENDING_LIMIT(500);
    
    Copy
  3. Para configurar a lista de notificações por e-mail, use seu endereço de e-mail verificado e a integração de notificações criada anteriormente no tutorial:

    CALL snowflake.local.account_root_budget!SET_EMAIL_NOTIFICATIONS(
       'budgets_notification_integration',
       '<YOUR_EMAIL_ADDRESS>');
    
    Copy

Nesta seção, você ativou o orçamento da conta e definiu o limite de gastos e o endereço de e-mail para receber notificações de orçamento.

Criação de um orçamento personalizado

Agora que você ativou e configurou o orçamento da sua conta, crie um orçamento personalizado para monitorar o uso de crédito em sua conta para um grupo específico de objetos. Para este tutorial, adicione o warehouse na_finance_wh e na_finance_db ao orçamento personalizado.

Crie orçamentos personalizados seguindo os seguintes passos:

  1. Use a função budget_owner para criar orçamento na_finance_budget em budgets_db.budgets_schema:

    USE ROLE budget_owner;
    USE SCHEMA budgets_db.budgets_schema;
    USE WAREHOUSE na_finance_wh;
    
    CREATE SNOWFLAKE.CORE.BUDGET na_finance_budget();
    
    Copy
  2. Defina o limite de gastos mensais e a lista de notificações por e-mail para o orçamento na_finance_budget usando as seguintes etapas:

    1. Defina o limite de gastos mensais para 500 créditos:

      CALL na_finance_budget!SET_SPENDING_LIMIT(500);
      
      Copy
    2. Para configurar a lista de notificações, use seu endereço de e-mail verificado e a integração de notificação criada na primeira etapa do tutorial:

      CALL na_finance_budget!SET_EMAIL_NOTIFICATIONS('budgets_notification_integration',
                                                     '<YOUR_EMAIL_ADDRESS>');
      
      Copy
    3. Adicione o banco de dados na_finance_db e o warehouse na_finance_wh ao orçamento na_finance_budget:

      CALL na_finance_budget!ADD_RESOURCE(
        SYSTEM$REFERENCE('database', 'na_finance_db', 'SESSION', 'applybudget'));
      
      CALL na_finance_budget!ADD_RESOURCE(
        SYSTEM$REFERENCE('warehouse', 'na_finance_wh', 'SESSION', 'applybudget'));
      
      Copy
  3. Conceda funções de instância às funções personalizadas criadas em uma etapa anterior.

    1. Conceda as funções e privilégios necessários à função budget_admin para permitir que a função budget_admin modifique e monitore o orçamento personalizado na_finance_budget:

      USE ROLE budget_owner;
      
      GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.na_finance_budget!ADMIN
        TO ROLE budget_admin;
      
      Copy
    2. Conceda a função de instância VIEWER para a função budget_monitor para permitir que a função budget_monitor monitore o orçamento personalizado na_finance_budget:

      USE ROLE budget_owner;
      
      GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.na_finance_budget!VIEWER
        TO ROLE budget_monitor;
      
      Copy

Nesta seção, você criou um orçamento personalizado, adicionou objetos para o orçamento monitorar e configurou o endereço de e-mail para receber notificações de orçamento.

Monitoramento do uso de crédito

Você concluiu todas as etapas do tutorial para ativar o orçamento da sua conta, criar um orçamento personalizado e criar funções personalizadas para monitorar e gerenciar os orçamentos da conta e orçamentos personalizados. Os dados de uso de crédito para seus orçamentos levam algum tempo para serem preenchidos.

Budgets usa tarefas sem servidor para coletar dados de uso de crédito para os orçamentos em sua conta. Depois de ativar o orçamento da conta ou criar um orçamento personalizado, leva algum tempo para a tarefa sem servidor ser executada. Depois que os dados de uso de crédito estiverem disponíveis, você poderá monitorar o uso de crédito para orçamentos usando o Snowsight.

Para monitorar o uso de crédito após a disponibilização dos dados de uso, siga estas etapas:

Use a função account_budget_monitor criada em uma etapa anterior e visualize o histórico de gastos do orçamento da conta na semana passada executando as seguintes instruções:

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 de recurso sem servidor de otimização de pesquisa para o orçamento da conta na semana passada, execute a seguinte instrução:

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

Use a função budget_monitor para visualizar o histórico de gastos da semana passada para o orçamento personalizado na_finance_budget:

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

Limpeza, resumo e recursos adicionais

Parabéns! Você concluiu com êxito este tutorial.

Depois que os dados de uso de crédito forem preenchidos para o orçamento da sua conta e orçamento personalizado, consulte Monitoramento de orçamentos usando o Snowsight.

Resumo e pontos principais

Em resumo, você aprendeu como:

  • Crie funções personalizadas para gerenciar e monitorar orçamentos.

    As funções personalizadas permitem que administradores não pertencentes à conta monitorem o uso de crédito para um orçamento e modifiquem as configurações do orçamento. Para obter mais informações, consulte Funções e privilégios do Budgets.

  • Conceda os privilégios necessários para adicionar objetos a um orçamento personalizado.

    O privilégio APPLYBUDGET deve ser concedido a um objeto para adicioná-lo ou removê-lo de um orçamento personalizado. Os objetos são adicionados ou removidos por referência. Para obter mais informações, consulte Como adicionar e remover objetos de um orçamento personalizado.

  • Ative e configure o orçamento da conta.

    O orçamento da conta deve ser ativado e configurado para começar a monitorar o uso de crédito de sua conta. O orçamento da conta monitora os custos de computação, incluindo tarefas de manutenção em segundo plano e recursos sem servidor, e envia uma notificação por e-mail quando se espera que os gastos atuais excedam o limite de gastos mensais.

    Para obter mais informações, consulte Ativação do orçamento da conta.

  • Crie um orçamento personalizado para monitorar um grupo específico de objetos em sua conta.

    Os orçamentos personalizados monitoram o uso de crédito para um grupo de objetos em sua conta. Os orçamentos personalizados monitoram o uso de crédito para custos de computação dos objetos no grupo, incluindo tarefas de manutenção em segundo plano e recursos sem servidor.

    Para obter mais informações, consulte Criação de um orçamento personalizado.

Para obter mais informações, consulte os seguintes tópicos:

Exclusão de objetos criados no tutorial

Você pode optar por manter as funções personalizadas e o orçamento personalizado criado no tutorial para monitorar o uso de crédito. Caso contrário, descarte o orçamento e as funções personalizadas relacionadas:

Para excluir o orçamento personalizado criado no tutorial, execute as seguintes instruções:

USE ROLE budget_owner;

DROP SNOWFLAKE.CORE.BUDGET budgets_db.budgets_schema.na_finance_budget;
Copy

Para excluir os objetos criados neste tutorial, execute as seguintes instruções:

USE ROLE ACCOUNTADMIN;

DROP DATABASE na_finance_db;
DROP WAREHOUSE na_finance_wh;
DROP DATABASE budgets_db;
Copy

Para excluir as funções personalizadas criadas para gerenciar e monitorar o orçamento personalizado, execute as seguintes instruções:

USE ROLE ACCOUNTADMIN;

DROP ROLE budget_monitor;
DROP ROLE budget_admin;
DROP ROLE budget_owner;
Copy

Snowflake recomenda deixar o orçamento da conta ativado. No entanto, se você decidir desativá-lo, consulte Desativação do orçamento da conta para mais informações e instruções.

Para excluir as funções de monitor e administrador de orçamento da conta, execute as seguintes instruções:

USE ROLE ACCOUNTADMIN;

DROP ROLE account_budget_monitor;
DROP ROLE account_budget_admin;
Copy

Para excluir a integração de notificação, execute as seguintes instruções:

USE ROLE ACCOUNTADMIN;

DROP NOTIFICATION INTEGRATION budgets_notification_integration;
Copy

Recursos adicionais

Continue aprendendo sobre orçamentos e o Snowflake com os seguintes recursos: