000*_*004 2 snowflake-cloud-data-platform
在 Snowflake/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
Run Code Online (Sandbox Code Playgroud)
参考: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'
Run Code Online (Sandbox Code Playgroud)
select QUERY_TEXT
from table(information_schema.query_history())
Run Code Online (Sandbox Code Playgroud)
因此,下一步自然是将两者结合起来 - 但这并不简单,因为您会收到如下错误:
SQL compilation error: argument 1 to function EXPLAIN_JSON needs to be constant, found 'SYSTEM$EXPLAIN_PLAN_JSON('SELECT * FROM a.b.c')'
Run Code Online (Sandbox Code Playgroud)
query_history()解决方案是将来自外部的查询结合起来SYSTEM$EXPLAIN_PLAN_JSON(使字符串恒定),然后您将能够找到查询次数最多的表。
| 归档时间: |
|
| 查看次数: |
2486 次 |
| 最近记录: |