架构:

ACCOUNT_USAGE

QUERY_ATTRIBUTION_HISTORY 视图

此 Account Usage 视图可用于确定过去 365 天(1 年)内在账户内仓库上运行的特定查询的计算成本。

有关更多信息,请参阅 归因查询的成本

列名称

数据类型

描述

query_id

VARCHAR

内部/系统生成的 SQL 语句标识符。

parent_query_id

VARCHAR

父查询的查询 ID,如果查询没有父查询,则为 NULL。

root_query_id

VARCHAR

链中最顶层查询的查询 ID,如果查询没有父查询,则为 NULL。

warehouse_id

NUMBER

执行查询的仓库的内部/系统生成的标识符。

warehouse_name

VARCHAR

查询执行对象仓库的名称。

query_hash

VARCHAR

根据规范化 SQL 文本计算的 哈希值

query_parameterized_hash

VARCHAR

根据参数化查询计算的 哈希值

query_tag

VARCHAR

通过 QUERY_TAG 会话参数为此语句设置的查询标签。

user_name

VARCHAR

发出查询的用户。

start_time

TIMESTAMP_LTZ

查询执行开始时的时间(当地时区)。

end_time

TIMESTAMP_LTZ

查询执行结束时的时间(当地时区)。

credits_attributed_compute

NUMBER

归于此查询的 credit 数。仅包括查询执行所用的 credit,不包括任何仓库空闲时间使用的 credit。

credits_used_query_acceleration

NUMBER

Query Acceleration Service 加速查询时使用的 credit 数。NULL(如果查询没有加速)。. . 加速查询的总成本是此列与 credits_attributed_compute 列的总和。

使用说明

  • 此视图的延迟时间最长可达 6 小时。

  • 此视图显示已获得 USAGE_VIEWER 或 GOVERNANCE_VIEWER 数据库角色 授权的任何角色的结果。

  • credits_attributed_compute 列中的值包含在执行查询时使用的仓库 credit,包括多集群仓库的任何大小调整和/或自动缩放。此成本根据资源使用的加权平均值确定。

    该值不包括仓库空闲时使用的任何 credit。空闲时间是在仓库中没有运行查询的时间段,可以在仓库级别进行测量。

    该值不包括因执行查询而产生的任何其他 credit 使用量。例如,下列内容不包括在查询成本中:

    • 数据传输成本

    • 存储成本

    • 云服务成本

    • 无服务器功能的成本

    • AI 服务处理的词元的成本

  • 对于并发执行的查询,仓库的成本归因于基于给定时间间隔内资源使用量的加权平均值的单个查询。

  • 运行时间较短的查询 (<= ~100ms) 目前太短,不适合按查询成本归因,也不包括在视图中。

  • 所有列的数据从 2024 年 8 月中旬开始提供。该日期之前的一些数据可能在视图中提供,但可能不完整。

示例

当前用户的查询成本

要确定当前用户在当前月份执行的查询的成本,请执行以下语句:

SELECT user_name, SUM(credits_attributed_compute) AS credits
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY
  WHERE user_name = CURRENT_USER()
    AND start_time >= DATE_TRUNC('MONTH', CURRENT_DATE)
    AND start_time < CURRENT_DATE
  GROUP BY user_name;
Copy

要将仓库成本归于当前用户,请参阅 基于用户的仓库成本归因

存储过程的查询成本

对于发出多个层次查询的存储过程,您可以使用程序的根查询 ID 计算程序的归因查询成本。

  1. 要查找存储过程的根查询 ID,请使用 ACCESS_HISTORY 视图。例如,要查找存储过程的根查询 ID,请设置 query_id 并执行以下语句:

    SET query_id = '<query_id>';
    
    SELECT query_id,
           parent_query_id,
           root_query_id,
           direct_objects_accessed
      FROM SNOWFLAKE.ACCOUNT_USAGE.ACCESS_HISTORY
      WHERE query_id = $query_id;
    
    Copy

    有关更多信息,请参阅 示例:使用存储过程的祖先查询

  2. 要计算整个程序的查询成本之和,请替换 <root_query_id> 并执行以下语句:

    SET query_id = '<root_query_id>';
    
    SELECT SUM(credits_attributed_compute) AS total_attributed_credits
      FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY
      WHERE (root_query_id = $query_id OR query_id = $query_id);
    
    Copy

其他示例

有关更多示例,请参阅 按标记、用户和查询的成本归因

语言: 中文