Exploration des coûts de calcul¶
Le coût total de calcul consiste en l’utilisation globale des éléments suivants :
Entrepôts virtuels (ressources de calcul gérées par les utilisateurs)
Fonctionnalités sans serveur, telles que le clustering automatique et Snowpipe, qui utilisent des ressources de calcul gérées par Snowflake
Couche de services Cloud de l’architecture Snowflake
Cette rubrique décrit comment obtenir un aperçu des coûts de calcul historiques en utilisant Snowsight, ou en écrivant des requêtes sur des vues dans les schémas ACCOUNT_USAGE et ORGANIZATION_USAGE. Snowsight vous permet d’obtenir rapidement et facilement des informations sur les coûts à partir d’un tableau de bord visuel. Les requêtes sur les vues d’utilisation vous permettent d’approfondir les données sur les coûts et peuvent aider à générer des rapports et des tableaux de bord personnalisés.
Si vous avez besoin de plus d’informations sur la façon dont les coûts de calcul sont encourus, voir Comprendre le coût du calcul.
Note
La couche de services Cloud consomme des crédits, mais tous ces crédits ne sont pas facturés. L’utilisation des services Cloud n’est facturée que si la consommation quotidienne des services Cloud dépasse 10 % de l’utilisation quotidienne des entrepôts virtuels. Snowsight et une majorité de vues montrent le nombre total de crédits consommés par les entrepôts, les fonctionnalités sans serveur et les services Cloud sans tenir compte de cet ajustement quotidien aux services Cloud. Pour déterminer le nombre de crédits réellement facturés pour les coûts de calcul, exécutez des requêtes sur la vue METERING_DAILY_HISTORY.
Affichage de l’utilisation du crédit¶
Toutes les ressources de calcul (entrepôts virtuels, serverless, services Cloud) consomment des crédits Snowflake. Les utilisateurs peuvent avoir recours à Snowsight pour voir le coût global de l’utilisation du calcul pour un jour, une semaine ou un mois donné.
Explorer le coût du calcul :
Connectez-vous à Snowsight.
Passez au rôle ACCOUNTADMIN. Si vous n’êtes pas l’administrateur du compte, passez à un rôle ayant accès aux données relatives aux coût et à l’utilisation.
Accédez à Admin » Cost Management.
Sélectionnez un entrepôt à utiliser pour visualiser les données d’utilisation. Snowflake recommande d’utiliser un entrepôt XS à cette fin.
Sélectionnez Consumption.
Sélectionnez Compute dans la liste déroulante Type d’utilisation.
Note
Si un utilisateur a le rôle ACCOUNTADMIN, mais n’a pas le rôle ORGADMIN, il ne peut visualiser que les coûts du compte actuel. Le filtre Account qui leur permettrait de changer de compte n’apparaît pas.
Filtrage par balise¶
Vous pouvez utiliser des balises pour attribuer le coût d’utilisation des ressources à une unité logique de votre organisation. Une balise est un objet Snowflake auquel peuvent être associées une ou plusieurs valeurs. Un utilisateur disposant des privilèges appropriés applique une paire balise/valeur à chaque ressource utilisée par un centre de coûts ou une autre unité logique (par exemple, l’environnement de développement, une unité commerciale ou un secteur d’activité). Une fois que des balises ont été attribuées à des ressources, vous pouvez isoler les coûts sur la base d’une paire balise/valeur spécifique, ce qui vous permet d’attribuer ce coût à une unité logique spécifique.
Pour filtrer le tableau de bord Consumption afin d’afficher les coûts associés à une combinaison balise/valeur spécifique :
Dans Snowsight, ouvrez le tableau de bord Consumption.
Dans la liste déroulante Tags, sélectionnez la balise.
Sélectionnez la valeur dans la liste des valeurs de la balise.
Sélectionnez Apply.
Par exemple, vous pouvez utiliser la liste déroulante pour sélectionner la balise COST_CENTER
et la valeur SALES
pour afficher l’utilisation associée aux ressources pour lesquelles la balise COST_CENTER = SALES
a été attribuée, tout en excluant toute autre utilisation du tableau de bord.
Vous pouvez également afficher toutes les ressources avec une balise, quelle que soit leur valeur. Utilisez la liste déroulante pour sélectionner une balise, puis choisissez All au lieu d’une valeur spécifique.
Affichage de la consommation par type, service ou ressource¶
Lorsque vous visualisez le graphique à barres qui affiche l’historique des calculs, vous pouvez filtrer les données By Type, By Service ou By Resource.
- Par type:
Sépare la consommation des ressources en calcul (entrepôts virtuels et ressources sans serveur) et en services Cloud. Aux fins de ce filtre, les services Cloud sont séparés des autres types de ressources de calcul.
- Par service:
Sépare la consommation des ressources en consommation de l’entrepôt et en consommation par chaque fonctionnalité sans serveur. Par exemple, WAREHOUSE_METERING représente les crédits consommés par les entrepôts tandis que PIPE représente les crédits consommés par la fonction Snowpipe sans serveur. Le calcul des services Cloud est inclus dans la consommation de l’entrepôt.
- Par ressource:
Sépare la consommation des ressources par l’objet Snowflake qui a consommé les crédits. Par exemple, chaque entrepôt est représenté, ainsi que chaque table qui a encouru des coûts sans serveur.
Interrogation des données pour connaître le coût de calcul¶
Snowflake fournit deux schémas, ORGANIZATION_USAGE et ACCOUNT_USAGE, qui contiennent des données relatives à l’utilisation et au coût. Le schéma ORGANIZATION_USAGE fournit des informations sur les coûts pour tous les comptes de l’organisation, tandis que le schéma ACCOUNT_USAGE fournit des informations similaires pour un seul compte. Les vues dans ces schémas fournissent des données d’utilisation granulaires, prêtes à être analysées, pour créer des rapports ou des tableaux de bord personnalisés.
La plupart des vues des schémas ORGANIZATION_USAGE et ACCOUNT_USAGE contiennent le coût des ressources de calcul en termes de crédits consommés. Pour explorer le coût de calcul en argent, plutôt qu’en crédits, écrivez des requêtes sur les Vue USAGE_IN_CURRENCY_DAILY. Cette vue convertit les crédits consommés en coût en argent en utilisant le prix quotidien d’un crédit.
Les vues suivantes fournissent des informations sur l’utilisation et les coûts liés au coût de calcul.
Vue |
Ressource de calcul |
Description |
Schéma |
---|---|---|---|
AUTOMATIC_CLUSTERING_HISTORY |
Sans serveur |
Crédits consommés par le clustering automatique. |
|
DATABASE_REPLICATION_USAGE_ HISTORY |
Sans serveur |
Crédits consommés pour la réplication de la base de données. |
|
HYBRID_TABLE_USAGE_HISTORY |
Sans serveur |
Crédits consommés pour les ressources de requêtes de tables hybrides. |
|
LISTING_AUTO_FULFILLMENT_ REFRESH_DAILY |
Entrepôts |
Crédits utilisés pour actualiser les données exécutées dans d’autres régions par l’exécution automatique inter-Cloud. |
|
LISTING_AUTO_FULFILLMENT_ USAGE_HISTORY |
Entrepôts |
Estimation de l’utilisation associée à la fourniture de produits de données à d’autres régions par le biais de l’exécution automatique inter-Cloud. Reportez-vous au SERVICE_TYPE de REPLICATION. |
|
MATERIALIZED_VIEW_REFRESH_ HISTORY |
Sans serveur |
Crédits consommés pour le rafraîchissement des vues matérialisées. |
|
METERING_DAILY_HISTORY |
Entrepôts Sans serveur Services Cloud |
Crédits consommés par toutes les ressources de calcul (entrepôts, sans serveur et services Cloud) au cours d’une journée donnée. Peut être utilisé pour déterminer si les coûts de calcul des services Cloud ont été réellement facturés pour un jour spécifique (c’est-à-dire que la consommation de crédit des services Cloud a dépassé 10 % de la consommation de l’entrepôt). |
|
METERING_HISTORY |
Entrepôts Sans serveur Services Cloud |
Crédits consommés par les entrepôts et les services Cloud sur une base horaire. Pour voir combien de crédits un entrepôt individuel consomme, interrogez la vue WAREHOUSE_METERING_HISTORY. |
|
PIPE_USAGE_HISTORY |
Sans serveur |
Crédits consommés par Snowpipe. |
|
QUERY_ACCELERATION_HISTORY |
Sans serveur |
Crédits consommés par le service d’accélération des requêtes. |
|
REPLICATION_USAGE_HISTORY |
Sans serveur |
Crédits consommés et nombre d’octets transférés pendant la réplication de la base de données. Si possible, utilisez la vue DATABASE_REPLICATION_USAGE_HISTORY à la place. |
|
REPLICATION_GROUP_USAGE_ HISTORY |
Sans serveur |
Crédits consommés et nombre d’octets transférés pendant la réplication pour un groupe de réplication spécifique. |
|
SEARCH_OPTIMIZATION_HISTORY |
Sans serveur |
Crédits consommés par le service d’optimisation de la recherche. |
|
SERVERLESS_TASK_HISTORY |
Sans serveur |
Crédits consommés par les tâches. |
|
SNOWPIPE_STREAMING_FILE_ MIGRATION_HISTORY |
Sans serveur |
Crédits consommés par le calcul Snowpipe Streaming (n’inclut pas les coûts client). |
|
USAGE_IN_CURRENCY_DAILY |
Entrepôts Sans serveur Services Cloud |
Consommation quotidienne de crédits par toutes les ressources de calcul, ainsi que le coût de cette utilisation dans la devise de l’organisation. |
|
WAREHOUSE_METERING_HISTORY |
Entrepôts Services Cloud |
Utilisation du crédit horaire de chaque entrepôt, y compris le coût des services Cloud associé à l’utilisation de l’entrepôt. |
Note
Les fonctions de vues et de tables de Schéma d’information de Snowflake fournissent également des données d’utilisation liées au coût. Bien que le schéma ACCOUNT_USAGE soit recommandé, Information Schema peut être plus rapide dans certaines circonstances.
Exemples de requêtes¶
Les requêtes suivantes explorent les données dans les vues ACCOUNT_USAGE pour obtenir un aperçu des coûts de calcul.
Note
Les requêtes exécutées sur les vues du schéma Account Usage peuvent être modifiées pour obtenir un aperçu des coûts de l’ensemble de l’organisation en utilisant la vue correspondante du schéma Organization Usage. Par exemple, les deux schémas comprennent une vue WAREHOUSE_METERING_HISTORY.
Cliquez sur le nom d’une requête ci-dessous pour voir l’exemple SQL complet.
- Calcul pour les entrepôts:
- Calcul pour les services Cloud:
- Calcul du clustering automatique:
- Calcul pour l’optimisation de la recherche:
- Calcul pour les vues matérialisées:
- Calcul pour Query Acceleration Service:
- Calcul pour Snowpipe:
- Coûts de calcul et des clients pour Snowpipe Streaming:
- Calcul pour les tâches:
- Calcul pour la réplication:
- Calcul pour les outils partenaires:
- Calcul pour les tables hybrides:
Calcul pour les entrepôts¶
- Requête : dépenses moyennes de Snowflake heure par heure (dans tous les entrepôts) au cours des X derniers jours
Cette requête montre la consommation totale de crédit sur une base horaire pour aider à comprendre les tendances de consommation (pics, creux) sur les X derniers jours. Cela permet d’identifier les moments de la journée où il y a eu des pics de consommation.
SELECT start_time, warehouse_name, credits_used_compute FROM snowflake.account_usage.warehouse_metering_history WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP()) AND warehouse_id > 0 -- Skip pseudo-VWs such as "CLOUD_SERVICES_ONLY" ORDER BY 1 DESC, 2; -- by hour SELECT DATE_PART('HOUR', start_time) AS start_hour, warehouse_name, AVG(credits_used_compute) AS credits_used_compute_avg FROM snowflake.account_usage.warehouse_metering_history WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP()) AND warehouse_id > 0 -- Skip pseudo-VWs such as "CLOUD_SERVICES_ONLY" GROUP BY 1, 2 ORDER BY 1, 2;
- Requête : consommation de crédit par entrepôt sur une période donnée
Cette requête montre la consommation totale de crédit pour chaque entrepôt sur une période donnée. Cela permet d’identifier les entrepôts qui consomment plus de crédits que les autres et les entrepôts spécifiques qui consomment plus de crédits que prévu.
-- Credits used (all time = past year) SELECT warehouse_name, SUM(credits_used_compute) AS credits_used_compute_sum FROM snowflake.account_usage.warehouse_metering_history GROUP BY 1 ORDER BY 2 DESC; -- Credits used (past N days/weeks/months) SELECT warehouse_name, SUM(credits_used_compute) AS credits_used_compute_sum FROM snowflake.account_usage.warehouse_metering_history WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP()) GROUP BY 1 ORDER BY 2 DESC;
- Requête : utilisation de l’entrepôt sur une moyenne de m jours
Cette requête renvoie la consommation moyenne quotidienne de crédit, groupée par semaine et par entrepôt. Elle peut être utilisée pour identifier les anomalies dans la consommation de crédit pour les entrepôts sur plusieurs semaines de l’année écoulée.
WITH cte_date_wh AS ( SELECT TO_DATE(start_time) AS start_date, warehouse_name, SUM(credits_used) AS credits_used_date_wh FROM snowflake.account_usage.warehouse_metering_history GROUP BY start_date, warehouse_name ) SELECT start_date, warehouse_name, credits_used_date_wh, AVG(credits_used_date_wh) OVER (PARTITION BY warehouse_name ORDER BY start_date ROWS m PRECEDING) AS credits_used_m_day_avg, 100.0*((credits_used_date_wh / credits_used_m_day_avg) - 1) AS pct_over_to_m_day_average FROM cte_date_wh QUALIFY credits_used_date_wh > 100 -- Minimum N=100 credits AND pct_over_to_m_day_average >= 0.5 -- Minimum 50% increase over past m day average ORDER BY pct_over_to_m_day_average DESC;
Calcul pour les services Cloud¶
- Requête : services Cloud facturés
L’utilisation des services Cloud n’est facturée que si la consommation quotidienne de services Cloud dépasse 10 % de l’utilisation quotidienne des entrepôts virtuels. Cette requête permet de connaître le montant de la consommation de services Cloud qui a été effectivement facturé pour un jour donné, en commençant par le montant facturé le plus élevé.
SELECT usage_date, credits_used_cloud_services, credits_adjustment_cloud_services, credits_used_cloud_services + credits_adjustment_cloud_services AS billed_cloud_services FROM snowflake.account_usage.metering_daily_history WHERE usage_date >= DATEADD(month,-1,CURRENT_TIMESTAMP()) AND credits_used_cloud_services > 0 ORDER BY 4 DESC;
- Requête : coût total des services cloud par type de requête
Cette requête renvoie le total des crédits consommés pour les services cloud par un type particulier de requête.
SELECT query_type, SUM(credits_used_cloud_services) AS cs_credits, COUNT(1) num_queries FROM snowflake.account_usage.query_history WHERE true AND start_time >= TIMESTAMPADD(day, -1, CURRENT_TIMESTAMP) GROUP BY 1 ORDER BY 2 DESC LIMIT 10;
- Requête : coût des services cloud pour les requêtes d’un type donné
Cette requête renvoie le total des crédits consommés pour les services cloud par toutes les requêtes d’un type spécifique. Remplacez
'COPY'
si vous souhaitez vous concentrer sur un autre type de requête etday
si vous souhaitez explorer une période plus ou moins longue.SELECT * FROM snowflake.account_usage.query_history WHERE true AND start_time >= TIMESTAMPADD(day, -1, CURRENT_TIMESTAMP) AND query_type = 'COPY' ORDER BY credits_used_cloud_services DESC LIMIT 10;
- Requête : entrepôts avec une forte utilisation des services Cloud
Cette requête montre les entrepôts qui n’utilisent pas assez de temps d’entreposage pour couvrir la partie de calcul des services Cloud. Cela fournit un point de départ pour des investigations supplémentaires en isolant les entrepôts ayant un ratio élevé d’utilisation de services Cloud (>10 % des crédits globaux). Les candidats à l’investigation comprennent des questions relatives au clonage, à l’énumération des fichiers dans S3, aux outils partenaires, à la définition des paramètres de session, etc.
SELECT warehouse_name, SUM(credits_used) AS credits_used, SUM(credits_used_cloud_services) AS credits_used_cloud_services, SUM(credits_used_cloud_services)/SUM(credits_used) AS percent_cloud_services FROM snowflake.account_usage.warehouse_metering_history WHERE TO_DATE(start_time) >= DATEADD(month,-1,CURRENT_TIMESTAMP()) AND credits_used_cloud_services > 0 GROUP BY 1 ORDER BY 4 DESC;
- Requête : utilisation des services Cloud triée par portion de temps de requête
Cette requête renvoie toutes les requêtes exécutées au cours de la dernière minute et les trie en fonction du temps d’exécution total de la requête (par exemple, temps de compilation par rapport au temps d’attente).
SELECT * FROM snowflake.account_usage.query_history WHERE true AND start_time >= TIMESTAMPADD(minute, -60, CURRENT_TIMESTAMP) ORDER BY compilation_time DESC, execution_time DESC, list_external_files_time DESC, queued_overload_time DESC, credits_used_cloud_services DESC LIMIT 10;
Calcul du clustering automatique¶
- Requête : historique des coûts du clustering automatique (par jour, par objet)
Cette requête fournit une liste des tables avec clustering automatique et le volume de crédits consommés via le service au cours des 30 derniers jours, ventilés par jour. Toute irrégularité dans la consommation de crédit ou une consommation constamment élevée sont des signaux d’alerte qui entraînent la nécessité d’une investigation plus profonde.
SELECT TO_DATE(start_time) AS date, database_name, schema_name, table_name, SUM(credits_used) AS credits_used FROM snowflake.account_usage.automatic_clustering_history WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP()) GROUP BY 1,2,3,4 ORDER BY 5 DESC;
- Requête : historique du clustering automatique et moyenne sur plusieurs jours
Cette requête montre les crédits quotidiens moyens consommés par le clustering automatique groupés par semaine au cours de la dernière année. Elle peut aider à identifier les anomalies dans les moyennes quotidiennes sur l’année, ce qui vous permet d’enquêter sur les pics ou les changements inattendus dans la consommation.
WITH credits_by_day AS ( SELECT TO_DATE(start_time) AS date, SUM(credits_used) AS credits_used FROM snowflake.account_usage.automatic_clustering_history WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP()) GROUP BY 1 ORDER BY 2 DESC ) SELECT DATE_TRUNC('week',date), AVG(credits_used) AS avg_daily_credits FROM credits_by_day GROUP BY 1 ORDER BY 1;
Calcul pour l’optimisation de la recherche¶
- Requête : historique des coûts d’optimisation de la recherche (par jour, par objet)
Cette requête fournit une liste complète des tables avec optimisation de la recherche et le volume de crédits consommés via le service au cours des 30 derniers jours, ventilés par jour. Toute irrégularité dans la consommation de crédit ou une consommation constamment élevée sont des signaux d’alerte qui entraînent la nécessité d’une investigation plus profonde.
SELECT TO_DATE(start_time) AS date, database_name, schema_name, table_name, SUM(credits_used) AS credits_used FROM snowflake.account_usage.search_optimization_history WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP()) GROUP BY 1,2,3,4 ORDER BY 5 DESC;
- Requête : historique de l’optimisation de la recherche et moyenne sur plusieurs jours
Cette requête montre les crédits quotidiens moyens consommés par l’optimisation de la recherche, regroupés par semaine, au cours de la dernière année. Elle peut aider à identifier les anomalies dans les moyennes quotidiennes sur l’année, ce qui vous permet d’enquêter sur les pics ou les changements inattendus dans la consommation.
WITH credits_by_day AS ( SELECT TO_DATE(start_time) AS date, SUM(credits_used) AS credits_used FROM snowflake.account_usage.search_optimization_history WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP()) GROUP BY 1 ORDER BY 2 DESC ) SELECT DATE_TRUNC('week', date), AVG(credits_used) as avg_daily_credits FROM credits_by_day GROUP BY 1 ORDER BY 1;
Calcul pour les vues matérialisées¶
- Requête : historique des coûts des vues matérialisées (par jour, par objet)
Cette requête fournit une liste complète des vues matérialisées et le volume de crédits consommés via le service au cours des 30 derniers jours, ventilés par jour. Toute irrégularité dans la consommation de crédit ou une consommation constamment élevée sont des signaux d’alerte qui entraînent la nécessité d’une investigation plus profonde.
SELECT TO_DATE(start_time) AS date, database_name, schema_name, table_name, SUM(credits_used) AS credits_used FROM snowflake.account_usage.materialized_view_refresh_history WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP()) GROUP BY 1,2,3,4 ORDER BY 5 DESC;
- Requête : historique des vues matérialisées et moyenne sur plusieurs jours
Cette requête montre les crédits quotidiens moyens consommés par les vues matérialisées regroupées par semaine au cours de la dernière année. Elle peut aider à identifier les anomalies dans les moyennes quotidiennes sur l’année, ce qui vous permet d’enquêter sur les pics ou les changements inattendus dans la consommation.
WITH credits_by_day AS ( SELECT TO_DATE(start_time) AS date, SUM(credits_used) AS credits_used FROM snowflake.account_usage.materialized_view_refresh_history WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP()) GROUP BY 1 ORDER BY 2 DESC ) SELECT DATE_TRUNC('week',date), AVG(credits_used) AS avg_daily_credits FROM credits_by_day GROUP BY 1 ORDER BY 1;
Calcul pour Query Acceleration Service¶
- Requête : coût de Query Acceleration Service par entrepôt
Cette requête renvoie le nombre total de crédits utilisés par chaque entrepôt de votre compte pour Query Acceleration Service (depuis le début du mois) :
SELECT warehouse_name, SUM(credits_used) AS total_credits_used FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY WHERE start_time >= DATE_TRUNC(month, CURRENT_DATE) GROUP BY 1 ORDER BY 2 DESC;
Calcul pour Snowpipe et Snowpipe Streaming¶
- Requête : utilisation cumulée de l’ingestion de données (Snowpipe et « copie »)
Cette requête renvoie un résumé quotidien agrégé de tous les chargements pour chaque table dans Snowflake, indiquant la taille moyenne des fichiers, le nombre total de lignes, le volume total et la méthode d’ingestion (copie ou Snowpipe). Si la taille des fichiers est trop petite ou trop grande pour une ingestion optimale, une recherche/optimisation supplémentaire peut être nécessaire. En faisant correspondre le volume à la consommation de crédits, il est possible de déterminer quelles tables consomment le plus de crédits par TB chargé.
SELECT TO_DATE(last_load_time) AS load_date, status, table_catalog_name AS database_name, table_schema_name AS schema_name, table_name, CASE WHEN pipe_name IS NULL THEN 'COPY' ELSE 'SNOWPIPE' END AS ingest_method, SUM(row_count) AS row_count, SUM(row_parsed) AS rows_parsed, AVG(file_size) AS avg_file_size_bytes, SUM(file_size) AS total_file_size_bytes, SUM(file_size)/POWER(1024,1) AS total_file_size_kb, SUM(file_size)/POWER(1024,2) AS total_file_size_mb, SUM(file_size)/POWER(1024,3) AS total_file_size_gb, SUM(file_size)/POWER(1024,4) AS total_file_size_tb FROM snowflake.account_usage.copy_history GROUP BY 1,2,3,4,5,6 ORDER BY 3,4,5,1,2;
- Requête : historique des coûts de Snowpipe (par jour, par objet)
Cette requête fournit une liste complète des canaux et le volume de crédits consommés via le service au cours des 30 derniers jours, ventilés par jour. Toute irrégularité dans la consommation de crédit ou une consommation constamment élevée sont des signaux d’alerte qui entraînent la nécessité d’une investigation plus profonde.
SELECT TO_DATE(start_time) AS date, pipe_name, SUM(credits_used) AS credits_used FROM snowflake.account_usage.pipe_usage_history WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP()) GROUP BY 1,2 ORDER BY 3 DESC;
- Requête : historique Snowpipe et moyenne sur plusieurs jours
Cette requête montre les crédits quotidiens moyens consommés par Snowpipe, groupés par semaine, au cours de l’année dernière. Elle peut aider à identifier les anomalies dans les moyennes quotidiennes sur l’année, ce qui vous permet d’enquêter sur les pics ou les changements inattendus dans la consommation.
WITH credits_by_day AS ( SELECT TO_DATE(start_time) AS date, SUM(credits_used) AS credits_used FROM snowflake.account_usage.pipe_usage_history WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP()) GROUP BY 1 ORDER BY 2 DESC ) SELECT DATE_TRUNC('week',date), AVG(credits_used) AS avg_daily_credits FROM credits_by_day GROUP BY 1 ORDER BY 1;
- Requête : coût total Snowpipe Streaming
Cette requête répertorie l’utilisation du crédit pour Snowpipe Streaming, y compris les coûts de calcul de Snowpipe Streaming et les coûts clients.
SELECT start_time, end_time, SUM(credits_used) AS total_credits, name, IFF(CONTAINS(name,':'),'streaming client cost', 'streaming compute cost') AS streaming_cost_type FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_HISTORY WHERE service_type ='SNOWPIPE_STREAMING' GROUP BY ALL;
Calcul pour les tâches¶
- Requête : coût total de la tâche
Cette requête répertorie l’utilisation actuelle des crédits pour toutes les tâches sans serveur :
SELECT start_time, end_time, task_id, task_name, credits_used, schema_id, schema_name, database_id, database_name FROM snowflake.account_usage.serverless_task_history ORDER BY start_time, task_id;
Calcul pour la réplication¶
- Requête : coût de la réplication de compte
Cette requête répertorie les crédits utilisés par un groupe de réplication ou de basculement pour la réplication des comptes pendant le mois en cours :
SELECT start_time, end_time, replication_group_name, credits_used, bytes_transferred FROM snowflake.account_usage.replication_group_usage_history WHERE start_time >= DATE_TRUNC('month', CURRENT_DATE());
- Requête : historique des coûts de réplication de base de données (par jour, par objet)
Cette requête fournit une liste complète des bases de données répliquées et le volume de crédits consommés via le service de réplication au cours des 30 derniers jours, ventilés par jour. Toute irrégularité dans la consommation de crédit ou une consommation constamment élevée sont des signaux d’alerte qui entraînent la nécessité d’une investigation plus profonde.
SELECT TO_DATE(start_time) AS date, database_name, SUM(credits_used) AS credits_used FROM snowflake.account_usage.database_replication_usage_history WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP()) GROUP BY 1,2 ORDER BY 3 DESC;
- Requête : historique de réplication de base de données et moyenne sur plusieurs jours
Cette requête montre les crédits quotidiens moyens consommés par la réplication, groupés par semaine, au cours de la dernière année. Cela permet d’identifier toute anomalie dans la moyenne quotidienne. Ainsi, vous pouvez enquêter sur des pics ou des changements dans la consommation.
WITH credits_by_day AS ( SELECT TO_DATE(start_time) AS date, SUM(credits_used) AS credits_used FROM snowflake.account_usage.database_replication_usage_history WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP()) GROUP BY 1 ORDER BY 2 DESC ) SELECT DATE_TRUNC('week',date), AVG(credits_used) AS avg_daily_credits FROM credits_by_day GROUP BY 1 ORDER BY 1;
Calcul pour les outils partenaires¶
- Requête : consommation de crédits par les outils partenaires
Cette requête identifie les outils/solutions partenaires de Snowflake (par exemple BI, ETL, etc.) qui consomment le plus de crédits. Cela peut aider à identifier les solutions partenaires qui consomment plus de crédits que prévu, ce qui peut être un point de départ pour une enquête supplémentaire.
-- This Is Approximate Credit Consumption By Client Application WITH client_hour_execution_cte AS ( SELECT CASE WHEN client_application_id LIKE 'Go %' THEN 'Go' WHEN client_application_id LIKE 'Snowflake UI %' THEN 'Snowflake UI' WHEN client_application_id LIKE 'SnowSQL %' THEN 'SnowSQL' WHEN client_application_id LIKE 'JDBC %' THEN 'JDBC' WHEN client_application_id LIKE 'PythonConnector %' THEN 'Python' WHEN client_application_id LIKE 'ODBC %' THEN 'ODBC' ELSE 'NOT YET MAPPED: ' || CLIENT_APPLICATION_ID END AS client_application_name, warehouse_name, DATE_TRUNC('hour',start_time) AS start_time_hour, SUM(execution_time) AS client_hour_execution_time FROM snowflake.account_usage.query_history qh JOIN snowflake.account_usage.sessions se ON se.session_id = qh.session_id WHERE warehouse_name IS NOT NULL AND execution_time > 0 AND start_time > DATEADD(month,-1,CURRENT_TIMESTAMP()) GROUP BY 1,2,3 ), hour_execution_cte AS ( SELECT start_time_hour, warehouse_name, SUM(client_hour_execution_time) AS hour_execution_time FROM client_hour_execution_cte GROUP BY 1,2 ), approximate_credits AS ( SELECT A.client_application_name, C.warehouse_name, (A.client_hour_execution_time/B.hour_execution_time)*C.credits_used AS approximate_credits_used FROM client_hour_execution_cte A JOIN hour_execution_cte B ON A.start_time_hour = B.start_time_hour and B.warehouse_name = A.warehouse_name JOIN snowflake.account_usage.warehouse_metering_history C ON C.warehouse_name = A.warehouse_name AND C.start_time = A.start_time_hour ) SELECT client_application_name, warehouse_name, SUM(approximate_credits_used) AS approximate_credits_used FROM approximate_credits GROUP BY 1,2 ORDER BY 3 DESC;
Calcul pour les tables hybrides¶
- Requête : Consommation de crédits par table hybride sur une période donnée
Cette requête montre la consommation totale de crédits pour chaque table hybride sur une période donnée. Cela permet d’identifier les tables hybrides qui consomment plus de crédits que les autres et les tables hybrides spécifiques qui consomment plus de crédits que prévu.
-- Credits used (all time = past year) SELECT object_name, SUM(credits_used) AS total_credits FROM snowflake.account_usage.hybrid_table_usage_history GROUP BY 1 ORDER BY 2 DESC; -- Credits used (past N days/weeks/months) SELECT object_name, SUM(credits_used) AS total_credits FROM snowflake.account_usage.hybrid_table_usage_history WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP()) GROUP BY 1 ORDER BY 2 DESC;