SYSTEM$TASK_RUNTIME_INFO
SYSTEM$TASK_RUNTIME_INFO
현재 태스크 실행에 대한 정보를 반환해요. 이 함수를 태스크 실행 밖에서 호출하면 오류로 실패해요.
본문
구문 (Syntax)
SYSTEM$TASK_RUNTIME_INFO('')
인자 (Arguments)
'arg_name'— 반환할 정보의 유형을 지정해요. 다음 값 중 하나를 지정할 수 있어요:
| 값 | 설명 |
|---|---|
'CURRENT_TASK_NAME' |
현재 태스크의 이름을 반환 |
'CURRENT_ROOT_TASK_NAME' |
현재 태스크 그래프에서 루트 태스크의 이름을 반환 |
'CURRENT_ROOT_TASK_UUID' |
현재 태스크 그래프에서 루트 태스크를 나타내는 범용 고유 식별자(UUID)를 반환 |
'CURRENT_TASK_GRAPH_RUN_GROUP_ID' |
현재 그래프 실행 그룹을 나타내는 범용 고유 식별자(UUID)를 반환 |
'CURRENT_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP' |
현재 그래프 실행 그룹에서 루트 태스크의 원래 예약된 타임스탬프를 반환. 재시도되는 그래프의 경우 반환 값은 현재 그룹에서 초기 그래프 실행의 원래 예약된 타임스탬프예요. |
'LAST_SUCCESSFUL_TASK_GRAPH_RUN_GROUP_ID' |
가장 최근 성공한 그래프 실행 그룹을 나타내는 범용 고유 식별자(UUID)를 반환. 값은 그래프 실행 그룹 전체에서 일관되며, 초기 그래프 실행의 루트 태스크가 시작될 때 결정돼요. |
'LAST_SUCCESSFUL_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP' |
가장 최근 성공한 그래프 실행 그룹에서 루트 태스크의 원래 예약된 타임스탬프를 반환. 값은 그래프 실행 그룹 전체에서 일관되며, 초기 그래프 실행의 루트 태스크가 시작될 때 결정돼요. |
반환 값 (Returns)
요청된 정보가 담긴 STRING 또는 TEXT를 반환해요.
사용 노트 (Usage Notes)
- SYSTEM$TASK_RUNTIME_INFO에는 CALL 대신 SELECT를 사용하는 것이 좋아요. SELECT SYSTEM$TASK_RUNTIME_INFO는 데이터 타입을 자동으로 변환하지만 CALL SYSTEM$TASK_RUNTIME_INFO는 변환하지 않기 때문이에요.
예제 (Examples)
디버깅 및 고유 출력 디렉터리 또는 파일 생성에 CURRENT_TASK_GRAPH_RUN_GROUP_ID를 CURRENT_ROOT_TASK_NAME과 함께 사용:
CREATE OR REPLACE TASK my_task ...
AS
...
-- Inside Python UDF
query_result = session.sql("""select
SYSTEM$TASK_RUNTIME_INFO('CURRENT_ROOT_TASK_NAME')
AS root_name,
SYSTEM$TASK_RUNTIME_INFO('CURRENT_TASK_GRAPH_RUN_GROUP_ID')
AS run_id""").collect()
current_root_task_name, current_graph_run_id = result.ROOT_NAME, result.RUN_ID
-- Logging information here
logger.debug(f"start training for {current_root_task_name} at run {current_graph_run_id}")
-- Create a unique output directory to store intermediate information
output_dir_name = f"{current_root_task_name}/{current_graph_run_id}/preprocessing.out"
with open(output_dir_name, "rw+") as f:
....
...;
스트리밍 입력 소스의 데이터를 처리하기 위해 CURRENT_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP를 LAST_SUCCESSFUL_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP와 함께 사용:
CREATE OR REPLACE TASK my_task ...
AS
...
INSERT INTO my_output_table
SELECT * FROM my_source_table
WHERE TRUE
...
AND TIMESTAMP BETWEEN
COALESCE(
SYSTEM$TASK_RUNTIME_INFO('LAST_SUCCESSFUL_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP')::timestamp_ltz,
'2023-07-01'
) AND SYSTEM$TASK_RUNTIME_INFO('CURRENT_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP')::timestamp_ltz
...;
고유 출력 디렉터리와 로그 줄을 생성하기 위해 LAST_SUCCESSFUL_TASK_GRAPH_RUN_GROUP_ID 사용:
CREATE OR REPLACE TASK my_task ...
AS
...
-- Inside Python UDF
query_result = session.sql("select
SYSTEM$TASK_RUNTIME_INFO('CURRENT_ROOT_TASK_NAME') AS root_name, SYSTEM$TASK_RUNTIME_INFO('LAST_SUCCESSFUL_TASK_GRAPH_RUN_GROUP_ID') AS last_run_id").collect()
current_root_task_name, last_graph_run_id = query_result.ROOT_NAME,query_result.LAST_RUN_ID
logger.log(f"graph name: {current_root_task_name}, last successful run: {last_graph_run_id}")
...;
더 알아보기
- Snowflake 시스템 함수 — 관련 시스템 함수 전체 목록