Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Snowflake cloud data platform 从snowflake中的历史查询文本中提取表_Snowflake Cloud Data Platform - Fatal编程技术网

Snowflake cloud data platform 从snowflake中的历史查询文本中提取表

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

我必须知道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 您可以使用视图,而不是解析查询文本

查询可能如下所示:

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列作为查找”中找到。

请查看我以前的答案