雪花-查看查询次数最多的表和列 [英] Snowflake - View what tables and columns are queried the most

查看:11
本文介绍了雪花-查看查询次数最多的表和列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

雪花/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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆