我想以编程方式获取Snowflake中正在运行的查询的query_id。 account_usage.query_history
似乎没有存储正在运行的查询ID。还有其他方法来获取运行查询的query_id吗?
答案 0 :(得分:1)
您可以使用信息架构。
select *
from table(information_schema.query_history()) where execution_status ='RUNNING';
答案 1 :(得分:0)
答案 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 )