Снежинка получить query_id для выполнения запроса? - PullRequest
0 голосов
/ 04 мая 2020

Я хочу получить query_id для запущенного запроса в Snowflake программно. Кажется, что account_usage.query_history не имеет сохраненных идентификаторов запросов. Есть ли другой способ получить query_id запущенного запроса?

Ответы [ 4 ]

1 голос
/ 04 мая 2020

Вы можете использовать информационную схему.

select *
from table(information_schema.query_history())  where execution_status ='RUNNING';
0 голосов
/ 06 мая 2020

Существуют и другие опции, но если вы хотите проверить, выполняются ли запросы в течение указанного c времени (долго), вы можете использовать этот запрос.

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 )
0 голосов
/ 05 мая 2020

Если я не ошибаюсь, вам потребуется два сеанса в клиентском приложении, чтобы получить идентификатор запроса. Вы захотите сделать это только для длительных запросов (например, чтобы разрешить проверку статуса или отменить его через столько секунд), потому что вы можете получить идентификатор запроса короткого запроса с помощью last_query_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;
0 голосов
/ 04 мая 2020

Вы можете сделать либо возврат идентификатора для последнего выполненного запроса

 select last_query_id();

, либо select last_query_id(1);

, который возвращает идентификатор для первого запроса, выполненного в сеансе

Подробнее здесь

...