Snowpipe 成本

借助 Snowpipe 的无服务器计算模型,用户可以启动任何大小的负载,而无需管理虚拟仓库。相反,Snowflake 提供并管理计算资源,根据当前的 Snowpipe 负载自动增加或缩小容量。根据实际计算资源使用对账户进行收费;与客户管理的虚拟仓库相反,后者在活动时会使用 Credit,并且可能闲置或过度使用。

本主题内容:

资源使用和管理开销

当 Snowpipe 主动排队和处理数据文件时,Snowflake 以每秒/每核粒度跟踪账户中所有管道的负载资源使用。每核 是指计算服务器中的物理 CPU 核心。然后,记录的使用情况会转换为熟悉的 Snowflake Credit,并列在账户的计费中。

备注

使用多线程客户端应用程序可以并行提交数据文件,从而启动其他服务器并在更短的时间内加载数据。然而,实际所需的总体计算时间与使用单线程客户端应用程序的时间相同,只是分布在更多内部 Snowpipe 服务器上。

有关数据文件大小和暂存频率的决策会影响 Snowpipe 的成本和性能。有关推荐的最佳实践,请参阅 连续数据加载(即 Snowpipe)和文件大小调整

除了资源使用之外,Snowpipe 的使用成本中还包含一项开销费用。无论事件通知或 REST API 调用是否导致数据加载,都会收取此开销费用。此开销费用在结算单中显示为 Snowpipe 费用。

要了解 Snowpipe 每个计算小时消耗了多少 Credit,请参阅 `Snowflake 服务使用表 `_ 中的《无服务器功能 Credit 表》。

估计 Snowpipe 费用

考虑到可以区分 Snowpipe 负载的因素有很多,Snowflake 很难提供样本成本。文件格式和大小以及 COPY 语句(包括用于转换的 SELECT 语句)的复杂性都会影响 Snowpipe 负载的资源使用和文件开销。

我们建议您通过执行一组典型的负载进行实验来估计未来的费用。

查看数据加载历史记录和成本

账户管理员(具有 ACCOUNTADMIN 角色的用户)或授予 MONITOR USAGE 全局权限的角色的用户可以使用 Snowsight、 Classic Console 或 SQL 查看指定日期范围内计入 Snowflake 账户的 Credit。

偶尔,数据压缩和维护过程会消耗 Snowflake Credit。例如,返回的结果可能显示您使用了 0 BYTES_INSERTED 和 0 FILES_INSERTED 的 Credit。这表示您的数据未加载,但数据压缩和维护过程已使用了一些 Credit。

要查看您账户中 Snowpipe 数据加载的 Credit 账单,请执行以下操作:

Snowsight:

选择 Admin » Cost Management

Classic Console:

选择 Account Account 选项卡 » Billing & Usage

Snowpipe 使用显示为 Snowflake 提供的特殊仓库,名为 蓝色 Snowflake 徽标(无文字) SNOWPIPE

SQL:

查询以下任一内容:

  • PIPE_USAGE_HISTORY 表函数(在 Snowflake Information Schema 中)。

  • /sql-reference/account-usage/pipe_usage_history`(在 :doc:/sql-reference/account-usage` 中)。

    可对 PIPE_USAGE_HISTORY 视图执行以下查询:

    查询: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

备注

资源监视器 提供对虚拟仓库 Credit 使用量的控制;但是,您不能使用它们来控制 Snowflake 提供的仓库的 Credit 使用量,包括 蓝色 Snowflake 徽标(无文字) SNOWPIPE 仓库。

语言: 中文