카테고리:

Information Schema , 테이블 함수

TASK_HISTORY

이 테이블 함수를 사용하여 지정된 날짜 범위 내의 작업 사용 기록을 쿼리할 수 있습니다. 이 함수는 전체 Snowflake 계정, 지정된 작업 또는 작업 그래프에 대한 작업 사용 기록을 반환합니다.

구문

TASK_HISTORY(
      [ SCHEDULED_TIME_RANGE_START => <constant_expr> ]
      [, SCHEDULED_TIME_RANGE_END => <constant_expr> ]
      [, RESULT_LIMIT => <integer> ]
      [, TASK_NAME => '<string>' ]
      [, ERROR_ONLY => { TRUE | FALSE } ]
      [, ROOT_TASK_ID => '<string>'] )
Copy

인자

모든 인자는 선택 사항입니다.

SCHEDULED_TIME_RANGE_START => constant_expr , . SCHEDULED_TIME_RANGE_END => constant_expr

작업 실행이 예약된, 지난 7일 이내의 시간 범위(TIMESTAMP_LTZ 형식)입니다. 시간 범위가 지난 7일 이내에 속하지 않는 경우, 오류가 반환됩니다.

  • SCHEDULED_TIME_RANGE_END 가 지정되지 않은 경우, 함수는 이미 완료되었거나, 현재 실행 중이거나, 미래의 예약된 작업을 반환합니다.

  • SCHEDULED_TIME_RANGE_ENDCURRENT_TIMESTAMP 인 경우, 함수는 이미 완료되었거나, 현재 실행 중인 작업을 반환합니다. 현재 시간 직전에 실행된 작업은 여전히 예약된 것으로 식별될 수 있습니다.

  • 이미 완료되었거나 현재 실행 중인 작업만 쿼리하려면 WHERE query_id IS NOT NULL 을 필터로서 포함하십시오. TASK_HISTORY 출력의 QUERY_ID 열은 작업 실행이 시작된 경우에만 채워집니다.

참고

시작 또는 종료 시간을 지정하지 않는 경우, 지정된 RESULT_LIMIT 값까지를 범위로 하여 가장 최근 작업이 반환됩니다.

RESULT_LIMIT => integer

함수가 반환하는 최대 행 수를 지정하는 숫자입니다.

일치하는 행의 수가 이 제한보다 큰 경우, 지정된 제한까지를 범위로 하여 타임스탬프가 가장 최근인 작업 실행이 반환됩니다.

범위: 1 ~ 10000

기본값: 100.

TASK_NAME => string

작업을 지정하는, 대/소문자를 구분하지 않는 문자열입니다. 정규화되지 않은 작업 이름만 지원됩니다. 지정된 작업의 실행만 반환됩니다. 여러 작업의 이름이 같은 경우, 이 함수는 이러한 작업 각각에 대한 기록을 반환합니다.

ERROR_ONLY => TRUE | FALSE

TRUE로 설정 시, 이 함수는 실패하거나 취소된 작업 실행만 반환합니다.

ROOT_TASK_ID =>string

작업 그래프의 루트 작업에 대한 고유 식별자입니다. 이 ID는 동일한 작업에 대한 SHOW TASKS 출력의 ID 열 값과 일치합니다. 작업 그래프의 일부인 루트 작업 및 하위 작업의 기록을 표시하려면 ROOT_TASK_ID를 지정하십시오.

사용법 노트

  • 이 함수는 ACCOUNTADMIN 역할, 작업 소유자 또는 전역 MONITOR EXECUTION 권한이 있는 역할에 대한 결과만 반환합니다. 역할에 MONITOR EXECUTION 권한이 있는 데다, 작업을 저장하는 데이터베이스 및 스키마에 대한 USAGE 권한도 있는 경우를 제외하고, 출력의 DATABASE_NAME 및 SCHEMA_NAME 값은 NULL입니다.

  • 이 함수는 RESULT_LIMIT 인자 값에 설정된 최대 10,000개의 행을 반환합니다. 기본값은 100 입니다. 이 제한을 피하려면 TASK_HISTORY 뷰 (Account Usage)를 사용하십시오.

  • TASK_HISTORY 함수를 쿼리할 때 작업 이름, 시간 범위, 결과 제한 인자가 먼저 적용되고, 지정된 경우 각각 WHERE 및 LIMIT 절이 뒤따릅니다. 또한, TASK_HISTORY 함수는 SCHEDULED_TIME의 내림차순으로 기록을 반환합니다. SUCCEEDED, FAILED 또는 CANCELLED 상태의 작업은 일반적으로 더 일찍 예약되므로 일반적으로 나중에 검색 결과에 반환됩니다.

  • 실제로, 계정에서 실행 중인 작업이 많은 경우, 함수가 반환한 결과에는 완료된 작업이 예상보다 적거나 예약된 작업만 포함될 수 있습니다. 이미 실행된 작업의 기록을 쿼리하려면 SCHEDULED_TIME_RANGE_START => constant_exprSCHEDULED_TIME_RANGE_END => constant_expr 인자 조합을 사용하십시오.

  • Information Schema 테이블 함수를 호출할 때 세션에는 사용 중인 INFORMATION_SCHEMA 스키마가 있거나 또는 함수 이름이 정규화되어야 합니다. 자세한 내용은 Snowflake Information Schema 섹션을 참조하십시오.

  • 이 함수는 지난 7일 동안 실행된 모든 실행 또는 향후 8일 이내의 예약된 다음 실행을 반환할 수 있습니다.

  • 클라우드 서비스 오류 중에 실행되는 작업은 이 함수의 결과에 중복 항목으로 나타날 수 있습니다. 클라우드 서비스 오류가 발생하는 동안 Snowflake가 작업을 다시 실행하는 바람에 해당 작업은 작업 SCHEDULED_TIME이 서로 다른 두 개의 UUID를 가지게 될 수 있습니다. TASK_HISTORY 뷰 는 재실행 작업의 마지막 UUID만 표시합니다.

  • 작업 그래프 실행의 모든 작업은 동일한 작업 기록 출력을 표시합니다.

출력

이 함수는 다음 열을 반환합니다.

열 이름

데이터 타입

설명

QUERY_ID

TEXT

작업에서 실행한 SQL 문의 ID입니다. 문 또는 저장 프로시저의 실행에 대한 추가 세부 정보를 위해 QUERY_HISTORY 뷰와 조인될 수 있습니다.

NAME

TEXT

작업의 이름입니다.

DATABASE_NAME

TEXT

작업을 포함하는 데이터베이스의 이름입니다.

SCHEMA_NAME

TEXT

작업을 포함하는 스키마의 이름입니다.

QUERY_TEXT

TEXT

SQL 문의 텍스트입니다.

CONDITION_TEXT

TEXT

실행 여부를 결정할 때 작업이 평가하는 WHEN 조건의 텍스트입니다.

STATE

TEXT

작업 상태:

  • SCHEDULED: 실행이 예정되어 있습니다.

  • EXECUTING: 현재 실행 중입니다.

  • SUCCEEDED: 실행에 성공했습니다.

  • FAILED: 실행에 실패했습니다.

  • FAILED_AND_AUTO_SUSPENDED: 작업이 실패하여 자동으로 일시 중단되었습니다.

  • CANCELLED: 실행이 취소되었습니다.

  • SKIPPED 는 작업 실행이 시작되었지만 작업 정의에서 선택적 WHEN 매개 변수가 FALSE 값을 반환했음을 나타냅니다. 따라서 이 실행으로 웨어하우스가 재개되지 않거나(작업에서 고객이 관리하는 컴퓨팅 리소스를 사용하는 경우) 작업 정의에서 SQL 코드를 실행되지 않았습니다.

ERROR_CODE

NUMBER

문이 오류를 반환한 경우 오류 코드입니다.

ERROR_MESSAGE

TEXT

문이 오류를 반환한 경우 오류 메시지입니다.

SCHEDULED_TIME

TIMESTAMP_LTZ

작업이 실행을 시작하도록 예약된 시간입니다. 저희는 절대적인 정확성을 보장하기 위해 최선을 다하지만, 예약된 시간 이전에 작업이 실행되지 않는다는 것만 보장합니다.

QUERY_START_TIME

TIMESTAMP_LTZ

작업 정의의 쿼리가 실행을 시작한 시간이거나, 또는 SCHEDULED_TIME이 미래의 시점이거나 현재 예약된 실행이 아직 시작되지 않은 경우 NULL입니다. 이 타임스탬프는 QUERY_HISTORY에서 반환된 쿼리의 시작 시간과 일치합니다.

NEXT_SCHEDULED_TIME

TIMESTAMP_LTZ

SCHEDULED_TIME 시간에 시작된 독립 실행형 작업 또는 작업 그래프의 현재 실행이 시간에 맞춰 완료된다고 가정할 때, 독립 실행형 또는 루트 작업(작업의 작업 그래프 에 있음)의 다음 실행 시작이 예약된 시간입니다.

COMPLETED_TIME

TIMESTAMP_LTZ

작업이 완료된 시간입니다. 또는 SCHEDULED_TIME 이 미래이거나 작업이 여전히 실행 중인 경우 NULL입니다.

ROOT_TASK_ID

TEXT

작업 그래프의 루트 작업에 대한 고유 식별자입니다. 이 ID는 동일한 작업에 대한 SHOW TASKS 출력의 ID 열 값과 일치합니다.

GRAPH_VERSION

NUMBER

실행되었거나 실행되도록 예약된 작업 그래프의 버전을 식별하는 정수입니다. 값이 증가할 때마다 이는 작업 그래프의 작업에 대한 하나 이상의 수정 사항을 나타냅니다. 루트 작업이 다시 만들어지면(CREATE OR REPLACE TASK 사용) 버전 번호가 1부터 다시 시작됩니다.

RUN_ID

NUMBER

작업 그래프 의 독립 실행형 또는 루트 작업이 실행을 시작하도록 원래 예약된 시간입니다. 형식은 Epoch 시간(밀리초)입니다. . . 원래 예약된 시간은 시스템이 재시도 또는 로딩 균형 재조정 목적으로 동일 작업을 다른 시간에 실행하도록 다시 예약할 수 있는 드문 경우를 나타냅니다. 이 경우, RUN_ID는 원래 예약된 실행 시간을 표시하고 SCHEDULED_TIME은 다시 예약된 실행 시간을 표시합니다. . . RUN_ID는 재시도 전 현재 작업/그래프 실행에 대한 고유 식별자가 아닐 수 있습니다. RUN_ID 대신에 GRAPH_RUN_GROUP_ID 열을 사용할 수 있습니다.

RETURN_VALUE

TEXT

작업 그래프에서 선행 작업에 대해 설정된 값입니다. 반환 값은 선행 작업에서 SYSTEM$SET_RETURN_VALUE 함수를 호출하여 명시적으로 설정됩니다.

SCHEDULED_FROM

TEXT

다음 중 하나:

  • SCHEDULE: CREATE TASK 의 SCHEDULE 또는 AFTER 절에 설명된 대로 작업이 정상적으로 실행되도록 예약되었습니다.

  • EXECUTE TASK: 작업이 EXECUTE TASK 를 사용하여 실행되도록 예약되었습니다.

  • MANUAL RETRY: 작업이 EXECUTE TASK … RETRY LAST 를 사용하여 실행되도록 예약되었습니다.

작업 그래프에서 하위 태스크를 실행하는 경우 이 열에서는 루트 태스크 실행과 동일한 값을 반환합니다.

ATTEMPT_NUMBER

NUMBER

이 작업을 실행하려는 시도 횟수를 나타내는 정수입니다. 처음에는 1입니다.

CONFIG

TEXT

루트 작업에 대해 설정된 경우 그래프 수준 구성을 표시하고, 그렇지 않은 경우 NULL을 표시합니다.

QUERY_HASH

TEXT

표준화된 SQL 텍스트를 기반으로 계산된 해시 값 입니다.

QUERY_HASH_VERSION

NUMBER

QUERY_HASH 계산에 사용되는 논리 버전 입니다.

QUERY_PARAMETERIZED_HASH

TEXT

매개 변수가 있는 쿼리를 기반으로 계산된 해시 값 입니다.

QUERY_PARAMETERIZED_HASH_VERSION

NUMBER

QUERY_PARAMETERIZED_HASH 계산에 사용되는 논리 버전 입니다.

GRAPH_RUN_GROUP_ID

NUMBER

그래프 실행의 식별자입니다. 그래프 실행에 여러 작업 실행이 있는 경우 각 작업 실행은 동일한 GRAPH_RUN_GROUP_ID 를 표시합니다. GRAPH_RUN_GROUP_ID 와 ATTEMPT_NUMBER 의 조합을 사용하여 그래프 실행을 고유하게 식별할 수 있습니다.

BACKFILL_INFO

OBJECT

향후 사용을 위해 예약되어 있습니다. 모든 행에 대해 반환된 값은 NULL입니다.

계정에서 가장 최근에 실행된 100개의 작업(완료됨, 여전히 실행 중 또는 미래에 예약됨)을 다음과 같이 검색합니다. 함수가 반환하는 최대 행 수는 기본적으로 100개로 제한됩니다.

SELECT *
  FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY())
  ORDER BY SCHEDULED_TIME;
Copy

지난 7일 내에, 지정된 30분 시간 블록 내에서 계정의 작업에 대한 실행 기록을 다음과 같이 검색합니다.

SELECT *
  FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(
    SCHEDULED_TIME_RANGE_START=>TO_TIMESTAMP_LTZ('2018-11-9 12:00:00.000 -0700'),
    SCHEDULED_TIME_RANGE_END=>TO_TIMESTAMP_LTZ('2018-11-9 12:30:00.000 -0700')));
Copy

지난 1시간 내에 예약된 지정된 작업(완료됨, 여전히 실행 중 또는 미래에 예약됨)의 가장 최근 실행 10개를 다음과 같이 검색합니다.

SELECT *
  FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(
    SCHEDULED_TIME_RANGE_START=>DATEADD('hour',-1,current_timestamp()),
    RESULT_LIMIT => 10,
    TASK_NAME=>'mytask'));
Copy

참고

완료되었거나 여전히 실행 중인 작업만 검색하려면 WHERE query_id IS NOT NULL 을 사용하여 쿼리를 필터링하십시오. 이 필터는 RESULT_LIMIT 가 반환된 결과를 이미 줄인 후에 적용되므로, 작업 1개가 예약되었지만 아직 시작되지 않은 경우 쿼리가 작업을 9개 반환할 수 있습니다.

지정된 루트 작업의 작업 그래프에서 모든 작업의 실행 기록을 검색합니다.

SELECT *
  FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(ROOT_TASK_ID=>'d4b89013-c942-465c-bcb8-e7037a932b04'));
Copy

가장 최근에 쿼리된 루트 작업의 작업 그래프에서 모든 작업의 실행 기록을 검색합니다.

DESC TASK my_task
SET task_id=(SELECT "id" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())));
SELECT *
  FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(ROOT_TASK_ID=>$task_id));
Copy