Découverte 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.

Affichage de l’utilisation du crédit de votre organisation

Toutes les ressources de calcul (entrepôts virtuels, serverless, services Cloud) consomment des crédits Snowflake. Un utilisateur avec les privilèges appropriés peut utiliser 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 :

  1. Connectez-vous à Snowsight.

  2. Passez au rôle ACCOUNTADMIN.

  3. Accédez à Admin » Usage.

  4. Sélectionnez un entrepôt à utiliser pour visualiser les données d’utilisation. Snowflake recommande d’utiliser un entrepôt XS à cette fin.

  5. 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.

Filtrer 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 Usage afin d’afficher les coûts associés à une combinaison balise/valeur spécifique :

  1. Dans Snowsight, ouvrez le tableau de bord Usage.

  2. Dans la liste déroulante Tags, sélectionnez la balise.

  3. Sélectionnez la valeur dans la liste des valeurs de la balise.

  4. 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.

Afficher 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 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.

ORGANIZATION_USAGE ACCOUNT_USAGE

DATABASE_REPLICATION_USAGE_ HISTORY

Sans serveur

Crédits consommés pour la réplication de la base de données.

ACCOUNT_USAGE

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.

DATA_SHARING_USAGE

MATERIALIZED_VIEW_REFRESH_ HISTORY

Sans serveur

Crédits consommés pour le rafraîchissement des vues matérialisées.

ORGANIZATION_USAGE ACCOUNT_USAGE

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).

ORGANIZATION_USAGE ACCOUNT_USAGE

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.

ACCOUNT_USAGE

PIPE_USAGE_HISTORY

Sans serveur

Crédits consommés par Snowpipe.

ORGANIZATION_USAGE ACCOUNT_USAGE

QUERY_ACCELERATION_HISTORY

Sans serveur

Crédits consommés par le service d’accélération des requêtes.

ACCOUNT_USAGE

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.

ORGANIZATION_USAGE ACCOUNT_USAGE

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.

ACCOUNT_USAGE

SEARCH_OPTIMIZATION_HISTORY

Sans serveur

Crédits consommés par le service d’optimisation de la recherche.

ACCOUNT_USAGE

SERVERLESS_TASK_HISTORY

Sans serveur

Crédits consommés par les tâches.

ACCOUNT_USAGE

SNOWPIPE_STREAMING_FILE_ MIGRATION_HISTORY

Sans serveur

Crédits consommés par le calcul Snowpipe Streaming (n’inclut pas les coûts client).

ACCOUNT_USAGE

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.

ORGANIZATION_USAGE

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.

ORGANIZATION_USAGE ACCOUNT_USAGE

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 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;
Copy
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;
Copy
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;
Copy

Calcul pour les services Cloud

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;
Copy
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 et day 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;
Copy
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;
Copy
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;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy

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;
Copy
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;
Copy

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;
Copy

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;
Copy
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;
Copy
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;
Copy
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;
Copy

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;
Copy

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());
Copy
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;
Copy
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;
Copy

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;
Copy