我有多个排队查询,我想取消所有这些查询。查询具有不同的会话 ID,因此我无法使用
SYSTEM$CANCEL_ALL_QUERIES
。
我可以通过以下查询获取 id 列表
SELECT query_id
FROM table(snowflake.information_schema.query_history())
WHERE execution_status = 'QUEUED'
AND start_time < DATEADD('minute', -10, CURRENT_TIMESTAMP())
AND start_time > DATEADD('hour', -1, CURRENT_TIMESTAMP());
我能够像这样取消单个查询:
SELECT SYSTEM$CANCEL_QUERY('01b74954-020a-94f6-0004-7b6b0022e5da');
但是,我没有找到一种方法来动态取消之前 select 语句中的所有查询。我尝试使用 Snowflake 脚本创建 while 或 for 循环,但没有成功。
您可以将它们组合在一起,如下所示:
SELECT SYSTEM$CANCEL_QUERY(query_id)
FROM table(snowflake.information_schema.query_history())
WHERE execution_status = 'QUEUED'
AND start_time < DATEADD('minute', -10, CURRENT_TIMESTAMP())
AND start_time > DATEADD('hour', -1, CURRENT_TIMESTAMP());