我必须知道snowflake 中查询最多的表,所以想从Snowflake_query_history 表中的query_text 中提取表名。有什么办法可以在 SQL 中做到这一点。
答案 0 :(得分:1)
您可以使用 ACCESS_HISTORY 视图代替解析 query_text
。
查询可能如下所示:
SELECT f1.value:"objectId" AS table_id, COUNT(*) AS cnt
FROM "SNOWFLAKE"."ACCOUNT_USAGE".access_history
,LATERAL flatten(base_objects_accessed) f1
WHERE f1.value:"objectDomain"::string='Table'
AND query_start_time >= dateadd('day', -30, current_timestamp()) -- last 30 days
GROUP BY table_id
ORDER BY cnt DESC;
可以在 SNOWFLAKE.ACCOUNT_USAGE.TABLES 中使用 TABLE_ID
列作为查找来找到实际的表名。
答案 1 :(得分:0)
另见:Snowflake - View what tables and columns are queried the most
高精度地做到这一点是相当困难的,但如果合理接近是可以接受的,那么以下可能就足够了。
此查询不会处理连接、联合、子查询、多个 CTE 等——这在 REGEXP 中很难做到,但更适合通过雪花 Python 连接器在 Python 中完成,例如 {{1} }.
pglast