Contrôler l’utilisation du crédit à l’aide de Budgets

Budgets permet de surveiller et de notifier au niveau du compte l’utilisation du crédit Snowflake pour un groupe d’objets Snowflake spécifiques.

Dans ce chapitre :

Vue d’ensemble de Budgets

Un budget définit une limite de dépenses mensuelles pour les coûts de calcul d’un compte Snowflake ou d’un groupe personnalisé d’objets Snowflake. Lorsqu’il est prévu que la limite de dépenses soit dépassée, un courriel de notification quotidien est envoyé aux adresses e-mail désignées pour recevoir les notifications relatives aux budgets.

Note

Budgets requiert le bundle 2023_06. Ce bundle est actuellement activé par défaut dans tous les comptes. Si votre compte se trouve dans une région qui prend en charge Budgets, et que vous avez explicitement désactivé le bundle, les budgets ne seront pas disponibles tant que vous n’aurez pas activé le bundle.

Budget du compte et budgets personnalisés

Pour commencer à utiliser les budgets dans Snowflake, activez le budget du compte. Le budget du compte contrôle les dépenses pour tous les objets pris en charge par dans le compte. Pour recevoir des notifications concernant le budget, définissez la limite de dépenses et indiquez les adresses e-mail qui recevront les notifications.

Vous pouvez également créer des budgets personnalisés pour surveiller les limites de dépenses pour un groupe spécifique d’objets pris en charge. Vous pouvez créer un budget personnalisé dans n’importe quelle base de données et n’importe quel schéma. Comme pour le budget du compte, vous devez définir la limite de dépenses et les adresses e-mail de notification afin de recevoir les courriels de notification.

Limite de dépenses et intervalle de temps

La limite de dépenses est exprimée en crédits Snowflake et n’est utilisée qu’à des fins d’alerte et de notification. La limite de dépenses est fixée pour un intervalle de temps d’un mois civil.

L’intervalle de temps commence à 12:00AM UTC le premier jour du mois et se termine à 11:59PM UTC le dernier jour du mois. Si un budget est créé après le premier jour du mois, le premier intervalle de suivi correspond à la période allant jusqu’au dernier jour du mois en cours, puis il est réinitialisé le premier du mois suivant.

Si vous activez votre budget de compte après le premier du mois, les données du début du mois sont rétablies et utilisées pour déterminer si vous allez dépasser votre limite de dépenses pour le mois.

Si vous créez un budget personnalisé après le premier du mois, les données historiques du mois ne sont pas remplies. Les prévisions de dépenses futures sont basées sur l’utilisation du crédit dans les jours qui suivent l’activation du budget.

Note

Si vous créez un budget personnalisé après le premier du mois, vous risquez de dépasser votre budget pour le premier mois. Dans un mois partiel, l’utilisation du crédit avant la création du budget n’est pas compensée pour les budgets personnalisés et peut entraîner des prévisions incorrectes. Les mois suivants permettront de prévoir correctement l’utilisation du crédit sur la base de l’historique des dépenses.

Objets pris en charge

La liste des objets pris en charge contribue à la limite de dépenses pour le budget du compte. Pour un budget personnalisé, vous pouvez sélectionner des objets spécifiques à surveiller.

Les objets suivants sont pris en charge pour le suivi d’un budget :

  • Tables

  • Vues matérialisées

  • Schémas

  • Bases de données

  • Entrepôts virtuels

  • Canaux

  • Tâches

Fonctionnalités sans serveur prises en charge

La fonction Budgets surveille l’utilisation du crédit par des fonctionnalités sans serveur pour les objets pris en charge contenus dans un budget. Les fonctionnalités sans serveur suivantes sont prises en charge :

Fonctionnalité sans serveur

Objet

AUTO_CLUSTERING

Table

MATERIALIZED_VIEW

Table

PIPE

Canal

QUERY_ACCELERATION

Entrepôt

SEARCH_OPTIMIZATION

Table

SERVERLESS_TASK

Tâche

SNOWPIPE_STREAMING

Canal

WAREHOUSE_METERING

Entrepôt

WAREHOUSE_METERING_READER

Entrepôt

Notifications

Un budget envoie une notification d’alerte quotidienne lorsque les dépenses courantes sont en passe de dépasser la limite de dépenses, sur la base de prévisions chronologiques. Pour recevoir des notifications d’alerte automatiques, vous devez :

  • Fixer une limite de dépenses pour le budget.

  • Mettre en place des notifications par courriel pour le budget.

Voici un exemple d’e-mail de notification :

Example Budgets Email

Rôles et privilèges liés à Budgets

Vous pouvez attribuer des rôles et des privilèges à un rôle personnalisé afin de lui permettre de créer de nouveaux budgets, de modifier un budget existant et de contrôler un budget.

Rôles et privilèges requis pour créer des budgets

Note

Seul un utilisateur ayant le rôle ACCOUNTADMIN peut activer le budget du compte.

Vous pouvez utiliser un rôle personnalisé pour créer des budgets personnalisés dans votre compte. Le rôle personnalisé doit être accordé :

  • Le rôle de base de données SNOWFLAKE SNOWFLAKE.BUDGET_CREATOR.

  • Le privilège CREATE SNOWFLAKE.CORE.BUDGET sur le schéma dans lequel créer le budget.

Par exemple, créez un rôle budget_admin et accordez le rôle et les privilèges requis pour créer des budgets personnalisés dans le schéma budgets_db.budgets_schema :

CREATE ROLE budget_admin;

GRANT DATABASE ROLE SNOWFLAKE.BUDGET_CREATOR TO ROLE budget_admin;

GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO ROLE budget_admin;

GRANT CREATE SNOWFLAKE.CORE.BUDGET ON SCHEMA budgets_db.budgets_schema
  TO ROLE budget_admin;
Copy

Rôles d’application pour gérer le budget du compte

Vous pouvez attribuer les rôles d’application suivants à un rôle personnalisé dans votre compte pour modifier ou contrôler le budget du compte.

Rôle de l’application

Description

BUDGET_VIEWER

Permet à un rôle de consulter les données relatives à l’utilisation du budget.

BUDGET_ADMIN

Permet à un rôle de modifier les propriétés d’un budget, y compris la limite de dépenses, la liste des adresses e-mail qui reçoivent des notifications et le paramètre de notification en sourdine.

Exemples

Note

Seul un utilisateur ayant le rôle ACCOUNTADMIN peut exécuter les exemples suivants.

Accorder au rôle personnalisé budget_admin la possibilité de modifier le budget du compte :

GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_ADMIN TO ROLE budget_admin;
Copy

Accorder au rôle personnalisé budget_monitor la possibilité de consulter les données relatives à l’utilisation du budget :

GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_VIEWER TO ROLE budget_monitor;
Copy

Rôles d’instance pour gérer les budgets personnalisés

Chaque budget personnalisé a des rôles d’instance qui peuvent être accordés à d’autres rôles pour voir ou modifier le budget :

Rôle de l’instance

Description

VIEWER

Permet à un rôle de consulter les données relatives à l’utilisation du budget.

ADMIN

Permet à un rôle de modifier les propriétés d’un budget, y compris la limite de dépenses, la liste des adresses e-mail qui reçoivent des notifications, le réglage des notifications muettes et les objets du groupe.

Note

Actuellement, vous ne pouvez modifier les objets d’un budget personnalisé qu’à l’aide des commandes SQL.

Exemples

Note

Seul le rôle qui a créé l’instance de budget peut exécuter l’exemple suivant.

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

GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.my_budget!ADMIN
  TO ROLE budget_admin;
Copy

Comprendre les coûts pour Budgets

Pour prendre en charge la fonctionnalité Budgets, Snowflake stocke les métadonnées dans la base de données SNOWFLAKE. Ces métadonnées sont stockées dans votre compte même si le budget du compte n’est pas activé. Le stockage de ces métadonnées est facturé sur votre compte.

Lorsque la fonctionnalité Budgets est activée, Snowflake exécute des tâches de fond sans serveur (_MEASUREMENT_TASK et _BACKFILL_TASK) qui collectent les données d’utilisation du crédit pour le budget du compte et les budgets personnalisés de votre compte. Ces tâches sont facturées sur votre compte.

Les données collectées par les tâches en arrière-plan des budgets sont stockées dans la base de données SNOWFLAKE pour le budget du compte. Le stockage des données est facturé sur votre compte.

Découverte des coûts

Vous pouvez afficher les coûts des tâches sans serveur en utilisant Snowsight ou Vue SERVERLESS_TASK_HISTORY d’Account Usage. Pour en savoir plus sur l’affichage des coûts en fonction du type de service, voir Découverte des coûts de calcul.

Vous pouvez afficher les coûts de stockage en utilisant Snowsight ou en interrogeant les vues Account Usage et Utilisation de l’organisation. Pour plus d’informations sur l’affichage des coûts de stockage, consultez Explorer le coût du stockage.

Activer les budgets pour votre compte

Pour activer les budgets pour votre compte, activez le budget du compte.

Activer le budget du compte

Activez le budget du compte, fixez 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 dépasse la limite de dépenses.

Vous pouvez activer le budget du compte en utilisant Snowsight ou SQL.

Note

  • Seuls les administrateurs de compte peuvent activer le budget du compte.

  • Une fois le budget du compte activé, vous ne pouvez pas le désactiver.

Activer et configurer le budget du compte à l’aide de Snowsight

  1. Connectez-vous à Snowsight.

  2. Select 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. L’e-mail de notification mis en place échoue si une adresse e-mail de la liste n’est pas vérifiée.

  8. Sélectionnez Finish Setup.

Lorsque vous ajoutez des adresses e-mail pour les notifications en utilisant Snowsight, Snowflake crée une intégration de notification par e-mail dans un processus d’arrière-plan et effectue les actions suivantes :

  • Crée une nouvelle intégration de notification par courriel nommée default_budget_notification_integration en utilisant les adresses e-mail que vous avez saisies pour recevoir les courriels de notification.

  • Accorde le privilège USAGE sur l’intégration à l’application SNOWFLAKE.

Activer et configurer le budget du compte à l’aide de SQL

  1. Activer le budget du compte en utilisant la méthode budget_racine_compte!ACTIVATE :

    CALL snowflake.local.account_root_budget!ACTIVATE();
    
    Copy
  2. Fixer la limite de dépenses à l’aide de la méthode <nom_budget>!SET_SPENDING_LIMIT :

    CALL snowflake.local.account_root_budget!SET_SPENDING_LIMIT(1000);
    
    Copy
  3. Créez une INTEGRATION de NOTIFICATION avec les adresses e-mail qui recevront les notifications de budget.

    Cette étape est facultative. Si vous disposez d’une INTEGRATION de NOTIFICATION existante, passez à l’étape suivante.

    CREATE NOTIFICATION INTEGRATION budgets_notification_integration
      TYPE=EMAIL
      ENABLED=TRUE
      ALLOWED_RECIPIENTS=('costadmin@example.com','budgetadmin@example.com');
    
    Copy

    Accorder le privilège USAGE à l’intégration de la notification :

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy

    Pour plus d’informations sur la création d’une , voir INTEGRATION de NOTIFICATION, voir Création d’une intégration de notification.

  4. Définir la notification par e-mail pour le budget du compte :

    CALL snowflake.local.account_root_budget!SET_EMAIL_NOTIFICATIONS(
       'budgets_notification_integration',
       'costadmin@example.com, budgetadmin@example.com');
    
    Copy

Créer un budget personnalisé

Vous pouvez créer un budget personnalisé pour surveiller l’utilisation du crédit de certains objets de votre compte.

Créer un budget personnalisé à l’aide de Snowsight

  1. Connectez-vous à Snowsight.

  2. Select Admin » Cost Management

  3. Sélectionnez Budgets.

  4. Dans le coin supérieur droit du tableau de bord, sélectionnez sf-plus-icon-button (Ajouter un budget).

    Note

    Si vous ne voyez pas l’icône Ajouter un budget, vous devez d’abord activer le budget du compte.

  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. L’e-mail de notification mis en place é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.

    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.

Lorsque vous ajoutez des adresses e-mail pour les notifications en utilisant Snowsight, Snowflake crée ou met à jour une intégration de notification par e-mail nommée deault_budget_notification_integration dans un processus d’arrière-plan. Si l’intégration des notifications existe, Snowflake ajoute toutes les nouvelles adresses e-mail que vous avez saisies aux adresses électroniques existantes dans la liste.

Si l’intégration de la notification n’existe pas, Snowflake la crée et accorde le privilège USAGE. Pour plus de détails, voir les étapes décrites dans la section du budget des comptes.

Créer un budget personnalisé à l’aide de SQL

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

Note

  • Le rôle utilisé pour créer le budget doit bénéficier du rôle de base de données SNOWFLAKE BUDGET_CREATOR et du privilège CREATE SNOWFLAKE.CORE.BUDGET. Pour plus d’informations, consultez Rôles et privilèges liés à Budgets.

  • Pour envoyer des notifications, l’application SNOWFLAKE doit se voir accorder le privilège USAGE sur l’intégration de notification :

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy
  1. Examinez les budgets existants dans votre 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 SNOWFLAKE.CORE.BUDGET :

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

    CALL my_budget!SET_SPENDING_LIMIT(500);
    
    Copy
  4. Définissez l’intégration de la notification et les adresses e-mail :

    Note

    Si vous n’avez pas encore créé d’e-mail d’INTEGRATION de NOTIFICATION, consultez les étapes de la section de budget du compte pour en créer un.

    CALL my_budget!SET_EMAIL_NOTIFICATIONS('budgets_notification_integration',
                                           'costadmin@example.com');
    
    Copy
  5. Pour ajouter des objets à votre budget personnalisé, vous devez passer une référence à la méthode ADD_RESOURCE du budget. Par exemple, pour ajouter une table nommée t1 au budget nommé my_budget :

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

    L’instruction SYSTEM$REFERENCE crée une référence à un objet TABLE, t1, avec le privilège APPLYBUDGET accordé à la table. 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 »).

  6. Accordez le rôle d’instance ADMIN à votre rôle personnalisé budget_admin :

    GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.my_budget!ADMIN
      TO ROLE budget_admin;
    
    Copy

Suivi de Budgets à l’aide de Snowsight

Note

Seuls les administrateurs de comptes peuvent contrôler les budgets en utilisant Snowsight.

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

  1. Connectez-vous à Snowsight.

  2. Select 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 projected spending graph

Sélectionnez sf-clock-time-period-icon (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 Budgets icon Budgets ou Resources icon Resources.

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

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

Limites

  • Actuellement, les e-mails de notification de budget ne précisent pas de quel compte provient la notification par e-mail.

  • Les instances de la classe BUDGET ne peuvent pas être répliquées dans les comptes cibles.

  • Un compte peut contenir un maximum de 100 budgets personnalisés.

  • Actuellement, Budgets ne prend pas en charge les coûts de surveillance pour Snowpark Container Services.

Résolution des problèmes liés à la création et à la modification des budgets à l’aide de SQL

Les scénarios suivants peuvent vous aider à résoudre les problèmes qui peuvent survenir lors de la création ou de la modification de budgets à l’aide de SQL.

Vous ne pouvez pas activer le budget du compte

Il y a plusieurs raisons pour lesquelles vous ne pouvez pas activer le budget de votre compte.

Erreur

Unknown user-defined function SNOWFLAKE.LOCAL.ACTIVATE

Cause

Si votre compte Snowflake est nouveau, le budget du compte n’est pas encore disponible dans votre compte.

Solution

Attendez que le budget du compte soit disponible dans votre compte venant d’être créé. Vous pourrez l’activer une fois qu’il sera disponible.

Erreur

FAILURE: Uncaught exception of type 'BUDGET_ALREADY_ACTIVATED' on line X at position X

Cause

Le budget du compte a déjà été activé.

Solution

Vous pouvez appeler la méthode <nom_budget>!GET_CONFIG pour afficher l’horodatage de l’activation :

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

Erreur

-20000 (P0001): Uncaught exception of type 'NO_PERMISSION_TO_ACTIVATE_BUDGET' on line X at position X

Cause

Votre compte ne prend pas encore en charge les budgets.

Solution

La fonction Budgets est disponible en avant-première dans toutes les éditions de Snowflake. Budgets n’est pas disponible dans les comptes d’essai ou les comptes des régions gouvernementales.

Si votre compte se trouve dans une région prise en charge, mais que vous ne parvenez pas à activer le budget de votre compte, contactez le support Snowflake. Dans le cas contraire, la prise en charge de votre région sera disponible dans une version ultérieure.

Vous ne pouvez pas créer de budget personnalisé

Il existe de nombreuses raisons pour lesquelles vous ne pouvez pas créer un budget personnalisé.

Erreur

FAILURE: SQL access control error: Insufficient privileges to operate on class 'BUDGET'

Cause

Le rôle que vous utilisez n’a pas les privilèges requis pour créer des budgets personnalisés.

Solution

Utilisez un rôle avec les privilèges requis. Voir Rôles et privilèges requis pour créer des budgets.

Erreur

FAILURE: Uncaught exception of type 'STATEMENT_ERROR' on line 0 at position -1 :
Uncaught exception of type 'UNSUPPORTED_BUDGET_TYPE' on line X at position X

Cause

Vous passez des arguments à la méthode du constructeur pour créer un budget.

Solution

Consultez CREATE SNOWFLAKE.CORE.BUDGET et modifiez votre instruction de création.

Vous ne pouvez pas activer de budget personnalisé

Erreur

FAILURE: Uncaught exception of type 'STATEMENT_ERROR' on line 0 at position -1 :
Uncaught exception of type 'UNSUPPORTED_BUDGET_TYPE' on line X at position X

Cause

Vous avez essayé d’appeler la méthode ACTIVATE sur un budget personnalisé.

Solution

La méthode ACTIVATE n’est disponible que sur le budget du compte. Une fois que vous avez créé un budget personnalisé, utilisez les méthodes <nom_budget>!SET_SPENDING_LIMIT et <nom_budget>!SET_EMAIL_NOTIFICATIONS pour configurer le budget et commencer à recevoir des e-mails de notification.

Vous ne pouvez pas appeler de méthodes sur le budget du compte

Il y a plusieurs raisons pour lesquelles l’appel d’une méthode sur le budget du compte peut échouer.

Erreur

-20000 (P0001): Uncaught exception of type 'FUNCTION_NOT_SUPPORTED_FOR_ACCOUNT_ROOT_BUDGET' on line 11 at position 18

Cause

Vous avez essayé d’appeler l’une des méthodes suivantes sur le budget du compte :

Solution

Ces méthodes ne sont pas disponibles sur le budget du compte. Le budget du compte contrôle tous les objets pris en charge dans le compte et les objets ne peuvent pas être ajoutés ou supprimés. Pour plus d’informations, consultez Budget du compte et budgets personnalisés.

Erreur

-20000 (P0001): Uncaught exception of type 'ACCOUNT_ROOT_BUDGET_NOT_ACTIVATED' on line X at position X

Cause

Vous avez essayé d’appeler une méthode sur le budget du compte avant que le budget du compte ne soit activé.

Solution

Activez le budget du compte.

La fonction budget n’est pas disponible pour votre compte

Erreurs

FAILURE: SQL compilation error: Class 'SNOWFLAKE.CORE.BUDGET' does not exist or not authorized.
000002 (0A000): Uncaught exception of type 'STATEMENT_ERROR' on line 0 at position -1 : Unsupported feature 'TOK_RESOURCE_GROUP'.

Cause

Votre compte ne prend pas encore en charge les budgets.

Solution

La fonction Budgets est disponible en avant-première dans toutes les éditions Snowflake. Budgets n’est pas disponible pour les comptes d’essai ou les comptes dans les régions gouvernementales.

Si votre compte se trouve dans une région prise en charge, contactez le support Snowflake. Dans le cas contraire, la prise en charge de votre région sera disponible dans une version ultérieure.