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, the Snowflake web interface, 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 ces coûts de calcul sont encourus, voir Comprendre le coût du calcul.

Dans ce chapitre :

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 administrateur de compte (c’est-à-dire un utilisateur avec le rôle ACCOUNTADMIN) peut utiliser Snowsight pour voir le coût global de l’utilisation du calcul pour un jour, une semaine ou un mois donné.

Utiliser Snowsight pour explorer le coût du calcul :

  1. Accédez à Admin » Usage.

  2. Sélectionnez Compute dans la liste déroulante Type d’utilisation.

Note

Comme le tableau de bord consomme des ressources de calcul lorsqu’il utilise des requêtes pour récupérer des informations sur les coûts et l’utilisation de la base de données SNOWFLAKE partagée, vous devez sélectionner un entrepôt virtuel pour afficher les données. Snowflake recommande d’utiliser un entrepôt XS à cette fin.

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

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

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.

ORGANIZATION_USAGE 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

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 vues et les fonctions de table des Schéma d’information de Snowflake fournissent également des données d’utilisation relatives aux ressources de calcul. 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 du clustering automatique
Calcul pour l’optimisation de la recherche
Calcul pour les vues matérialisées
Calcul pour Snowpipe
Calcul pour la réplication
Calcul pour les services Cloud
Calcul pour les outils partenaires

Calcul pour les entrepôts

Requête : moyenne des dépenses Snowflake heure par heure (sur 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.

-- Credits used by [hour, warehouse] (past m days)
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 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 ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE START_TIME >= DATEADD(DAY, -m, CURRENT_TIMESTAMP())  -- Past m days
GROUP BY 1
ORDER BY 2 DESC
;

Requête : utilisation de l’entrepôt sur une moyenne de plusieurs 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 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 & 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 journalières sur l’année, qui peuvent servir de points de départ pour une enquête plus approfondie 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.

TSELECT

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 un mois

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 fournit des points de départ pour une enquête plus approfondie 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 en 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 un mois

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 fournit des points de départ pour une enquête plus approfondie 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 Snowpipe

Requête : utilisation cumulée de l’ingestion de données (Snowpipe et « copier »)

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 fournit des points de départ pour une enquête plus approfondie 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
;

Calcul pour la réplication

Requête : historique des coûts de réplication (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"."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 et moyenne sur X 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, ce qui peut servir de point de départ pour 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"."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 services Cloud

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
;

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

-- Change the below filter if you want to look at a longer range than the last 1 month
        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
;
Revenir au début