gpt4 book ai didi

snowflake-cloud-data-platform - Snowflake - 查看查询最多的表和列

转载 作者:行者123 更新时间:2023-12-05 09:37:20 28 4
gpt4 key购买 nike

在 snowflake/sql 查询中是否有任何方法可以查看哪些表被查询最多以及哪些列?我想知道哪些数据对我的用户最有值(value),但不确定如何以编程方式执行此操作。任何想法表示赞赏 - 谢谢!

最佳答案

2021 年更新

新的 ACCESS_HISTORY View 包含此信息(目前为预览版,企业版)。

例如,如果你想找到最常用的列:

select obj.value:objectName::string objName
, col.value:columnName::string colName
, count(*) uses
, min(query_start_time) since
, max(query_start_time) until
from snowflake.account_usage.access_history
, table(flatten(direct_objects_accessed)) obj
, table(flatten(obj.value:columns)) col
group by 1, 2
order by uses desc

引用:https://docs.snowflake.com/en/sql-reference/account-usage/access_history.html


2020 年答案

我找到的最好的(目前):

  • 对于任何给定的查询,您可以通过查看为其生成的计划来找到扫描了哪些表:
SELECT *, "objects"
FROM TABLE(EXPLAIN_JSON(SYSTEM$EXPLAIN_PLAN_JSON('SELECT * FROM a.b.any_table_or_view')))
WHERE "operation"='TableScan'
  • 您也可以找到您之前运行的所有查询:
select QUERY_TEXT 
from table(information_schema.query_history())

因此下一步很自然地会将两者结合起来 - 但这并不简单,因为您会收到如下错误:

SQL compilation error: argument 1 to function EXPLAIN_JSON needs to be constant, found 'SYSTEM$EXPLAIN_PLAN_JSON('SELECT * FROM a.b.c')'

解决方案是将来自 query_history() 的查询与外部的 SYSTEM$EXPLAIN_PLAN_JSON 组合起来(使字符串保持不变),然后您将能够找出查询次数最多的表。

关于snowflake-cloud-data-platform - Snowflake - 查看查询最多的表和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64341885/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com