EXECUTE TASK

작업에 대해 정의된 일정과 관계없이, 예약된 작업(독립 실행형 작업 또는 작업의 DAG(방향성 비순환 그래프) 에 있는 루트 작업)의 비동기식 단일 실행을 수동으로 트리거합니다.

루트 작업을 성공적으로 실행하면 마치 루트 작업이 정의된 일정에 따라 실행된 것처럼, DAG의 하위 작업은 선행 작업이 완료될 때 계단식 실행이 트리거됩니다.

또한 이전에 실패한 작업의 재실행을 수동으로 트리거할 수 있습니다.

참고 항목:

CREATE TASK , DROP TASK , SHOW TASKS

구문

EXECUTE TASK <name>

EXECUTE TASK <name> RETRY LAST
Copy

매개 변수

name

실행할 독립 실행형 작업 또는 루트 작업의 식별자입니다. 식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

RETRY LAST

작업이 실패한 위치에서 다시 시작하는 name 을 사용하여 작업의 DAG 의 마지막으로 실패한 작업을 다시 실행합니다.

작업을 다시 실행하려면 다음 조건이 충족되어야 합니다.

  • 마지막 DAG 실행은 FAILED 또는 CANCELED 상태여야 합니다.

  • DAG는 마지막으로 실행된 이후로 수정한 적이 없어야 합니다.

  • DAG는 지난 14일 동안 실행하거나 재시도한 적이 있어야 합니다.

작업 기록을 보려면 TASK_HISTORY 테이블 함수 또는 Snowsight 작업 기록 을 확인해 보십시오.

참고

RETRY LAST는 마지막으로 실패한 작업에서 실행을 시작하는 새 그래프 실행을 생성합니다.

특히 모든 FAILED 또는 CANCELED 작업 실행은 즉시 다시 실행되고, 모든 선행 작업이 성공적으로 실행되면 연결된 하위 작업이 예약됩니다.

또한 재시도로 생성된 새 DAG 실행의 ATTEMPT NUMBER는 이전에 실패한 그래프 실행보다 1 더 크며 재시도한 DAG 실행 또는 원래 DAG 실행과 동일한 GRAPH_RUN_GROUP_ID를 공유합니다.

사용법 노트

  • 작업을 실행하려면 작업에 대한 OWNERSHIP 또는 OPERATE 권한 중 하나가 필요합니다.

    EXECUTE TASK 명령이 작업 실행을 트리거하면 Snowflake는 작업에 대한 OWNERSHIP 권한이 있는 역할에, 작업에 할당된 웨어하우스에 대한 USAGE 권한, 그리고 전역 EXECUTE TASK 권한도 있는지 확인합니다. 이러한 권한이 없으면 오류가 생성됩니다.

    OPERATE 권한이 있는 다른 역할이 EXECUTE TASK를 사용하여 작업을 실행하더라도 작업은 항상 원래 소유자 역할의 권한으로 실행됩니다.

  • SQL 명령은 독립 실행형 작업 또는 DAG의 루트 작업만 실행할 수 있습니다. 하위 작업이 입력되면 명령은 사용자 오류를 반환합니다.

  • 독립 실행형 또는 루트 작업을 수동으로 실행하면 작업 버전이 설정됩니다. 독립 실행형 작업 또는 전체 DAG가 이 버전으로 실행을 완료합니다. 작업 버전에 대한 자세한 내용은 실행 버전 관리 섹션을 참조하십시오.

  • 일시 중단된 루트 작업은 작업을 다시 시작함 없이 실행됩니다. 이 SQL 명령을 실행하기 전에 루트 작업을 명시적으로 다시 시작할 필요가 없습니다. 그러나 EXECUTE TASK는 DAG에서 하위 작업을 자동으로 다시 시작하지 않습니다. 이 명령은 일시 중단된 모든 하위 작업을 건너뜁니다.

    DAG에서 루트 작업에 연결된 모든 종속 작업을 재귀적으로 다시 시작하려면 각 작업을 개별적으로 활성화하는 대신 SYSTEM$TASK_DEPENDENTS_ENABLE 함수를 쿼리하십시오(ALTER TASK … RESUME 사용).

    새 작업 또는 수정된 DAG를 테스트할 때 가장 좋은 방법으로서, 의도한 프로덕션 일정에 따라 루트 작업이 실행되도록 설정하되 일시 중단된 상태로 두십시오. DAG를 성공적으로 테스트했으면 루트 작업을 다시 시작합니다. 테스트를 위해 DAG에서 일시 중단된 하위 작업을 다시 시작해야 합니다. 그렇지 않으면 DAG를 실행하는 동안 이러한 작업을 건너뛰게 됩니다.

  • 루트 작업이 현재 실행 중인 경우(즉, TASK_HISTORY 출력에서 EXECUTING 상태), EXECUTE TASK 명령은 현재 실행이 완료된 직후에 시작하도록 작업의 다른 실행을 예약합니다.

  • 루트 작업이 현재 예약되어 있는 경우(즉, TASK_HISTORY 출력에서 SCHEDULED 상태), 예약된 실행은 평소처럼 요청된 실행으로 대체되며 현재 타임스탬프가 예약된 시간입니다. 그러나 예약된 시간이 경과했지만 작업이 아직 EXECUTING 상태로 전환되지 않은 경우, 예약된 실행은 평소처럼 발생합니다. 즉, 예약된 실행은 요청된 실행으로 대체되지 않습니다.

  • 루트 작업에 설정된 ALLOW_OVERLAPPING_EXECUTION 매개 변수는 DAG의 중복 인스턴스가 허용되는지 여부를 결정합니다. 요청된 작업 실행의 동작은 매개 변수 값에 따라 다릅니다.

    ALLOW_OVERLAPPING_EXECUTION = FALSE (기본값)

    현재 실행 중인 DAG의 인스턴스가 없으면 EXECUTE TASK 명령은 즉시 시작하도록 DAG의 다른 실행을 예약합니다.

    루트 작업 또는 DAG의 하위 작업이 현재 실행 중인 경우(즉, TASK_HISTORY 출력에서 EXECUTING 상태), EXECUTE TASK 명령은 DAG 내 마지막 작업 의 현재 실행이 완료된 직후에 시작하도록 DAG의 다른 실행을 예약합니다. 즉, 작업 DAG의 현재 인스턴스는 요청된 작업이 시작되기 전에 실행을 완료해야 합니다.

    루트 작업이 현재 예약되어 있는 경우(즉, TASK_HISTORY 출력에서 SCHEDULED 상태), 예약된 실행은 요청된 실행으로 대체되며 현재 타임스탬프가 예약된 시간입니다. 그러나 예약된 시간이 경과했지만 작업이 아직 EXECUTING 상태로 전환되지 않은 경우, 예약된 실행이 발생합니다. 즉, 예약된 실행은 요청된 실행으로 대체되지 않습니다.

    ALLOW_OVERLAPPING_EXECUTION = TRUE

    현재 실행 중인 DAG의 인스턴스가 없거나 DAG의 하위 작업만 인스턴스에서 실행 중인 경우 EXECUTE TASK 명령은 즉시 시작하도록 DAG의 다른 실행을 예약합니다.

    루트 작업이 현재 DAG의 인스턴스에서 실행 중인 경우 EXECUTE TASK 명령은 루트 작업 의 현재 실행이 완료된 직후 시작하도록 작업 DAG의 다른 실행을 예약합니다.

    루트 작업이 현재 DAG의 인스턴스에서 예약된 경우(즉, TASK_HISTORY 출력에서 SCHEDULED 상태), 예약된 실행은 평소처럼 요청된 실행으로 대체되며 현재 타임스탬프가 예약된 시간입니다. 그러나 예약된 시간이 경과했지만 작업이 아직 EXECUTING 상태로 전환되지 않은 경우, 예약된 실행이 발생합니다. 즉, 예약된 실행은 요청된 실행으로 대체되지 않습니다.

  • EXECUTE TASK 명령에 대한 호출은 동기식으로 처리되지만, 작업 실행은 비동기식 작업입니다.

  • 이 SQL 명령에 의해 트리거된 작업 실행은 명령 실행 시 최신이었던 작업 버전 을 사용합니다. 명령 실행 이후 이되 실행 시작 전에 작업이 수정된 경우, 다음 예약된 실행까지 변경 사항이 적용되지 않습니다.

    작업 실행이 진행되는 동안 이 SQL 명령이 여러 번 실행되는 경우, 마지막 명령을 제외한 모든 명령 실행이 무시됩니다. 다음 실행이 시작되는 경우, 마지막 실행 수행 시 최신이었던 작업 버전이 사용됩니다.

  • 예기치 않은 오류로 작업이 실패하면 오류에 대한 알림을 받을 수 있습니다. 작업 오류 알림 구성에 대한 자세한 내용은 작업에 대한 오류 알림 활성화하기 섹션을 참조하십시오.

  • 작업 정보를 보려면 다음 중 하나를 수행하십시오.

    • Snowsight 를 열고 Activity » Task History 를 선택합니다.

    • COMPLETE_TASK_GRAPHS 테이블 함수를 호출하고 결과를 검사합니다.

mytask 라는 작업 실행을 수동으로 트리거합니다.

EXECUTE TASK mytask;
Copy