了解计算成本

总计算成本由以下三项的总体使用成本组成:

  • 虚拟仓库(用户管理的计算资源)

  • 使用 Snowflake 管理的计算资源的无服务器功能(如自动聚类和 Snowpipe)

  • Snowflake 架构的云服务层

本主题介绍以下两种深入了解历史计算成本的方式:使用 Snowsight,或者编写对 ACCOUNT_USAGEORGANIZATION_USAGE 架构中的视图进行的查询。Snowsight 让您可以通过可视化仪表板快速轻松地获取有关费用的信息。对使用情况视图的查询让您可以深入了解成本数据,并有助于生成自定义报告和仪表板。

如果需要有关如何产生计算成本的更多信息,请参阅 了解计算成本

备注

云服务层会消耗 Credit,但这些 Credit 并不会全部算入实际计费。仅当云服务每日使用量超过虚拟仓库每日使用量的 10% 时,才收取云服务使用费。Snowsight 和大多数视图会显示仓库、无服务器功能和云服务消耗的 Credit 总数,但不会计入对云服务的日常调整。

要确定实际计费的 Credit 数量,请对 METERING_DAILY_HISTORY 视图 运行查询。

查看 Credit 使用量

所有计算资源(虚拟仓库、无服务器、云服务)都使用 Snowflake Credit。用户可以使用 Snowsight 来查看任何一天、一周或一个月的计算使用整体成本。

备注

Snowsight 最多可能需要 72 小时才能提供成本信息。

要了解计算成本,请执行以下步骤:

  1. 登录 Snowsight。

  2. 切换到 ACCOUNTADMIN 角色。如果您不是账户管理员,请切换为 拥有成本和使用情况数据访问权限 的角色。

  3. 导航到 Admin » Cost Management

  4. 选择要使用的仓库,以查看使用情况数据。Snowflake 建议为此目的使用 XS 仓库。

  5. 选择 Consumption

  6. 从 Usage Type 下拉列表中选择 Compute

备注

如果用户具有 ACCOUNTADMIN 角色,但 没有 ORGADMIN 角色,则他们只能查看当前账户的费用。允许他们切换到不同账户的 Account 筛选器不会出现。

按标签筛选

您可以使用标签将使用资源的 成本归属 于组织内的逻辑单元。标签是 Snowflake 对象,可以有一个或多个与之关联的值。具有适当权限的用户将标签/值对应用于成本中心或其他逻辑单元(例如,开发环境、业务单元或业务线)使用的每个资源。一旦资源被标记,就可以基于特定的标签/值对来隔离成本,从而允许您将此成本归属于特定的逻辑单元。

要筛选 Consumption 仪表板以显示与特定标签/值组合关联的成本,请执行以下步骤:

  1. 在 Snowsight 中,打开 Consumption 仪表板。

  2. Tags 下拉列表中选择标签。

  3. 从标签值列表中选择值。

  4. 选择 Apply

例如,您可以使用下拉列表选择 COST_CENTER 标签和 SALES 值,以显示与标记为 COST_CENTER = SALES 的资源相关联的使用情况,同时从仪表板中排除所有其他使用情况。

您还可以显示带有标签的所有资源,而不考虑其标签值。使用下拉列表选择标签,然后选择 All 而不是特定值。

按类型、服务或资源来查看使用情况

在查看显示计算历史记录的条形图时,可以选择 By TypeBy ServiceBy Resource 来筛选数据。

By Type:

按照计算(虚拟仓库和无服务器资源)和云服务来划分资源使用情况。对于此筛选器,云服务将与其他类型的计算资源分开。

By Service:

按仓库和每项无服务器功能来划分资源使用情况。例如, WAREHOUSE_METERING 表示仓库使用的 Credit,而 PIPE 表示无服务器 Snowpipe 功能使用的 Credit。云服务计算包含在仓库使用中。

By Resource:

按使用了 Credit 的 Snowflake 对象来划分资源使用情况。例如,每个仓库都会获得表示,产生了无服务器成本的每个表同样如此。

查询计算成本数据

Snowflake 提供了两个架构(ORGANIZATION_USAGEACCOUNT_USAGE),它们包含与使用情况和费用相关的数据。ORGANIZATION_USAGE 架构提供组织中所有账户的费用信息,而 ACCOUNT_USAGE 架构提供单个账户的类似信息。这两个架构中的视图提供可立即分析的详细使用情况数据,以构建自定义报告或仪表板。

ORGANIZATION_USAGE 和 ACCOUNT_USAGE 架构中的大多数视图都包含计算资源的成本(以使用的 Credit 表示)。要了解以货币而不是 Credit 表示的计算成本,请编写对 USAGE_IN_CURRENCY_DAILY 视图 进行的查询。此视图使用 Credit 的每日价格,将使用的 Credit 转换为以货币表示的成本。

以下视图提供了与计算成本相关的使用情况和成本信息。

视图

计算资源

描述

架构

AUTOMATIC_CLUSTERING_HISTORY

无服务器

自动聚类使用的 Credit。

ORGANIZATION_USAGE ACCOUNT_USAGE

DATA_QUALITY_MONITORING_ USAGE_HISTORY

无服务器

调用预定的 DMFs 并将结果引入事件表中所消耗的 Credit。

ACCOUNT_USAGE

DATABASE_REPLICATION_USAGE_ HISTORY

无服务器

用于数据库复制的 Credit。

ACCOUNT_USAGE

HYBRID_TABLE_USAGE_HISTORY

无服务器

混合表请求资源时消耗的 Credit。

ACCOUNT_USAGE

LISTING_AUTO_FULFILLMENT_ REFRESH_DAILY

仓库

用于刷新由 Cross-Cloud Auto-Fulfillment 履行到其他区域的数据的 Credit。

DATA_SHARING_USAGE

LISTING_AUTO_FULFILLMENT_ USAGE_HISTORY

仓库

通过使用 Cross-Cloud Auto-Fulfillment 将数据产品履行到其他区域的相关估算使用量。请参阅 REPLICATION 的 SERVICE_TYPE。

ORGANIZATION_USAGE

MATERIALIZED_VIEW_REFRESH_ HISTORY

无服务器

物化视图刷新使用的 Credit。

ORGANIZATION_USAGE ACCOUNT_USAGE

METERING_DAILY_HISTORY

仓库

无服务器

云服务

所有计算资源(仓库、无服务器和云服务)在特定某天使用的 Credit。

可用于确定是否实际将特定某天的云服务计算成本记入了账单(即云服务的 Credit 使用量超过了仓库使用量的 10%)。

ORGANIZATION_USAGE ACCOUNT_USAGE

METERING_HISTORY

仓库

无服务器

云服务

仓库和云服务使用的 Credit(按小时计)。要查看单个仓库使用了多少 Credit,请查询 WAREHOUSE_METERING_HISTORY 视图。

ACCOUNT_USAGE

PIPE_USAGE_HISTORY

无服务器

Snowpipe 使用的 Credit。

ORGANIZATION_USAGE ACCOUNT_USAGE

QUERY_ACCELERATION_HISTORY

无服务器

Query Acceleration Service 使用的 Credit。

ACCOUNT_USAGE

REPLICATION_USAGE_HISTORY

无服务器

在数据库复制期间使用的 Credit 和传输的字节数。如果可能,请改用 DATABASE_REPLICATION_USAGE_HISTORY 视图

ORGANIZATION_USAGE ACCOUNT_USAGE

REPLICATION_GROUP_USAGE_ HISTORY

无服务器

在特定复制组的复制期间使用的 Credit 和传输的字节数。

ACCOUNT_USAGE

SEARCH_OPTIMIZATION_HISTORY

无服务器

搜索优化服务使用的 Credit。

ACCOUNT_USAGE

SERVERLESS_TASK_HISTORY

无服务器

任务使用的 Credit。

ACCOUNT_USAGE

SNOWPIPE_STREAMING_FILE_ MIGRATION_HISTORY

无服务器

Snowpipe Streaming 计算使用的 Credit(不包括客户端成本)。

ACCOUNT_USAGE

USAGE_IN_CURRENCY_DAILY

仓库

无服务器

云服务

所有计算资源的每日 Credit 使用量,以及该使用量以组织货币表示的成本。

ORGANIZATION_USAGE

WAREHOUSE_METERING_HISTORY

仓库

云服务

每个仓库的每小时 Credit 使用量(包括与使用仓库相关的云服务成本)。

ORGANIZATION_USAGE ACCOUNT_USAGE

备注

Snowflake Information Schema 的视图和表函数也提供与成本相关的使用情况数据。虽然首选使用 ACCOUNT_USAGE 架构,但在某些情况下,Information Schema 的速度可能更快。

示例查询

以下查询将向下钻取 ACCOUNT_USAGE 视图中的数据,以深入了解计算成本。

备注

通过使用组织使用情况架构中的相应视图,可以修改对 Account Usage 架构中的视图执行的查询,以深入了解整个组织的成本。例如,两个架构都包含 WAREHOUSE_METERING_HISTORY 视图。

点击下面的查询名称可查看完整 SQL 示例。

仓库的计算:
云服务的计算:
自动聚类的计算:
搜索优化的计算:
物化视图的计算:
Query Acceleration Service 的计算:
Snowpipe 的计算:
Snowpipe Streaming 的计算和客户端成本:
任务的计算:
复制的计算:
合作伙伴工具的计算:
混合表的计算:

仓库的计算

查询:过去 m 天 Snowflake 的每小时平均支出(跨所有仓库)

此查询按小时显示 Credit 总使用量,以帮助了解过去 m 天的使用量趋势(峰值、谷值)。这有助于确定一天中的使用量高峰时间。

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
查询:特定时间段的 Credit 使用量(按仓库)

此查询显示特定时间段内每个仓库的 Credit 总使用量。这有助于确定使用的 Credit 比其他仓库多的仓库,以及使用的 Credit 比预期多的特定仓库。

-- 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
查询:m 天内仓库的平均使用量

此查询返回按周和仓库分组的 Credit 每日平均使用量。它可用于识别过去一年各周的仓库 Credit 使用量的异常情况。

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

云服务的计算

查询:计费云服务

仅当 云服务的使用量 超过虚拟仓库每日使用量的 10% 时,才会收取使用费用。此查询返回特定日期实际计费的云服务使用量,按最高计费金额排序。

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;
Copy
查询:云服务总成本(按查询类型)

此查询按特定查询类型返回用于云服务的总 Credit。

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
查询:给定类型查询的云服务成本

此查询按特定类型的所有查询返回用于云服务的总 Credit。如果您希望关注另一种类型的查询,请替换 'COPY';如果您希望了解更长或更短的时间段,请替换 day

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
查询:云服务使用率高的仓库

此查询显示没有使用足够长的仓库时间来覆盖计算的云服务部分的仓库。此查询通过隔离云服务使用率高(超过 10% 的总 Credit)的仓库,提供了进一步调查的起点。调查候选对象包括与克隆、S3 中的列表文件、合作伙伴工具、设置会话参数等相关的问题。

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
查询:按查询时间部分排序的云服务使用量

此查询返回最后一分钟运行的所有查询,并按总查询执行时间的各个部分(例如,编译时间与排队时间)对这些查询进行排序。

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

自动聚类的计算

查询:自动聚类成本历史记录(按天、按对象)

此查询提供含有自动聚类的表的列表,以及过去 30 天通过服务使用的 Credit(按天细分)。Credit 使用中的任何违规行为或持续高使用量都是需要进行进一步调查的标志。

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
查询:自动聚类历史记录和 m 天平均值

此查询显示去年自动聚类使用的 Credit 每日平均值(按周分组)。它可以帮助识别一年中每日平均值的异常情况,以便您可以调查使用量的峰值或意外变化。

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

搜索优化的计算

查询:搜索优化成本历史记录(按天、按对象)

此查询提供含有搜索优化的表的完整列表,以及过去 30 天通过服务使用的 Credit(按天细分)。Credit 使用中的任何违规行为或持续高使用量都是需要进行进一步调查的标志。

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
查询:搜索优化历史记录和 m 天平均值

此查询显示去年搜索优化使用的 Credit 每日平均值(按周分组)。它可以帮助识别一年中每日平均值的异常情况,以便您可以调查使用量的峰值或意外变化。

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

物化视图的计算

查询:物化视图成本历史记录(按天、按对象)

此查询提供物化视图的完整列表,以及过去 30 天通过服务使用的 Credit(按天细分)。Credit 使用中的任何违规行为或持续高使用量都是需要进行进一步调查的标志。

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
查询:物化视图历史记录和 m 天平均值

此查询显示去年物化视图使用的 Credit 每日平均值(按周分组)。它可以帮助识别一年中每日平均值的异常情况,以便您可以调查使用量的峰值或意外变化。

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

Query Acceleration Service 的计算

查询:Query Acceleration Service 成本(按仓库)

此查询返回您的账户中每个仓库月初至今用于 Query Acceleration Service 的 Credit 总数:

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

Snowpipe 和 Snowpipe Streaming 的计算

查询:数据引入的累计使用量(Snowpipe 和“复制”)

此查询返回 Snowflake 中每个表的所有负载的每日摘要(经汇总),并显示平均文件大小、总行数、总用量和引入方法(复制或 Snowpipe)。如果文件因太小或太大而无法实现更好的引入,则可能需要进一步的调查/优化。通过将用量映射到 Credit 使用量,可以确定哪些表在加载 1 TB 时使用的 Credit 更多。

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
查询:Snowpipe 成本历史记录(按天、按对象)

此查询提供管道的完整列表,以及过去 30 天通过服务使用的 Credit(按天细分)。Credit 使用中的任何违规行为或持续高使用量都是需要进行进一步调查的标志。

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
查询:Snowpipe 历史记录和 m 天平均值

此查询显示了 Snowpipe 去年按周分组的平均每日使用 Credit。它可以帮助识别一年中每日平均值的异常情况,以便您可以调查使用量的峰值或意外变化。

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
查询:Snowpipe Streaming 总成本

此查询列出 Snowpipe Streaming 的当前 Credit 使用量(包括了 Snowpipe Streaming 计算和客户端成本)。

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

任务的计算

查询:任务总成本

此查询列出所有无服务器任务的当前 Credit 使用量:

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

复制的计算

查询:账户复制成本

此查询列出复制组或故障转移组当前月份用于账户复制的 Credit:

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
查询:数据库复制成本历史记录(按天、按对象)

此查询提供复制数据库的完整列表,以及过去 30 天通过复制服务使用的 Credit(按天细分)。Credit 使用中的任何违规行为或持续高使用量都是需要进行进一步调查的标志。

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
查询:数据库复制历史记录和 m 天平均值

此查询显示去年复制服务使用的 Credit 每日平均值(按周分组)。它可以帮助识别每日平均值的任何异常情况,以便您可以调查使用量的任何峰值或变化。

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

合作伙伴工具的计算

查询:Credit 使用量(按合作伙伴工具)

此查询确定 Snowflake 的哪些合作伙伴工具/解决方案(例如 BI、ETL 等)使用了最多 Credit。这可以帮助确定使用的 Credit 比预期多的合作伙伴解决方案,从而借以开展进一步调查。

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

混合表的计算

查询:特定时间段内混合表的 Credit 消耗

此查询显示了特定时间段内每个混合表的总计 Credit 消耗。这有助于识别比其他表消耗更多 Credit 的混合表,以及相比预期消耗更多 Credit 的特定混合表。

-- 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;
Copy
语言: 中文