Surveillance de 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.
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.
Un budget peut surveiller les objets suivants :
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. Un budget peut prendre en charge les fonctionnalités sans serveur suivantes :
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 Budgets¶
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 procéder comme suit :
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 :
Vous pouvez désactiver les notifications par e-mail pour un budget en appelant la méthode SET_NOTIFICATION_MUTE_FLAG.
Rôles et privilèges 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. Accordez le rôle et le privilège de base de données suivants au rôle personnalisé :
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;
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;
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;
Rôles d’instance pour gérer les budgets personnalisés¶
Chaque budget personnalisé a des rôles d’instance que vous pouvez accorder à 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;
Comprendre les coûts de 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 d’arrière-plan 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.
Exploration 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 plus d’informations sur l’affichage des coûts en fonction du type de service, voir Exploration 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, voir Exploration des coûts de stockage.
Activation de Budgets pour votre compte¶
Pour activer Budgets pour votre compte, activez le budget du compte.
Activation du 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 que vous avez activé le budget du compte, vous ne pouvez pas le désactiver.
Activation et configuration du budget du compte à l’aide de Snowsight¶
Connectez-vous à Snowsight.
Select Admin » Cost Management
Sélectionnez Budgets.
Si vous y êtes invité, sélectionnez un entrepôt.
Dans le coin supérieur droit du tableau de bord, sélectionnez Set up Account Budget.
Saisissez la limite de dépenses cible pour le compte.
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.
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.
Activation et configuration du budget du compte à l’aide de SQL¶
Activer le budget du compte en utilisant la méthode budget_racine_compte!ACTIVATE :
CALL snowflake.local.account_root_budget!ACTIVATE();
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);
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');
Accorder le privilège USAGE à l’intégration de la notification :
GRANT USAGE ON INTEGRATION budgets_notification_integration TO APPLICATION snowflake;
Pour plus d’informations sur la création d’une NOTIFICATION INTEGRATION, voir Création d’une intégration de notification.
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');
Création d’un budget personnalisé¶
Vous pouvez créer un budget personnalisé pour surveiller l’utilisation du crédit de certains objets de votre compte.
Création d’un budget personnalisé à l’aide de Snowsight¶
Connectez-vous à Snowsight.
Select Admin » Cost Management
Sélectionnez Budgets.
Dans le coin supérieur droit du tableau de bord, sélectionnez (Ajouter un budget).
Note
Si vous ne voyez pas l’icône Ajouter un budget, vous devez d’abord activer le budget du compte.
Entrez un Budget name.
Sélectionnez la base de données et le schéma dans lesquels vous souhaitez créer votre budget.
Entrez le Spending limit.
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.
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 default_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 d’informations, voir les étapes décrites à la section sur le budget du compte.
Création d’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 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;
Examinez les budgets existants dans votre compte :
SELECT SYSTEM$SHOW_BUDGETS_IN_ACCOUNT();
Créez le budget
my_budget
dansbudgets_db.budgets_schema
en utilisant la commande CREATE SNOWFLAKE.CORE.BUDGET :USE SCHEMA budgets_db.budgets_schema; CREATE SNOWFLAKE.CORE.BUDGET my_budget();
Fixez la limite de dépenses à 500 crédits par mois :
CALL my_budget!SET_SPENDING_LIMIT(500);
Définissez l’intégration de la notification et les adresses e-mail :
Note
Si vous n’avez pas encore créé de NOTIFICATION INTEGRATION par e-mail, voir les étapes à la section sur le budget du compte pour en créer une.
CALL my_budget!SET_EMAIL_NOTIFICATIONS('budgets_notification_integration', 'costadmin@example.com');
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'));
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 »).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;
Surveillance 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.
Connectez-vous à Snowsight.
Select Admin » Cost Management
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.
Sélectionnez (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 ou 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.
Limitations¶
Les limitations suivantes s’appliquent à Budgets :
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.
Actuellement, Budgets ne prend pas en charge les coûts de surveillance pour Tables hybrides.
Résolution des problèmes liés à la création et à la modification de 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 existe plusieurs raisons pour lesquelles il se peut que vous ne puissiez 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();
|
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 la fonction 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 |
La fonction Budgets 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 la fonction Budgets. |
Solution |
La fonction Budgets est disponible en avant-première dans toutes les éditions de 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. |