Activer le budget du compte ou créer des budgets personnalisés

Pour utiliser la fonction Budgets, activez le budget du compte et créez des budgets personnalisés afin de surveiller l’utilisation du crédit pour un groupe d’objets Snowflake spécifiques.

Vous pouvez configurer un budget pour qu’il vous avertisse par e-mail, par une file d’attente d’un fournisseur Cloud ou par un webhook lorsque l’utilisation du crédit devrait dépasser la limite de dépenses.

Note

Les notifications par e-mail sont traitées par les déploiements de Snowflake sur Amazon Web Services (AWS), à l’aide de AWS Simple Email Service (SES). Le contenu d’un e-mail envoyé à l’aide d’AWS peut être conservé par Snowflake pendant un maximum de trente jours afin de gérer la livraison du message. Après cette période, le contenu du message est supprimé.

Activation du budget du compte

Pour commencer à utiliser les budgets afin de surveiller l’utilisation du crédit pour votre compte, activez le budget du compte. Après avoir activé le budget du compte, vous pouvez fixer la limite de dépenses pour le compte et indiquez les adresses e-mail à utiliser pour recevoir des notifications lorsque l’utilisation du crédit devrait dépasser la limite de dépenses. Les notifications commencent lorsque les dépenses prévues dépassent de plus de 10 % la limite de dépenses.

Vous pouvez activer le budget de compte en utilisant l”Snowsight ou en exécutant les instructions SQL.

Les sections suivantes expliquent comment activer le budget des comptes :

Après avoir activé et configuré le budget du compte, vous pouvez permettre à un utilisateur qui n’est pas administrateur de surveiller le budget du compte en utilisant un rôle personnalisé. Pour plus d’informations, voir Créer un rôle personnalisé pour surveiller le budget du compte.

Créer un rôle personnalisé pour gérer le budget du compte

Vous pouvez créer un rôle personnalisé pour activer et modifier le budget du compte. Un utilisateur qui se voit attribuer ce rôle peut agir en tant qu’administrateur du budget et peut effectuer les actions suivantes sur le budget du compte :

  • Activer ou désactiver le budget du compte.

  • Définir une limite de dépense.

  • Modifier les paramètres de notification.

  • Surveiller l’utilisation du crédit pour le compte.

Pour obtenir la liste complète des rôles et privilèges requis pour le rôle d’administrateur du budget, voir Rôles et privilèges Budgets.

L’exemple suivant crée un rôle nommé account_budget_admin et octroie à ce rôle la possibilité de contrôler et de gérer le budget du compte :

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

Utiliser l”Snowsight pour activer le budget du compte

Note

Seul un utilisateur ayant le rôle ACCOUNTADMIN ou un rôle bénéficiant des privilèges d’administrateur de budget de compte peut activer et configurer le budget de compte.

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Admin » Cost Management.

  3. Sélectionnez Budgets.

  4. Si vous y êtes invité, sélectionnez un entrepôt.

  5. Dans le coin supérieur droit du tableau de bord, sélectionnez Set up Account Budget.

  6. Saisissez la limite de dépenses cible pour le compte.

  7. Saisissez les adresses e-mail qui recevront les courriels de notification.

    Note

    Chaque adresse e-mail ajoutée pour les notifications de budget doit être vérifiée. La configuration des e-mails de notification échoue si une adresse e-mail de la liste n’est pas vérifiée.

  8. Sélectionnez Finish Setup.

Utilisez les commandes SQL pour activer le budget du compte

Note

Seul un utilisateur ayant le rôle ACCOUNTADMIN ou un rôle bénéficiant des privilèges d’administrateur de budget de compte peut activer et configurer le budget de compte.

  1. Activez le budget du compte en appelant la méthode budget_racine_compte!ACTIVATE sur l’objet SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET :

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ACTIVATE();
    
    Copy
  2. Définissez la limite des dépenses en utilisant la méthode <nom_budget>!SET_SPENDING_LIMIT :

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_SPENDING_LIMIT(1000);
    
    Copy
  3. Définissez des notifications pour le budget afin de recevoir des notifications lorsque votre utilisation du crédit devrait dépasser vos limites de dépenses.

    Voir Travailler avec les notifications pour un budget.

Création d’un budget personnalisé

Vous pouvez créer un budget personnalisé à l’aide de l”Snowsight ou en exécutant les instructions SQL.

Les sections suivantes expliquent comment créer un budget personnalisé :

Créer un rôle personnalisé pour créer des budgets

Vous pouvez utiliser un rôle personnalisé pour créer des budgets dans votre compte. Pour obtenir la liste complète des privilèges et des rôles qui doivent être accordés à un rôle pour créer un budget personnalisé, voir Rôles et privilèges Budgets.

L’exemple suivant crée un rôle nommé budget_owner et accorde le rôle et les privilèges requis pour créer des budgets personnalisés dans le schéma budgets_db.budgets_schema. L’exemple doit être exécuté en utilisant le rôle 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

Si vous souhaitez permettre à un rôle autre que le propriétaire du budget de modifier les paramètres d’un budget personnalisé, vous pouvez créer un rôle personnalisé avec des privilèges de modification. Pour plus d’informations, voir Créer un rôle personnalisé pour gérer un budget personnalisé.

Utiliser l”Snowsight pour créer un budget personnalisé

Note

Si le budget du compte n’est pas activé ou a été désactivé, vous ne pouvez pas utiliser Snowsight pour créer des budgets personnalisés. En revanche, vous pouvez créer des budgets personnalisés via SQL.

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Admin » Cost Management.

  3. Sélectionnez Budgets.

  4. Dans le coin supérieur droit du tableau de bord, sélectionnez Icône Plus (Ajouter un budget).

  5. Entrez un Budget name.

  6. Sélectionnez la base de données et le schéma dans lesquels vous souhaitez créer votre budget.

  7. Entrez le Spending limit.

  8. Indiquez les adresses e-mail qui reçoivent les notifications.

    Note

    Chaque adresse e-mail ajoutée pour les notifications de budget doit être vérifiée. La configuration des e-mails de notification échoue si une adresse e-mail de la liste n’est pas vérifiée.

  9. Sélectionnez Resources to monitor.

    • Pour ajouter une base de données, développez Databases pour sélectionner une base de données.

    • Pour ajouter des objets dans un schéma, développez le schéma pour obtenir la liste des objets disponibles. Développez la catégorie d’objets (par exemple, Tables ou Tasks) pour sélectionner les objets.

    • Pour ajouter un entrepôt, développez Warehouses et sélectionnez un entrepôt.

    • Pour ajouter un pool de calcul, développez Compute Pools pour sélectionner un pool de calcul.

    Note

    • Lorsque vous sélectionnez une base de données ou un schéma, tous les objets pris en charge (par exemple, les tables) contenus dans la base de données ou le schéma sont également ajoutés au budget.

    • Vous ne pouvez ajouter un objet qu’à un seul budget personnalisé. Si un objet est actuellement inclus dans un budget personnalisé et que vous ajoutez cet objet à un deuxième budget personnalisé, Budgets supprime l’objet du premier budget personnalisé sans émettre d’avertissement.

Après avoir créé et configuré un budget personnalisé, vous pouvez créer un rôle personnalisé pour permettre aux administrateurs ne possédant pas de compte de surveiller les ressources et l’utilisation du budget. Pour plus d’informations, voir Créer un rôle personnalisé pour surveiller un budget personnalisé.

Utiliser les commandes SQL pour créer un budget personnalisé

Créez un budget personnalisé, puis définissez la limite de dépenses et les adresses e-mail de notification.

Note

  1. Examinez les budgets existants dans votre compte :

    Note

    L’instruction suivante renvoie les budgets pour lesquels vous disposez de privilèges d’accès. Seul un utilisateur ayant le rôle ACCOUNTADMIN peut voir tous les budgets du compte.

    SELECT SYSTEM$SHOW_BUDGETS_IN_ACCOUNT();
    
    Copy
  2. Créez le budget my_budget dans budgets_db.budgets_schema en utilisant la commande CREATE BUDGET :

    USE SCHEMA budgets_db.budgets_schema;
    
    CREATE SNOWFLAKE.CORE.BUDGET my_budget();
    
    Copy
  3. Fixez une limite de dépenses mensuelles. Par exemple, fixez la limite de dépenses à 500 crédits par mois :

    CALL my_budget!SET_SPENDING_LIMIT(500);
    
    Copy
  4. Définissez des notifications pour le budget afin de recevoir des notifications lorsque votre utilisation du crédit devrait dépasser vos limites de dépenses.

    Voir Travailler avec les notifications pour un budget.

Après avoir créé et configuré un budget personnalisé, vous pouvez créer un rôle personnalisé pour permettre aux administrateurs ne possédant pas de compte de surveiller les ressources et l’utilisation du budget. Pour plus d’informations, voir Créer un rôle personnalisé pour surveiller un budget personnalisé.

Pour ajouter des objets à votre nouveau budget, consultez Ajout et suppression d’objets dans un budget personnalisé.

Créer un rôle personnalisé pour gérer un budget personnalisé

Pour contrôler et modifier un budget personnalisé, vous pouvez accorder des privilèges et des rôles d’instance à un rôle personnalisé. Pour obtenir la liste complète des privilèges et des rôles qui doivent être accordés à un rôle pour modifier un budget personnalisé, voir Rôles et privilèges Budgets.

Exemples

Accorder au rôle personnalisé budget_admin la possibilité de surveiller et de modifier le budget my_budget dans le schéma budgets_db.budgets_schema :

Note

Seul un rôle disposant du privilège OWNERSHIP sur le budget personnalisé peut exécuter les exemples suivants.

  1. Par exemple, accordez les privilèges requis et le rôle d’instance au rôle personnalisé budget_admin pour le budget my_budget dans le schéma 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. Accordez le privilège APPLYBUDGET sur les objets à ajouter ou à retirer d’un budget personnalisé. Cette étape est nécessaire pour chaque objet à ajouter ou à supprimer.

    Par exemple, pour permettre au rôle budget_admin d’ajouter la base de données db1 au budget personnalisé my_budget, exécutez les instructions suivantes :

    GRANT USAGE ON DATABASE db1 TO ROLE budget_admin;
    
    GRANT APPLYBUDGET ON DATABASE db1 TO ROLE budget_admin;
    
    Copy

    Pour modifier les objets d’un budget personnalisé, voir Ajout et suppression d’objets dans un budget personnalisé.

Travailler avec les notifications pour un budget

Pour recevoir des notifications lorsque votre utilisation du crédit est susceptible de dépasser vos limites de dépenses, vous devez définir le budget de manière à ce que les notifications puissent être envoyées à la destination de votre choix. Vous pouvez recevoir des notifications par les moyens suivants :

  • E-mail.

  • Messages poussés vers une file d’attente fournie par un service Cloud (Amazon SNS, Azure Event Grid ou Google Cloud PubSub).

  • Appels vers un webhook pour Slack, Microsoft Teams ou PagerDuty.

Les sections suivantes expliquent comment définir des notifications et interpréter les messages de notification :

Définir une notification par e-mail

Pour définir une notification par e-mail :

  1. (Facultatif) Si vous souhaitez utiliser votre propre intégration de notification, créez une intégration de notification ou sélectionnez une intégration de notification existante que vous souhaitez utiliser. Une intégration de notification permet à Snowflake d’envoyer des notifications à un système tiers.

    1. Créez une intégration de notification avec TYPE = EMAIL et ALLOWED_RECIPIENTS définis sur la liste des adresses e-mail vérifiées des destinataires. Pour plus d’informations, voir Créer une intégration des notifications par e-mail et Restreindre la liste des adresses électroniques pouvant recevoir des notifications.

      Note

      Chaque adresse e-mail ajoutée pour les notifications de budget doit être vérifiée. La configuration des notifications par e-mail échoue si une adresse e-mail de la liste n’est pas vérifiée.

      Par exemple :

      CREATE NOTIFICATION INTEGRATION budgets_notification_integration
        TYPE = EMAIL
        ENABLED = TRUE
        ALLOWED_RECIPIENTS = ('costadmin@example.com','budgetadmin@example.com');
      
      Copy
    2. Vérifiez que l’intégration de notification fonctionne comme prévu en appelant la procédure stockée SYSTEM$SEND_SNOWFLAKE_NOTIFICATION pour envoyer un message de test.

      Par exemple, vous pouvez envoyer un message de test au format JSON :

      CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
        SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{"name": "value"}'),
        SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration')
      );
      
      Copy
    3. Accordez le privilège USAGE sur l’intégration des notifications à l’application SNOWFLAKE. Le privilège USAGE permet au budget d’utiliser l’intégration de notification pour envoyer la notification. Par exemple :

      GRANT USAGE ON INTEGRATION budgets_notification_integration
        TO APPLICATION snowflake;
      
      Copy
  2. Indiquez les adresses e-mail qui doivent recevoir la notification. Si vous avez créé ou sélectionné une intégration de notification à utiliser, associez l’intégration de notification au budget.

    Pour ce faire, appelez la méthode <nom_budget>!SET_EMAIL_NOTIFICATIONS et spécifiez ce qui suit :

    • Si vous ne disposez pas d’une intégration de notification que vous souhaitez utiliser, transmettez une liste délimitée par des virgules d’adresses e-mail vérifiées. Par exemple, si vous configurez des notifications pour le budget du compte :

      CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_EMAIL_NOTIFICATIONS(
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy

      Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

      CALL my_budget!SET_EMAIL_NOTIFICATIONS(
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy
    • Si vous souhaitez utiliser une intégration de notification, indiquez le nom de cette intégration et une liste délimitée par des virgules d’adresses e-mail vérifiées. Par exemple, si vous configurez des notifications pour le budget du compte :

      CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_EMAIL_NOTIFICATIONS(
        'budgets_notification_integration',
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy

      Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

      CALL my_budget!SET_EMAIL_NOTIFICATIONS(
        'budgets_notification_integration',
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy
  3. Si vous avez associé une intégration de notification au budget, vous pouvez vérifier que le budget est associé à votre intégration de notification en appelant la méthode <nom_budget>!GET_NOTIFICATION_INTEGRATION_NAME. Cette méthode renvoie le nom de l’intégration de notification par e-mail associée au budget.

    Par exemple, si vous configurez des notifications pour le budget du compte :

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATION_NAME();
    
    Copy

    Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

    CALL my_budget!GET_NOTIFICATION_INTEGRATION_NAME();
    
    Copy

Définir la notification de file d’attente

Pour définir la notification de file d’attente

  1. Créez une intégration de notification ou sélectionnez une intégration de notification existante que vous souhaitez utiliser. Une intégration de notification permet à Snowflake d’envoyer des notifications à un système tiers.

    Créez une intégration de notification avec TYPE=QUEUE, DIRECTION=OUTBOUND, et les propriétés supplémentaires requises pour le fournisseur de Cloud. Pour plus d’informations, voir :

    Note

    Votre compte doit être sur la même plateforme cloud en tant que file d’attente du fournisseur de cloud.

    Par exemple :

    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

    Note

    Pour les notifications de file d’attente et de webhook, vous pouvez associer jusqu’à 10 intégrations de notification à un budget.

  2. Vérifiez que l’intégration de notification fonctionne comme prévu en appelant la procédure stockée SYSTEM$SEND_SNOWFLAKE_NOTIFICATION pour envoyer un message de test.

    Par exemple, vous pouvez envoyer un message de test au format JSON :

    CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
      SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{"name": "value"}'),
      SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration')
    );
    
    Copy
  3. Accordez le privilège USAGE sur l’intégration des notifications à l’application SNOWFLAKE. Le privilège USAGE permet au budget d’utiliser l’intégration de notification pour envoyer la notification. Par exemple :

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy
  4. Associez l’intégration de notification au budget. Appelez la méthode <nom_budget>!ADD_NOTIFICATION_INTEGRATION en indiquant le nom de l’intégration.

    Par exemple, si vous configurez des notifications pour le budget du compte :

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy

    Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

    CALL my_budget!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy
  5. Vérifiez que l’intégration de notification est associée au budget.

    Appelez la méthode <nom_budget>!GET_NOTIFICATION_INTEGRATIONS pour imprimer la liste des intégrations de notification associées au budget.

    Par exemple, si vous configurez des notifications pour le budget du compte :

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

    CALL my_budget!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    Cette méthode permet d’imprimer une table qui liste les noms des intégrations, les dates auxquelles elles ont été utilisées pour envoyer des notifications et les dates auxquelles elles ont été ajoutées.

    +----------------------------------+------------------------+------------+
    |  INTEGRATION_NAME                | LAST_NOTIFICATION_TIME | ADDED_DATE |
    +----------------------------------+------------------------+------------+
    | budgets_notification_integration | -1                     | 2024-09-23 |
    +----------------------------------+------------------------+------------+
    

Définir une notification par webhook

Pour définir une notification par webhook :

  1. Créez une intégration de notification ou sélectionnez une intégration de notification existante que vous souhaitez utiliser. Une intégration de notification permet à Snowflake d’envoyer des notifications à un système tiers.

    Créez une intégration de notification avec TYPE=WEBHOOK et les propriétés supplémentaires requises pour le webhook. Pour plus d’informations, voir Envoi de notifications webhook.

    Le message de notification est au format JSON, vous devez donc configurer l’intégration de notification pour qu’elle le prenne en charge. Par exemple, les instructions suivantes créent un secret et une intégration de notification pour un webhook 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

    Note

    Pour les notifications de file d’attente et de webhook, vous pouvez associer jusqu’à 10 intégrations de notification à un budget.

  2. Vérifiez que l’intégration de notification fonctionne comme prévu en appelant la procédure stockée SYSTEM$SEND_SNOWFLAKE_NOTIFICATION pour envoyer un message de test.

    Par exemple, vous pouvez envoyer un message de test au format JSON. Assurez-vous d’échapper les guillemets doubles de la chaîne JSON et les barres obliques inverses :

    CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
      SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{\\\"name\\\": \\\"value\\\"}'),
      SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration')
    );
    
    Copy
  3. Accordez le privilège USAGE sur l’intégration des notifications à l’application SNOWFLAKE. Le privilège USAGE permet au budget d’utiliser l’intégration de notification pour envoyer la notification. Par exemple :

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy
  4. Si vous utilisez une intégration de notification par webhook qui repose sur un secret, accordez les privilèges suivants à l’application SNOWFLAKE.

    • Le privilège READ relatif à ce secret.

    • Le privilège USAGE relatif au schéma contenant ce secret.

    • Le privilège USAGE relatif à la base de données contenant ce schéma.

    Par exemple :

    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. Associez l’intégration de notification au budget.

    Appelez la méthode <nom_budget>!ADD_NOTIFICATION_INTEGRATION et indiquez le nom de l’intégration.

    Par exemple, si vous configurez des notifications pour le budget du compte :

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy

    Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

    CALL my_budget!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy
  6. Vérifiez que l’intégration de notification est associée au budget.

    Appelez la méthode <nom_budget>!GET_NOTIFICATION_INTEGRATIONS, qui imprime la liste des intégrations de notification associées au budget.

    Par exemple, si vous configurez des notifications pour le budget du compte :

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

    CALL my_budget!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    Cette méthode permet d’imprimer une table qui liste les noms des intégrations, les dates auxquelles elles ont été utilisées pour envoyer des notifications et les dates auxquelles elles ont été ajoutées.

    +----------------------------------+------------------------+------------+
    |  INTEGRATION_NAME                | LAST_NOTIFICATION_TIME | ADDED_DATE |
    +----------------------------------+------------------------+------------+
    | budgets_notification_integration | -1                     | 2024-09-23 |
    +----------------------------------+------------------------+------------+
    

Interpréter le message de notification JSON

Lorsque vous configurez un budget pour envoyer une notification à une file d’attente d’un fournisseur de Cloud ou à un webhook, le message de notification contient un objet JSON similaire à ce qui suit :

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

L’objet JSON contient les paires clés-valeurs suivantes :

Clé

Description

account_name

Nom de votre compte.

budget_name

Nom de votre budget. Pour le budget du compte, le nom est ACCOUNT_ROOT_BUDGET.

type

Le type de la notification (par exemple, BUDGET_LIMIT_WARNING).

limit

La limite de dépenses que vous avez définie pour le budget.

spending

Le montant de l’utilisation du crédit pour ce mois.

spending_percent

Le pourcentage de la limite de dépenses qui a déjà été dépensé (spending / limit).

spending_trend_percent

Pourcentage prévu de la limite de dépenses à dépenser avant la fin du mois (spending_percent / time_percent * 100).

time_percent

Pourcentage du temps écoulé pour le mois (par exemple, 50.00 si le mois est à moitié écoulé).

Consulter l’historique des notifications relatives à un budget

Pour voir l’historique des notifications concernant un budget, appelez la fonction NOTIFICATION_HISTORY et filtrez par nom d’intégration. Par exemple :

SELECT * FROM TABLE(
  INFORMATION_SCHEMA.NOTIFICATION_HISTORY(
    INTEGRATION_NAME=>'budgets_notification_integration'
  )
);
Copy

La colonne message_source contient BUDGET pour les lignes représentant les notifications de budget.

Supprimer l’intégration d’une notification dans un budget

Pour supprimer une intégration de notification d’un budget, appelez la méthode <nom_budget>!REMOVE_NOTIFICATION_INTEGRATION en indiquant le nom de l’intégration. Par exemple :

CALL my_budget!REMOVE_NOTIFICATION_INTEGRATION(
  'budgets_notification_integration',
);
Copy

Ajout et suppression d’objets dans un budget personnalisé

Vous pouvez ajouter ou supprimer des objets d’un budget personnalisé en utilisant Snowsight ou SQL.

Note

Pour ajouter ou supprimer des objets d’un budget personnalisé, vous devez utiliser un rôle disposant des privilèges requis sur le budget et l’objet. Pour plus d’informations, voir Créer un rôle personnalisé pour gérer un budget personnalisé.

Utiliser l”Snowsight pour ajouter ou supprimer des objets d’un budget personnalisé

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Admin » Cost Management.

  3. Sélectionnez Budgets.

  4. Sélectionnez le budget à modifier.

  5. Dans le coin supérieur droit du tableau de bord, sélectionnez Icône en forme de crayon (icône de modification).

  6. Sélectionnez + Resources.

    • Pour ajouter ou supprimer une base de données, développez Databases pour sélectionner ou désélectionner une base de données.

    • Pour ajouter ou supprimer des objets dans un schéma, développez le schéma pour obtenir la liste des objets disponibles. Développez la catégorie d’objets (par exemple, Tables ou Tasks) pour sélectionner ou désélectionner des objets.

    • Pour ajouter ou supprimer un entrepôt, développez Warehouses pour sélectionner ou désélectionner un entrepôt.

    • Pour ajouter ou supprimer un pool de calcul, développez Compute Pools pour sélectionner ou désélectionner un pool de calcul.

    Note

    • Lorsque vous sélectionnez une base de données ou un schéma, tous les objets pris en charge (par exemple, les tables) contenus dans la base de données ou le schéma sont également ajoutés au budget.

    • Vous ne pouvez ajouter un objet qu’à un seul budget personnalisé. Si un objet est actuellement inclus dans un budget personnalisé et que vous ajoutez cet objet à un deuxième budget personnalisé, Budgets supprime l’objet du premier budget personnalisé sans émettre d’avertissement.

  7. Sélectionnez Done.

Utiliser les commandes SQL pour ajouter ou supprimer des objets d’un budget personnalisé

Le rôle utilisé pour ajouter ou supprimer un objet d’un budget doit avoir le privilège APPLYBUDGET sur l’objet. Pour plus d’informations, voir les exemples à la section Créer un rôle personnalisé pour gérer un budget personnalisé.

Pour consulter la liste des objets déjà présents dans le budget personnalisé, appelez la méthode <nom_budget>!GET_LINKED_RESOURCES du budget. Par exemple, pour afficher la liste des objets du budget my_budget dans le schéma budgets_db.budgets_schema , exécutez l’instruction suivante :

CALL budgets_db.budgets_schema.my_budget!GET_LINKED_RESOURCES();
Copy

L’instruction renvoie la sortie suivante :

+-------------+-----------------+-----------+-------------+---------------+
| RESOURCE_ID | NAME            | DOMAIN    | SCHEMA_NAME | DATABASE_NAME |
|-------------+-----------------+-----------+-------------+---------------|
|         326 | DB1             | DATABASE  | NULL        | NULL          |
|         157 | MY_WH           | WAREHOUSE | NULL        | NULL          |
+-------------+-----------------+-----------+-------------+---------------+

Note

La liste ne comprend pas les objets qui ont été ajoutés automatiquement (par exemple, les pools de calcul et les entrepôts créés et détenus par une Snowflake Native App).

Les objets doivent être ajoutés ou supprimés d’un budget par référence.

  1. Vous pouvez ajouter la table t1 au budget my_budget en suivant les étapes suivantes :

    1. Accordez le privilège APPLYBUDGET sur la table au rôle budget_admin en exécutant l’instruction suivante :

      GRANT APPLYBUDGET ON TABLE t1 TO ROLE budget_admin;
      
      Copy
    2. Transmettez une référence pour la table t1 à la méthode d’instance ADD_RESOURCE en exécutant l’instruction suivante :

      CALL budgets_db.budgets_schema.my_budget!ADD_RESOURCE(
         SYSTEM$REFERENCE('TABLE', 't1', 'SESSION', 'applybudget'));
      
      Copy

      La fonction SYSTEM$REFERENCE crée une référence à un objet TABLE, t1, avec le privilège APPLYBUDGET accordé à la table. Cela permet au budget de surveiller l’objet spécifié dans votre compte. Le troisième paramètre de la fonction spécifie la portée de la référence ; dans ce cas, « SESSION » crée une référence avec la portée de la session. Les références transmises à la méthode ADD_RESOURCE pour un budget peuvent être créées avec n’importe quelle portée de référence transitoire (c’est-à-dire que le troisième paramètre peut être soit « SESSION », soit « CALL »).

      Pour obtenir la liste complète des objets et des privilèges, voir Types d’objets pris en charge et privilèges pour les références.

      Note

      Si vous souhaitez ajouter une Snowflake Native App à un budget, lorsque vous appelez SYSTEM$REFERENCE, spécifiez 'DATABASE' (et non 'APPLICATION') pour l’argument object_type.

    Note

    Vous ne pouvez ajouter un objet qu’à un seul budget personnalisé. Si un objet est actuellement inclus dans un budget personnalisé et que vous ajoutez cet objet à un deuxième budget personnalisé, Budgets supprime l’objet du premier budget personnalisé sans émettre d’avertissement.

  2. Vous pouvez supprimer la base de données db1 du budget my_budget en procédant comme suit :

    1. Accordez le privilège APPLYBUDGET sur la base de données au rôle budget_admin en exécutant l’instruction suivante :

      GRANT APPLYBUDGET ON DATABASE db1 TO ROLE budget_admin;
      
      Copy
    2. Supprimez la base de données en transmettant une référence à la méthode de l’instance REMOVE_RESOURCE :

      CALL budgets_db.budgets_schema.my_budget!REMOVE_RESOURCE(
         SYSTEM$REFERENCE('DATABASE', 'db1', 'SESSION', 'applybudget'));
      
      Copy

Création d’un rôle personnalisé pour le suivi des budgets

Vous pouvez déléguer la surveillance des budgets en créant un rôle personnalisé qui peut être utilisé par des utilisateurs non administrateurs pour surveiller les budgets.

Créer un rôle personnalisé pour surveiller le budget du compte

Vous pouvez créer un rôle personnalisé pour permettre aux utilisateurs qui ne sont pas administrateurs du compte de surveiller le budget du compte. Pour obtenir la liste complète des privilèges et des rôles qui doivent être accordés à un rôle pour contrôler le budget du compte, voir Rôles et privilèges Budgets.

Exemple

Note

Seul un administrateur de compte peut exécuter les instructions de cet exemple.

Par exemple, créez le rôle account_budget_monitor et donnez-lui la possibilité de voir l’utilisation du crédit pour le budget du compte :

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

Créer un rôle personnalisé pour surveiller un budget personnalisé

Vous pouvez créer un rôle personnalisé pour permettre aux utilisateurs qui ne sont pas administrateurs de comptes de contrôler les budgets personnalisés. Pour obtenir la liste complète des privilèges et des rôles qui doivent être accordés à un rôle pour assurer le suivi d’un budget personnalisé, voir Rôles et privilèges Budgets.

Exemple

Note

Seul un propriétaire de budget (un rôle avec le privilège OWNERSHIP) peut exécuter les instructions dans cet exemple.

Utilisez le rôle de propriétaire du budget pour accorder au rôle personnalisé budget_monitor la possibilité de contrôler le budget my_budget dans le schéma 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

Surveillance des budgets

Vous pouvez surveiller des budgets en utilisant Snowsight ou SQL.

Utiliser l”Snowsight pour contrôler les budgets

Vous pouvez visualiser les dépenses budgétaires actuelles et historiques en utilisant la page Budgets dans Snowsight.

Note

Seul un utilisateur ayant le rôle ACCOUNTADMIN ou un utilisateur auquel ont été accordés les privilèges et le rôle requis peut contrôler les budgets à l’aide de Snowsight.

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Admin » Cost Management.

  3. Sélectionnez Budgets.

Dans la vue Current Month d’un budget, vous pouvez examiner l’utilisation du crédit par jour jusqu’au jour en cours. Vous pouvez voir si vous risquez de dépasser votre budget pour le mois. Le graphique à barres continue jusqu’à la fin du mois avec votre utilisation du crédit projetée basée sur votre utilisation du crédit réelle pour le mois. La ligne Spending limit indique la limite de dépenses à partir de laquelle une notification de budget est déclenchée.

Budgets - graphique des dépenses prévues

Sélectionnez Icône d'horloge (mois à afficher) pour filtrer la vue par Current Month ou des périodes plus longues.

Vous pouvez comparer Spend (utilisation actuelle du crédit) à Interval (temps restant dans le mois en cours) pour voir si vos dépenses dépassent votre budget mensuel.

Vous pouvez filtrer la vue en sélectionnant Icône Budgets Budgets ou Icône Ressources Resources :

  • Vous pouvez sélectionner un budget personnalisé dans la vue Budgets pour obtenir des détails sur un budget spécifique.

    Note

    La liste Service Type pour un budget personnalisé comprend un type Unused Resources. Ce type de service est affiché lorsqu’un objet dans un budget n’a pas de données d’utilisation du crédit à afficher. Cela peut se produire si l’objet n’a pas d’utilisation du crédit pour les coûts de calcul, ou si vous avez récemment ajouté un objet à un budget et que la tâche d’arrière-plan sans serveur n’a pas encore été exécutée.

  • Dans la vue Resources, vous pouvez filtrer et trier par Service Type, objet Name et Credit Usage.

Utiliser les commandes SQL pour contrôler les budgets

Pour surveiller le budget du compte, vous devez disposer des privilèges requis. Pour plus d’informations, voir Créer un rôle personnalisé pour surveiller le budget du compte.

Utilisez le rôle account_budget_monitor pour voir l’historique des dépenses pour le budget du compte :

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

Vous pouvez surveiller l’historique des dépenses par type de service. Pour voir l’historique des dépenses de la fonction sans serveur d’optimisation de la recherche pour le budget du compte au cours de la semaine écoulée, exécutez les instructions suivantes :

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

Pour surveiller un budget personnalisé, vous devez disposer des privilèges requis. Pour plus d’informations, voir Créer un rôle personnalisé pour surveiller un budget personnalisé.

Utilisez le rôle budget_monitor pour voir l’historique des dépenses pour un budget personnalisé. Par exemple, pour voir l’historique des dépenses du budget personnalisé na_finance_budget dans le schéma budgets_db.budgets_schema, exécutez les instructions suivantes :

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

Vous pouvez surveiller l’historique des dépenses par type de service. Par exemple, pour consulter l’historique des dépenses pour les vues matérialisées incluses dans le budget, exécutez les instructions suivantes :

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

Pour plus d’informations, voir Méthodes Budgets.

Désactiver les notifications pour un budget

Pour désactiver les notifications pour un budget, appelez la méthode SET_NOTIFICATION_MUTE_FLAG et passez TRUE comme argument. Par exemple :

CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_NOTIFICATION_MUTE_FLAG(TRUE);
Copy

Désactivation du budget du compte

Vous pouvez désactiver le budget du compte en utilisant Snowsight ou SQL.

La désactivation du budget du compte rétablit le budget du compte dans l’état où il se trouvait avant l’activation :

  • Toutes les données historiques relatives au budget du compte sont supprimées.

  • La tâche de mesure en arrière-plan pour le budget du compte est suspendue.

  • Les paramètres du budget du compte pour la limite de dépenses et les notifications par e-mail sont réinitialisés.

La désactivation du budget du compte n’affecte pas les budgets personnalisés. Pour supprimer un budget personnalisé de votre compte, utilisez la commande DROP BUDGET.

Note

Si le budget du compte est désactivé, vous ne pouvez pas créer de nouveaux budgets personnalisés à l’aide de Snowsight. Toutefois, vous pouvez continuer à créer des budgets personnalisés à l’aide de SQL.

Utiliser l”Snowsight pour désactiver le budget du compte

Vous pouvez désactiver le budget du compte en utilisant la page Budgets :

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Admin » Cost Management.

  3. Sélectionnez Budgets.

  4. Sélectionnez le menu plus en haut à droite.

  5. Sélectionnez Deactivate account budget.

Utiliser les commandes SQL pour désactiver le budget du compte

Vous pouvez utiliser la méthode budget_racine_compte!DEACTIVATE pour désactiver le budget du compte :

CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!DEACTIVATE();
Copy