Snowflake cloud data platform 从snowflake中的历史查询文本中提取表
我必须知道snowflake中查询最多的表,所以我想从snowflake\u query\u历史表中的query\u文本中提取表名。是否有任何方法可以在SQL中执行此操作。另请参见: 以高精度进行此操作非常困难,但如果可以合理接近,则以下内容可能就足够了 此查询不会处理联接、联合、子查询、多个CTE等,这对于REGEXP来说是很困难的,并且更适合通过带有类似pglast的Snowflake Python连接器在Python中完成 选择REGEXP\u SUBSTRquery\u text,'from[^\\]*',1,1,'ie',1表\u名称,count*query\u count from SNOWFLAKE.ACCOUNT\u USAGE.query\u HISTORY group by 1 order by 2 desc; 表\u名称查询\u计数 表a 95 SNOWFLAKE.ACCOUNT\u USAGE.QUERY\u HISTORY 5 您可以使用视图,而不是解析查询文本 查询可能如下所示:Snowflake cloud data platform 从snowflake中的历史查询文本中提取表,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我必须知道snowflake中查询最多的表,所以我想从snowflake\u query\u历史表中的query\u文本中提取表名。是否有任何方法可以在SQL中执行此操作。另请参见: 以高精度进行此操作非常困难,但如果可以合理接近,则以下内容可能就足够了 此查询不会处理联接、联合、子查询、多个CTE等,这对于REGEXP来说是很困难的,并且更适合通过带有类似pglast的Snowflake Python连接器在Python中完成 选择REGEXP\u SUBSTRquery\u text,'fr
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;
实际的表名可以在“使用表ID列作为查找”中找到。请查看我以前的答案