雪花获取query_id以运行查询?

时间:2020-05-04 14:38:29

标签: snowflake-cloud-data-platform snowflake-schema

我想以编程方式获取Snowflake中正在运行的查询的query_id。 account_usage.query_history似乎没有存储正在运行的查询ID。还有其他方法来获取运行查询的query_id吗?

4 个答案:

答案 0 :(得分:1)

您可以使用信息架构。

select *
from table(information_schema.query_history())  where execution_status ='RUNNING';

答案 1 :(得分:0)

您可以选择返回最近执行的查询的ID

 select last_query_id();

select last_query_id(1);

返回会话中执行的第一个查询的ID

了解更多here

答案 2 :(得分:0)

如果我没记错的话,您将需要在客户端应用程序上进行两个会话来获取查询ID。您只想对长时间运行的查询执行此操作(例如,允许检查状态或在这么多秒后终止它),因为您可以使用last_query_id()获得简短查询的查询ID。

-- In first session, get the session ID before executing the long-running query.
select current_session() as SESSION_ID;

-- In second session, get the query ID of the running query in the first session
select  QUERY_ID
from    table(information_schema.query_history())
where   execution_status ='RUNNING' 
    and session_id = 172747880058954;

答案 3 :(得分:0)

提供了其他选项,但是如果您要检查特定时间(长时间运行)的查询,可以使用此查询。

SET long_running_threshold_seconds = 10;

SELECT * FROM TABLE(information_schema.query_history()) WHERE (execution_status = 'RUNNING'
AND datediff('seconds',start_time,current_timestamp()) > $long_running_threshold_seconds )