Budgets personnalisés¶
Les budgets personnalisés vous permettent de surveiller les coûts de calcul pour un groupe d’objets personnalisé. Vous pouvez spécifier les objets que vous souhaitez surveiller de deux façons :
Ajouter une balise au budget. Tous les objets qui ont la paire balise/valeur spécifiée sont contrôlés par le budget.
Ajouter chaque objet au budget individuellement.
Le même budget peut suivre des objets ajoutés individuellement et ajoutés à l’aide de balises. Si un objet est inclus dans le budget pour plusieurs raisons (par exemple, il a été ajouté individuellement et possède la paire balise/valeur spécifiée), son utilisation du crédit ne compte qu’une seule fois par rapport à la limite de dépenses du budget.
Lorsque vous ajoutez un objet à un budget personnalisé, le budget surveille tous les coûts de calcul pour l’objet, y compris les opérations de maintenance en arrière-plan et les fonctions sans serveur. Par exemple, si vous ajoutez une table à un budget personnalisé et que la table a activé le clustering automatique, le budget surveille l’utilisation du crédit pour la maintenance en arrière-plan du clustering automatique.
Objets pris en charge pour les budgets personnalisés¶
Vous pouvez créer un budget personnalisé pour surveiller les types d’objets Snowflake suivants :
Objet |
Coûts surveillés |
---|---|
Alertes |
Les alertes sans serveur sont surveillées par le budget du compte. Pour contrôler l’utilisation du crédit pour une alerte qui s’exécute à l’aide d’un entrepôt géré par l’utilisateur, vous devez ajouter l’entrepôt au budget. Pour de plus amples informations sur les coûts des alertes, voir Compréhension du coût des alertes. |
Apps . (Snowflake Native Apps) |
Le comportement des budgets pour les objets qui sont créés et détenus par une Snowflake Native App dépend de l’ajout direct de l’application ou de l’ajout d’une balise.
|
Pool de calcul |
Utilisation du pool de calcul pour Snowpark Container Services Pour plus d’informations, voir Calculer le coût du pool de calcul. |
Bases de données |
Lorsque vous ajoutez une base de données à un budget, tous les objets pris en charge que la base de données contient sont également automatiquement ajoutés. Le budget surveille l’utilisation du crédit pour les objets et les fonctions sans serveur suivants :
|
Vues matérialisées |
Maintenance en arrière-plan de la vue matérialisée. Pour plus d’informations, voir Coût des vues matérialisées. |
Schémas |
Lorsque vous ajoutez un schéma à un budget, tous les objets pris en charge que le schéma contient sont également ajoutés automatiquement. Le budget surveille l’utilisation du crédit pour les objets de schéma comme décrit ci-dessus. |
Canaux |
Consommation de ressources pour le chargement de données à l’aide de Snowpipe. Pour plus d’informations, voir Coûts Snowpipe. |
Tables |
Opérations de maintenance en arrière-plan pour le clustering automatique et l’optimisation de la recherche si elles sont activées sur la table. |
Tâches |
Les tâches sans serveur sont surveillées par un budget personnalisé. Pour surveiller l’utilisation du crédit pour une tâche qui s’exécute à l’aide d’un entrepôt géré par l’utilisateur, vous devez ajouter l’entrepôt au budget. Pour plus d’informations, voir Coûts des tâches. |
Entrepôts virtuels |
Ressources de calcul pour l’exécution de requêtes, l’interface Web et d’autres fonctions (voir Utilisation du crédit d’entrepôt virtuel), les tâches sans serveur et le calcul des services Cloud. |
Pour plus d’informations, voir Ajouter ou supprimer des balises dans un budget personnalisé.
Création d’un budget personnalisé¶
Les sections suivantes expliquent comment créer un budget personnalisé :
Vous pouvez créer un budget personnalisé en à l’aide de l”Snowsight ou en exécutant les instructions SQL.
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;
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.
Connectez-vous à Snowsight.
Sélectionnez Admin » Cost Management.
Sélectionnez Budgets.
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électionner + Tag & resources, puis ajoutez les balises et les ressources que vous souhaitez ajouter au budget personnalisé.
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.
Si vous ajoutez directement des objets individuels, vous ne pouvez ajouter un objet qu’à un seul budget personnalisé. Dans ce cas, 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. Ce comportement ne s’applique pas à l’utilisation de balises pour ajouter des objets aux budgets ; un objet avec une ou plusieurs balises peut être inclus dans plusieurs budgets personnalisés si vous utilisez des balises pour ajouter l’objet aux budgets.
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
Pour créer un budget personnalisé, vous devez utiliser un rôle doté des privilèges requis pour créer un budget.
Pour modifier un budget personnalisé, vous devez utiliser un rôle doté des privilèges requis pour modifier un budget.
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();
Créez le budget
my_budget
dansbudgets_db.budgets_schema
en utilisant la commande CREATE BUDGET :USE SCHEMA budgets_db.budgets_schema; CREATE SNOWFLAKE.CORE.BUDGET my_budget();
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);
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.
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 Ajouter des objets à un budget personnalisé ou les supprimer.
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.
Exemple de rôle personnalisé¶
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
Vous devez disposer du privilège OWNERSHIP sur le budget personnalisé pour exécuter les exemples suivants.
Accordez les privilèges requis et le rôle d’instance au rôle personnalisé
budget_admin
pour le budgetmy_budget
dans le schémabudgets_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;
Accordez le privilège APPLYBUDGET sur les objets et les balises à ajouter ou à retirer d’un budget personnalisé. Cette étape est nécessaire pour chaque objet ou balise à ajouter ou à supprimer.
Par exemple, pour permettre au rôle
budget_admin
d’ajouter la base de donnéesdb1
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;
Ajouter des objets à un budget personnalisé ou les supprimer¶
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é¶
Connectez-vous à Snowsight.
Sélectionnez Admin » Cost Management.
Sélectionnez Budgets.
Sélectionnez le budget à modifier.
Dans le tableau de bord, sélectionnez.
(icône de modification).
Sélectionnez + Tags & resources, puis sélectionnez les objets que vous souhaitez ajouter au budget personnalisé.
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.
Si vous ajoutez directement des objets individuels, vous ne pouvez ajouter un objet qu’à un seul budget personnalisé. Dans ce cas, 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. Ce comportement ne s’applique pas à l’utilisation de balises pour ajouter des objets aux budgets ; un objet avec une ou plusieurs balises peut être inclus dans plusieurs budgets personnalisés si vous utilisez des balises pour ajouter l’objet aux budgets.
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 <budget_name>!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();
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 :
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).
Objets qui ont été ajoutés lorsqu’une balise a été ajoutée au budget.
Les objets doivent être ajoutés ou supprimés d’un budget par référence.
Vous pouvez ajouter la table
t1
au budgetmy_budget
en suivant les étapes suivantes :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;
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( SELECT SYSTEM$REFERENCE('TABLE', 't1', 'SESSION', 'applybudget'));
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 »).Note
Si vous souhaitez ajouter une Snowflake Native App à un budget, lorsque vous appelez SYSTEM$REFERENCE, spécifiez
'DATABASE'
(et non'APPLICATION'
) pour l’argumentobject_type
.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 ajoutez directement des objets individuels, vous ne pouvez ajouter un objet qu’à un seul budget personnalisé. Dans ce cas, 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. Ce comportement ne s’applique pas à l’utilisation de balises pour ajouter des objets aux budgets ; un objet avec une ou plusieurs balises peut être inclus dans plusieurs budgets personnalisés si vous utilisez des balises pour ajouter l’objet aux budgets.
Vous pouvez supprimer la base de données
db1
du budgetmy_budget
en procédant comme suit :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;
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( SELECT SYSTEM$REFERENCE('DATABASE', 'db1', 'SESSION', 'applybudget'));