CURRENT_TASK_GRAPHS
CURRENT_TASK_GRAPHS
현재 예약되었거나 실행 중인 그래프 실행(graph run)의 상태를 반환하는 Information Schema 테이블 함수예요. 그래프는 단일 예약 태스크 또는 예약된 루트 태스크와 하나 이상의 자식 태스크로 구성된 태스크 그래프로 정의돼요.
출처: 공식 문서
본문
현재 예약되었거나 실행 중인 그래프 실행의 상태를 반환합니다. 그래프는 현재 단일 예약 태스크 또는 예약된 루트 태스크와 하나 이상의 자식 태스크로 구성된 태스크 그래프로 정의됩니다. 이 함수의 목적상, 루트 태스크는 단일 예약 태스크 또는 태스크 그래프의 루트 태스크를 의미합니다.
이 함수는 현재 실행 중이거나 향후 8일 이내에 다음으로 예약된 그래프 실행에 대한 세부 정보를 반환합니다. 지난 60분 동안 완료된 그래프 실행의 세부 정보를 검색하려면 COMPLETE_TASK_GRAPHS 테이블 함수를 조회하세요.
이 함수는 전체 Snowflake 계정 또는 지정된 루트 태스크에 대한 그래프 실행 세부 정보를 반환합니다.
구문 (Syntax)
CURRENT_TASK_GRAPHS(
[ RESULT_LIMIT => <integer> ]
[, ROOT_TASK_NAME => '<string>' ] )
인자 (Arguments)
모든 인자는 선택 사항입니다.
함수가 반환하는 최대 행 수를 지정하는 숫자입니다. 결과는 SCHEDULED_TIME 내림차순으로 반환됩니다. 일치하는 행 수가 결과 한도보다 크면 가장 최근의 예약 타임스탬프를 가진 그래프 실행이 지정된 한도까지 반환됩니다.
범위: 1 ~ 10000
기본값: 1000
루트 태스크의 이름을 지정하는 대소문자 구분 없는 문자열입니다. 한정되지 않은(non-qualified) 태스크 이름만 지원됩니다. 지정된 태스크에 대한 그래프 실행만 반환됩니다. 여러 태스크가 같은 이름을 가지면 함수는 각 태스크에 대한 그래프 실행을 반환합니다.
사용 참고 사항 (Usage notes)
이 함수 안에서 태스크 그래프를 보려면 호출 역할에 다음 권한 중 적어도 하나가 필요합니다:
-
태스크에 대한 OWNERSHIP 권한 (즉, 태스크 소유자).
-
태스크에 대한 MONITOR 또는 OPERATE 권한.
-
전역 MONITOR EXECUTION 권한.
-
ACCOUNTADMIN 역할.
역할에는 태스크를 저장하는 데이터베이스와 스키마에 대한 USAGE 권한도 있어야 하며, 그렇지 않으면 출력의 DATABASE_NAME과 SCHEMA_NAME 값이 NULL이 됩니다.
CURRENT_TASK_GRAPHS 함수가 조회되면 해당 태스크 이름과 결과 한도 인자가 먼저 적용되고, 이어서 지정된 경우 WHERE 및 LIMIT 절이 각각 적용됩니다. 또한 CURRENT_TASK_GRAPHS 함수는 SCHEDULED_TIME 내림차순으로 레코드를 반환합니다.
실제로 계정에서 실행 중인 태스크 그래프가 많으면 함수가 반환하는 결과에는 예약된 태스크만 포함될 수 있으며, 특히 RESULT_LIMIT 값이 비교적 낮을 때 그렇습니다.
Information Schema 테이블 함수를 호출할 때 세션에 INFORMATION_SCHEMA 스키마가 사용 중이어야 하거나 함수 이름이 완전히 한정되어야 합니다. 자세한 내용은 Snowflake Information Schema를 참고하세요.
출력 (Output)
이 함수는 다음 열들을 반환합니다:
| Column Name | Data Type | Description |
|---|---|---|
| ROOT_TASK_NAME | TEXT | 루트 태스크의 이름. |
| DATABASE_NAME | TEXT | 그래프를 포함하는 데이터베이스의 이름. |
| SCHEMA_NAME | TEXT | 그래프를 포함하는 스키마의 이름. |
| STATE | TEXT | 그래프 실행의 상태: SCHEDULED(루트 태스크가 미래 시간에 예약됨), EXECUTING(그래프에서 적어도 하나의 태스크 실행이 여전히 실행 중이거나 루트 태스크가 성공적으로 완료되어 하나 이상의 자식 태스크가 예약됨). 루트 태스크 실행의 상태가 SKIPPED이면 함수는 해당 실행에 대한 행을 반환하지 않습니다. |
| SCHEDULED_FROM | TEXT | 다음 중 하나: SCHEDULE(CREATE TASK의 SCHEDULE 또는 AFTER 절에 설명된 대로 태스크가 정상적으로 실행되도록 예약됨), EXECUTE_TASK(태스크가 EXECUTE TASK로 실행되도록 예약됨), MANUAL RETRY(태스크가 EXECUTE TASK … RETRY LAST로 실행되도록 예약됨), AUTOMATIC RETRY(태스크가 실패 시 재시도하도록 구성되었고 이전 실행이 실패함), TRIGGER(태스크의 WHEN 절에 있는 스트림에 새 데이터가 있어 태스크가 실행됨). 태스크 그래프의 자식 태스크 실행의 경우 이 열은 루트 태스크 실행과 같은 값을 반환합니다. |
| FIRST_ERROR_TASK_NAME | TEXT | 그래프에서 오류를 반환한 첫 번째 태스크의 이름. 오류를 생성한 태스크가 없으면 NULL을 반환. |
| FIRST_ERROR_CODE | NUMBER | FIRST_ERROR_TASK_NAME이 명명한 태스크가 반환한 오류의 오류 코드. 오류를 생성한 태스크가 없으면 NULL을 반환. |
| FIRST_ERROR_MESSAGE | TEXT | FIRST_ERROR_TASK_NAME이 명명한 태스크가 반환한 오류의 오류 메시지. 오류를 생성한 태스크가 없으면 NULL을 반환. |
| SCHEDULED_TIME | TIMESTAMP_LTZ | 루트 태스크가(가) 실행을 시작하도록 예약된 시간. 절대 정밀도를 보장하기 위해 최선을 다하지만 태스크가 예약 시간 전에 실행되지 않는다는 것만 보장합니다. |
| QUERY_START_TIME | TIMESTAMP_LTZ | 루트 태스크 정의의 쿼리가 실행을 시작한 시간. 이 타임스탬프는 QUERY_HISTORY가 반환한 쿼리의 시작 시간과 일치합니다. |
| NEXT_SCHEDULED_TIME | TIMESTAMP_LTZ | 단독 태스크 또는 (태스크 그래프의) 루트 태스크가 다음에 실행을 시작하도록 예약된 시간. 단, 단독 태스크 또는 태스크 그래프의 현재 실행이 SCHEDULED_TIME 시간에 시작해 제때 완료된다고 가정합니다. |
| ROOT_TASK_ID | TEXT | 태스크 그래프에서 루트 태스크의 고유 식별자. 이 ID는 같은 태스크의 SHOW TASKS 출력의 ID 열 값과 일치합니다. |
| GRAPH_VERSION | NUMBER | 실행되었거나 실행되도록 예약된 태스크 그래프의 버전을 식별하는 정수. |
| RUN_ID | NUMBER | 단독 태스크 또는 태스크 그래프의 루트 태스크가(가) 원래 실행을 시작하도록 예약된 시간. 형식은 epoch 시간(밀리초)입니다. 원래 예약 시간은 시스템이 재시도하거나 로드를 재조정하기 위해 같은 태스크를 다른 시간에 실행하도록 다시 예약하는 드문 경우를 나타냅니다. 그런 일이 발생하면 RUN_ID는 원래 예약 실행 시간을 보여주고 SCHEDULED_TIME은 다시 예약된 실행 시간을 보여줍니다. RUN_ID는 재시도 전의 현재 태스크/그래프 실행에 대한 고유 식별자가 아닐 수 있습니다. RUN_ID 대신 GRAPH_RUN_GROUP_ID 열을 사용할 수 있습니다. |
| ATTEMPT_NUMBER | NUMBER | 이 태스크를 실행하려는 시도 횟수를 나타내는 정수. 처음에는 1. |
| CONFIG | TEXT | 명시적으로 설정된 경우 그래프 실행 중에 사용된 그래프 수준 구성을 표시합니다. 그렇지 않으면 NULL을 표시. |
| GRAPH_RUN_GROUP_ID | TEXT | 그래프 실행의 식별자. 그래프 실행에 여러 태스크 실행이 있으면 각 태스크 실행은 같은 GRAPH_RUN_GROUP_ID를 표시합니다. GRAPH_RUN_GROUP_ID와 ATTEMPT_NUMBER의 조합은 그래프 실행을 고유하게 식별하는 데 사용할 수 있습니다. |
| BACKFILL_INFO | OBJECT | 향후 사용을 위해 예약됨. 모든 행에 대해 반환된 값은 NULL입니다. |
예제 (Examples)
계정의 가장 최근 그래프 실행 1000개(아직 실행 중이거나 미래에 예약된 것)를 검색합니다. 함수가 반환하는 최대 행 수는 기본적으로 1000으로 제한됩니다. 반환되는 행 수를 변경하려면 RESULT_LIMIT 인자 값을 수정하세요:
select *
from table(information_schema.current_task_graphs())
order by scheduled_time;
지정된 태스크에 대한 가장 최근 그래프 실행 10개(아직 실행 중이거나 미래에 예약된 것)를 검색합니다:
select *
from table(information_schema.current_task_graphs(
result_limit => 10,
root_task_name=>'MYTASK'));