从雪花历史中的 query_text 中提取表

时间:2021-06-01 12:39:41

标签: snowflake-cloud-data-platform

我必须知道snowflake 中查询最多的表,所以想从Snowflake_query_history 表中的query_text 中提取表名。有什么办法可以在 SQL 中做到这一点。

2 个答案:

答案 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