雪花-查看查询次数最多的表和列 [英] Snowflake - View what tables and columns are queried the most
本文介绍了雪花-查看查询次数最多的表和列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
雪花/SQL查询中有没有什么方法可以查看查询最多的表和列?我想知道哪些数据对我的用户最有价值,但不确定如何通过编程来做到这一点。如有任何想法,我们将不胜感激-谢谢!
推荐答案
2021年更新
新的ACCESS_HISTORY视图包含此信息(当前在企业版预览中)。
例如,如果要查找最常用的列:
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'
- 您还可以找到以前的所有RAN查询:
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
查询结合起来(使字符串成为常量),然后您将能够找到查询次数最多的表。
这篇关于雪花-查看查询次数最多的表和列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文