작업 소개

작업을 사용해 데이터 파이프라인에서 비즈니스 프로시저를 자동화, 예약, 최적화할 수 있습니다.

Snowflake에서 작업은 다음 유형의 함수 중 하나를 실행할 수 있습니다.

  • 단일 SQL 문.

  • 저장 프로시저에 대한 호출입니다.

  • Snowflake Scripting을 사용한 프로시저 논리.

보고서 생성 또는 주기율표 유지 관리 수행과 같은 복잡한 프로시저의 경우 작업 그래프 를 만들어 작업을 결합합니다. 추출, 로드, 변환(ELT) 워크플로에서와 같이 새 데이터 또는 변경된 데이터가 들어올 때 지속적으로 처리하려면 트리거된 작업을 사용하여 작업을 테이블 스트림 과 결합합니다.

참고

테이블 스키마 진화 은 작업에서 지원되지 않습니다.

이 항목의 내용:

작업 생성 워크플로 개요

  1. 다음 단계에 따라 명령을 실행할 수 있는 작업 관리자 역할 을 만듭니다.

  2. CREATE TASK 를 사용하여 새 작업을 정의합니다. 작업은 기본적으로 일시 중단됩니다. 작업 매개 변수 설정에 대한 자세한 내용은 다음을 참조하십시오.

  3. EXECUTE TASK 를 사용하여 작업을 수동으로 테스트합니다.

  4. 작업을 변경하거나 ALTER TASK … RESUME 을 사용하여 계속 실행되도록 허용합니다. 작업 실행에 대한 자세한 내용은 다음을 참조하십시오.

컴퓨팅 리소스

작업에는 SQL , Python, Java, Scala 함수 및 저장 프로시저를 실행하기 위한 컴퓨팅 리소스가 필요합니다. 각 작업에 대해 서버리스 작업 을 생성하여 Snowflake가 리소스를 관리하도록 허용할지, 사용자 관리 가상 웨어하우스 모델 을 사용하여 직접 관리할지 선택할 수 있습니다.

서버리스 작업

이 모델을 사용하면 작업은 Snowflake가 관리하는 컴퓨팅에서 실행됩니다. Snowflake는 각 워크로드에 요구 사항에 따라 리소스 크기를 자동으로 조정합니다.

정기적으로 실행되는 작업은 서버리스 컴퓨팅 모델에 적합한 후보입니다. 이 모델은 현재 실행 중인 작업이 거의 없는 활용도가 낮은 웨어하우스가 있는 경우에도 권장됩니다.

Snowflake는 동일한 작업의 가장 최근 실행에 대한 통계의 동적 분석을 기반으로 주어진 실행에 이상적인 컴퓨팅 리소스 크기를 결정합니다.

제한 사항

서버리스 컴퓨팅 모델을 사용하여 작업 만들기

CREATE TASK 또는 ALTER TASK 를 사용하는 경우 WAREHOUSE 매개 변수를 생략하십시오.

작업을 실행하는 역할에는 글로벌 EXECUTE MANAGED TASK 권한이 있어야 합니다. 작업의 액세스 제어 요구 사항에 대한 자세한 내용은 작업 보안 섹션을 참조하십시오.

다음 매개 변수를 설정하여 서버리스 작업의 비용과 성능을 어느 정도 제어할 수 있습니다.

  • SERVERLESS_TASK_MAX_STATEMENT_SIZE: 예상치 못한 비용을 방지하기 위한 웨어하우스의 최대 크기입니다.

  • SERVERLESS_TASK_MIN_STATEMENT_SIZE: 예측 가능한 성능을 위한 웨어하우스의 최소 크기입니다.

  • TARGET_COMPLETION_INTERVAL: 원하는 작업 완료 시간입니다.

이러한 설정이 지정되면 우선순위는 다음과 같습니다.

  • SERVERLESS_TASK_MAX_STATEMENT_SIZE

  • SERVERLESS_TASK_MIN_STATEMENT_SIZE

  • TARGET_COMPLETION_INTERVAL

Snowflake가 서버리스 컴퓨팅 리소스를 추정하는 방법

Snowflake는 대상 시간 프레임과 이전 작업 실행의 성능을 기반으로 작업을 완료하는 데 필요한 컴퓨팅 리소스를 자동으로 추정합니다.

대상 시간 프레임은 TARGET_COMPLETION_INTERVAL 을 사용하여 설정할 수 있습니다. 이 값을 설정하지 않으면 Snowflake는 다음 예약된 실행 시간 전에 완료되도록 서버리스 컴퓨팅 리소스의 크기를 조정합니다.

작업이 완료된 후 Snowflake는 다음과 같이 필요한 컴퓨팅 리소스를 추정합니다.

  • 작업이 너무 빨리 완료되는 경우(대상 시간 프레임보다 적은 시간 프레임 내), Snowflake는 후속 실행에서 리소스를 웨어하우스 크기만큼 축소 합니다.

  • 작업이 너무 느리게 완료되는 경우(대상 시간 프레임보다 많은 시간 프레임 내), Snowflake는 후속 실행에서 리소스를 하나씩 웨어하우스 크기 를 축소합니다.

예 1: 대상 완료 간격을 120분으로 하여 매시간 실행되는 서버리스 작업을 만듭니다.

CREATE TASK SCHEDULED_T1 SCHEDULE='USING CRON 0 * * * * America/Los_Angeles'
TARGET_COMPLETION_INTERVAL='120 MINUTE' AS SELECT 1;
Copy

TARGET_COMPLETION_INTERVAL 을 상대적으로 긴 기간으로 설정하면 작업 실행이 더 오래 실행되는 것이 허용됨을 나타냅니다. Snowflake는 지정된 TARGET_COMPLETION_INTERVAL 내에서 작업 실행이 완료되도록 서버리스 컴퓨팅의 크기를 자동으로 조정합니다.

예 2: 대상 완료 시간을 10분으로 설정하여 매시간 실행되는 서버리스 작업을 만듭니다.

CREATE TASK SCHEDULED_T2 SCHEDULE='USING CRON 0 * * * * UTC'
TARGET_COMPLETION_INTERVAL='10 MINUTE'
SERVERLESS_TASK_MAX_STATEMENT_SIZE='LARGE'
AS SELECT 1;
Copy

TARGET_COMPLETION_INTERVAL 을 비교적 짧은 기간으로 설정하면 작업을 빠르게 완료하는 것을 선호한다는 뜻입니다. Snowflake는 SERVERLESS_TASK_MAX_STATEMENT_SIZE 에 도달할 때까지 지정된 TARGET_COMPLETION_INTERVAL 내에서 작업 실행이 완료되도록 서버리스 컴퓨팅의 크기를 자동으로 조정합니다.

예 3: 대상 완료 간격과 최소 및 최대 웨어하우스 크기 범위 내에서 특정 시점에 하루에 한 번 예약된 서버리스 작업을 생성합니다.

CREATE TASK SCHEDULED_T3 SCHEDULE='USING CRON 0 0 * * * UTC'
TARGET_COMPLETION_INTERVAL='180 M'
SCHEDULING_MODE = 'FLEXIBLE'
SERVERLESS_TASK_MIN_STATEMENT_SIZE='MEDIUM' SERVERLESS_TASK_MAX_STATEMENT_SIZE='LARGE' AS SELECT 1;
Copy

이 구성을 사용하면 서버리스 작업은 하루에 한 번 자정에 최소 3시간(TARGET_COMPLETION_INTERVAL)의 Medium 웨어하우스에서 실행됩니다. Snowflake는 SERVERLESS_TASK_MAX_STATEMENT_SIZE 에 도달할 때까지 지정된 TARGET_COMPLETION_INTERVAL 내에서 작업 실행이 완료되도록 서버리스 컴퓨팅의 크기를 자동으로 조정합니다. SCHEDULING_MODE 를 유연하게 설정하면 하루 중 언제든지 작업을 시작할 수 있습니다.

예 4: 대상 완료 간격 없이 하루에 한 번 예약된 서버리스 작업을 만듭니다.

CREATE TASK SCHEDULED_T4 SCHEDULE='USING CRON 0 0 * * * UTC'
SERVERLESS_TASK_MAX_STATEMENT_SIZE='LARGE' AS SELECT 1;
Copy

이 구성을 사용하면 서버리스 작업이 하루에 한 번 자정에 실행됩니다. 일련의 작업 실행 시간이 다음 예약된 시간까지 완료되지 않으면, Snowflake는 SERVERLESS_TASK_MAX_STATEMENT_SIZE 에 도달할 때까지 지정된 SCHEDULE 내에서 작업 실행이 완료되도록 서버리스 컴퓨팅의 크기를 자동으로 조정합니다.

매개 변수 및 구문에 대한 자세한 내용은 CREATE TASKALTER TASK 섹션을 참조하십시오.

사용자 관리형 가상 웨어하우스 모델

이 모델을 사용하면 각 워크로드에 사용되는 컴퓨팅 리소스를 완벽하게 제어할 수 있습니다.

이 모델은 예측할 수 없는 컴퓨팅 리소스 로딩을 수동으로 관리하려는 경우에 권장됩니다. 자동 일시 중단 및 자동 재개 가 활성화된 멀티클러스터 웨어하우스 도 크레딧 사용을 조절하는 데 도움이 될 수 있습니다.

웨어하우스 크기 선택하기

기존 웨어하우스를 사용하여 개별 작업에 컴퓨팅 리소스를 제공하기로 선택한 경우 웨어하우스 고려 사항 에 설명된 모범 사례를 따르십시오. 작업의 컴퓨팅 요구 사항을 파악하려면 웨어하우스 크기와 클러스터링을 기반으로 다양한 웨어하우스를 사용하여 단일 작업의 평균 실행 시간 또는 작업 그래프 를 분석합니다. 또한 웨어하우스가 여러 프로세스에 의해 공유되는지 여부도 고려해야 합니다.

작업의 평균 실행 시간을 분석하려면 TASK_HISTORY Account Usage 뷰 를 쿼리합니다. 작업의 예정 시간과 완료 시간 간의 평균 차이는 작업의 예상 평균 실행 시간입니다. 이 차이에는 다른 프로세스가 웨어하우스에서 컴퓨팅 리소스를 사용하는 동안 작업이 큐에서 대기된 시간이 포함됩니다.

작업 그래프의 경우, 이전 작업의 실행이 끝나고 하위 작업이 시작되면 잠시 지연이 발생합니다. 동시에 실행되는 여러 하위 작업을 수용할 수 있을 만큼 충분히 큰 웨어하우스 크기를 선택합니다.

다음 다이어그램은 단일 작업이 20초 동안 대기한 다음 40초 동안 실행된 1분의 윈도우를 보여줍니다. 이는 작업이 예약된 후 처음 20초 동안 다른 프로세스가 웨어하우스 리소스를 사용했음을 의미합니다.

작업 배치 윈도우 예시

다음 다이어그램은 각 실행을 완료하는 데 평균 5분이 필요한 작업 그래프를 보여줍니다. 다이어그램은 완료할 작업 그래프의 2회 실행에 대한 창을 보여줍니다. 이 윈도우는 루트 작업이 시작되도록 예약된 시간부터 마지막 하위 작업의 실행이 완료될 때까지 계산됩니다.

이 예제에서, 작업 그래프가 실행되는 웨어하우스는 다른 동시 작업과 공유됩니다. 이러한 동시 작업은 작업 그래프의 각 작업 실행이 완료되고 다음 작업 실행이 시작되기 전에 사용 가능한 모든 리소스를 소비합니다. 결과적으로, 각 작업의 윈도우에는 다른 작업이 완료되고 컴퓨팅 리소스를 확보할 때까지 기다리는 동안 약간의 큐가 포함됩니다.

작업 그래프 배치 윈도우 예시

작업 실행하기

이 섹션에서는 작업을 예약하고 실행하는 다양한 방법, 작업 실패가 처리되는 방법, 작업 버전이 결정되는 방법에 대해 설명합니다.

작업 예약하기

작업은 일반적으로 일정에 따라 실행됩니다.

CREATE TASK 를 사용하여 작업을 생성할 때 일정을 정의할 수 있으며, 이후에는 ALTER TASK 를 사용하여 일정을 정의할 수 있습니다. 작업을 작업 그래프로 결합하는 경우 루트 작업에서 CREATE TASK 및 ALTER TASK 명령을 사용하여 예약을 정의합니다.

Snowflake는 일정에 따라 한 번에 하나의 작업 인스턴스만 실행되도록 보장합니다. 다음으로 예약된 실행 시간이 발생할 때 작업이 계속 실행 중이면 예약된 시간을 건너뜁니다.

Snowflake는 서버리스 작업을 위해 자동으로 컴퓨팅 리소스의 크기를 조정하고 확장합니다. 사용자 관리 작업의 경우 일정 내에서 워크로드를 완료할 수 있도록 작업에 적합한 웨어하우스 크기를 선택합니다. 자세한 내용은 웨어하우스 크기 선택하기 섹션을 참조하십시오.

작업 예약 및 일광 절약 시간제

작업 정의의 cron 식은 타임존 지정을 지원합니다. 표준 시간에서 일광 절약 시간제(또는 그 반대로)로 전환되는 날의 특정 시간에 예약된 작업에서는 예기치 않은 동작이 수행될 수 있습니다.

예:

  • 서머타임에서 표준시로 변경하는 동안 미국/로스앤젤레스 타임존(0 1 * * * America/Los_Angeles)에서 AM 1시에 시작하도록 예약된 작업은 두 번 실행됩니다. 1 AM 이후에 현지 시간으로 1:59:59 AM이 1:00:00 AM으로 바뀌면 다시 1 AM이 됩니다.

  • 표준 시간에서 일광 절약 시간제로 변경 기간 동안에는 현지 시간이 AM 1:59:59에서 AM 3:00:00로 변경되므로 미국/로스_앤젤레스 타임존(0 2 * * * America/Los_Angeles) AM 2시에 시작하도록 예약된 작업은 실행되지 않습니다.

일광 절약 시간제로 인한 예기치 않은 작업이 실행되지 않도록 하려면 다음을 고려하십시오.

  • 1 AM에서 3 AM 사이에서 실행되도록 작업을 예약하지 마십시오.

  • 시간 변경을 보정하기 위해 매년 두 번씩 1 AM에서 3 AM 사이에 예약된 작업의 cron 식을 수동으로 조정하십시오.

  • UTC와 같이 일광 절약 시간제를 적용하지 않는 시간 형식을 사용하십시오.

트리거된 작업

트리거된 작업을 사용하면 정의된 스트림에 새 데이터가 있을 때마다 자동으로 작업을 실행할 수 있습니다. 이렇게 하면 새로운 데이터의 가용성을 예측할 수 없을 때 소스를 자주 폴링할 필요가 없습니다. 또한 데이터가 즉시 처리되므로 지연 시간도 줄어듭니다.

트리거된 작업은 정의된 스트림에 데이터가 있고 작업 실행을 트리거할 때까지 컴퓨팅 리소스를 사용하지 않습니다.

트리거 작업에 대한 실행 조건은 다음과 같습니다.

  • 연결된 스트림이 추적하는 테이블(또는 테이블)에서 데이터가 변경된 경우.

  • 작업이 처음 재개될 때 스트림에 이미 있는 모든 데이터를 사용합니다.

  • 트리거된 작업은 스트림이 부실 해지는 것을 방지하기 위해 12시간마다 자동으로 상태 검사를 실행합니다. 스트림에 데이터가 없는 경우, Snowflake는 컴퓨팅 리소스를 사용하지 않고 실행을 건너뜁니다.

트리거된 작업 만들기

CREATE TASK 를 사용하고 WHEN 절을 사용하여 대상 스트림을 정의합니다. (SCHEDULE 매개 변수는 포함하지 마십시오.)

다음 중 하나를 선택하여 작업에 컴퓨팅 리소스를 할당합니다.

  • 리소스(사용자 관리 웨어하우스 작업)를 수동으로 관리하려면 WAREHOUSE 매개 변수를 추가합니다.

  • Snowflake가 리소스(서버리스 작업)를 관리하도록 허용하려면 TARGET_COMPLETION_INTERVAL 매개 변수를 추가하십시오. Snowflake는 필요한 리소스를 추정하고 이 시간 내에 작업을 완료하도록 조정합니다.

예약된 작업에서 트리거된 작업으로 기존 작업 마이그레이션하기

작업을 일시 중단하고 SCHEDULE 매개 변수를 설정 해제하고 작업을 다시 시작합니다. 기존 작업에는 WHEN 절에 정의된 대상 스트림이 있어야 합니다.

ALTER TASK task SUSPEND;
ALTER TASK task UNSET SCHEDULE;
ALTER TASK task RESUME;
Copy

기존 사용자 관리 트리거 작업을 서버리스 트리거 작업으로 마이그레이션하기

작업을 일시 중단합니다. WAREHOUSE 매개 변수를 제거하고 TARGET_COMPLETION_INTERVAL 매개 변수를 추가합니다. 작업을 다시 시작합니다.

트리거된 작업 고려 사항

  • SHOW TASKSDESC TASK 출력에서 SCHEDULE 속성은 트리거된 작업에 대해 NULL 을 표시합니다.

  • information_schema 및 account_usage 스키마에서 task_history 뷰의 출력에서 SCHEDULED_FROM 열에 TRIGGER가 표시됩니다.

  • 여러 데이터 스트림으로 작업하는 경우 WHEN ANDWHEN OR 조건부 매개 변수를 사용하여 작업 시작 시기를 관리할 수 있습니다.

트리거된 작업 제한 사항

  • 기본적으로 트리거 작업은 최대 30초마다 실행됩니다. USER_TASK_MINIMUM_TRIGGER_INTERVAL_IN_SECONDS 매개 변수를 수정하여 최대 10초마다 실행되도록 더 자주 실행할 수 있습니다.

  • 디렉터리 테이블, 외부 테이블 및 하이브리드 테이블의 스트림은 지원되지 않습니다.

트리거된 작업 예제

예 1: 두 스트림 중 하나에서 데이터가 변경될 때마다 실행되는 사용자 관리 작업을 만듭니다.

CREATE TASK my_task
  WHEN SYSTEM$STREAM_HAS_DATA('my_return_stream')
  OR   SYSTEM$STREAM_HAS_DATA('my_order_stream')
  WAREHOUSE = my_warehouse
  AS
    INSERT INTO customer_activity
    SELECT customer_id, return_total, return_date, return
    FROM my_return_stream
    UNION ALL
    SELECT customer_id, order_total, order_date, order
    FROM my_order_stream;
Copy

예 2: 서로 다른 두 데이터 스트림에서 데이터 변경이 감지될 때마다 실행할 작업을 만듭니다. 이 작업은 AND 조건문을 사용하므로 두 스트림 중 하나에만 새 데이터가 있는 경우 작업을 건너뜁니다.

TARGET_COMPLETION_INTERVAL 은 120분이므로 Snowflake는 이 시간 내에 작업을 완료하는 데 필요한 컴퓨팅 리소스를 추정하고 조정합니다.

CREATE TASK triggeredTask
  WHEN SYSTEM$STREAM_HAS_DATA('orders_stream')
  TARGET_COMPLETION_INTERVAL='120 MINUTES'
  AS
    INSERT INTO completed_promotions
    SELECT order_id, order_total, order_time, promotion_id
    FROM orders_stream
    WHERE promotion_id IS NOT NULL;
Copy

수동으로 작업 실행하기

CREATE TASK 또는 ALTER TASK 를 사용하여 새 작업을 만들고 작업 매개 변수를 설정합니다.

EXECUTE TASK 를 사용하여 작업의 단일 실행을 트리거합니다. SQL 명령은 새 작업이나 수정된 작업을 테스트할 때 유용합니다.

스크립트나 저장 프로시저에서 이 SQL 명령을 직접 호출할 수 있습니다. 또한 이 명령은 외부 데이터 파이프라인에서 작업 통합을 지원합니다. Snowflake 계정을 인증하고 SQL 작업을 승인할 수 있는 모든 서드 파티 서비스는 EXECUTE TASK 명령을 실행하여 작업을 실행할 수 있습니다.

작업 실행의 버전 관리

독립 실행형 작업을 처음 재개하거나 수동으로 실행하면 작업의 초기 버전이 설정됩니다. 독립 실행형 작업은 이 버전을 사용하여 실행됩니다. 작업이 일시 중단 및 수정된 후 독립 실행형 작업이 다시 시작되거나 수동으로 실행될 때 새 버전이 설정됩니다.

작업이 일시 중단되면 향후 예정된 모든 작업 실행이 취소되지만, 현재 실행 중인 작업은 현재 버전을 사용하여 계속 실행됩니다.

예를 들어, 작업이 일시 중단되었지만 이 작업의 예약된 실행이 이미 시작되었다고 가정하겠습니다. 작업의 소유자는 작업이 실행 중인 동안 작업에서 호출하는 SQL 코드를 수정합니다. 작업은 작업 실행을 시작할 때 최신 버전의 작업을 사용하여 정의에 있는 SQL 코드를 실행하고 실행합니다. 작업이 다시 시작되거나 수동으로 실행된 후의 새 작업 버전이 설정됩니다. 이 새 버전에는 작업에 대한 수정 사항이 포함됩니다.

작업 버전 기록을 검색하려면 SNOWFLAKE 공유 데이터베이스에서 TASK_VERSIONS Account Usage 뷰 를 쿼리하십시오.

실행 실패 후 작업 자동 일시 중단하기

선택적으로, 지정된 횟수의 연속 실행이 실패하거나 시간 초과되면 작업을 자동으로 일시 중단합니다. 이 기능을 사용하면 Snowflake 크레딧을 소비하지만 완료에 실행 완료에 실패하는 작업을 일시 중단함으로써 비용을 절감할 수 있습니다.

작업에 SUSPEND_TASK_AFTER_NUM_FAILURES = num 매개 변수를 설정합니다. 매개 변수를 0 보다 큰 값으로 설정하면 지정된 횟수의 연속 작업 실행이 실패하거나 시간 초과되면 작업이 자동으로 일시 중단됩니다.

매개 변수는 CREATE TASK 를 사용하여 작업을 생성할 때 설정하거나 나중에 ALTER TASK 를 사용하여 설정할 수 있습니다. 이 값은 Snowsight 에서 변경할 수도 있습니다.

SUSPEND_TASK_AFTER_NUM_FAILURES 매개 변수는 계정, 데이터베이스 또는 스키마 수준에서도 설정할 수 있습니다. 이 설정은 수정된 오브젝트에 포함된 모든 작업에 적용됩니다. 매개 변수를 더 낮은 수준에서 명시적으로 설정하면 더 높은 수준에서 설정된 매개 변수 값이 재정의됩니다.

실패한 작업 실행 자동 재시도

작업 그래프가 FAILED 상태에서 완료되면 Snowflake는 작업을 자동으로 다시 시도할 수 있습니다. 자동 작업 재시도는 기본적으로 비활성화됩니다. 이 기능을 사용하려면 TASK_AUTO_RETRY_ATTEMPTS 를 0보다 큰 값으로 설정합니다.

오류 알림을 사용하는 작업은 실패한 재시도 시도에 대해 알림을 보냅니다. 자세한 내용은 오류 알림을 보내도록 작업 구성하기 섹션을 참조하십시오.

계정, 데이터베이스 또는 스키마 수준에서 TASK_AUTO_RETRY_ATTEMPTS 매개 변수 값을 설정하면 다음 예약된 실행 중에 수정된 오브젝트에 포함된 작업에 변경 사항이 적용됩니다.

작업에 대한 세션 매개 변수 설정하기

작업이 실행되는 세션에 대한 세션 매개 변수를 설정할 수 있습니다. 이를 수행하려면 ALTER TASKSET session_parameter = value[, session_parameter = value ... ] 를 사용하거나 Snowsight 에서 작업을 편집하여 기존 작업을 수정하고 원하는 매개 변수 값을 설정합니다.

작업은 모든 세션 매개 변수를 지원합니다. 전체 목록은 매개 변수 를 참조하십시오. 작업은 계정 또는 사용자 매개 변수를 지원하지 않습니다.

계정의 작업 로드 내역 보기

SQL 또는 Snowsight 를 사용하여 계정의 작업 기록을 볼 수 있습니다. Snowsight 에서 작업 기록을 보려면 Snowsight 의 작업 및 작업 그래프 보기 섹션을 참조하십시오. 필요한 권한에 대한 정보는 작업 기록 뷰 섹션을 참조하십시오.

단일 작업의 실행 기록을 보는 방법은 다음과 같습니다.

SQL:

Snowflake Information SchemaTASK_HISTORY 테이블 함수를 쿼리합니다.

현재 예약되었거나 실행 중인 작업 그래프 실행에 대한 세부 정보를 보는 방법은 다음과 같습니다.

SQL:

Snowflake Information SchemaCURRENT_TASK_GRAPHS 테이블 함수를 쿼리합니다.

지난 60분 동안 성공, 실패 또는 취소된 작업 그래프 실행의 세부 정보를 보는 방법은 다음과 같습니다.

SQL:

Snowflake Information SchemaCOMPLETE_TASK_GRAPHS 테이블 함수를 쿼리합니다.

(Account Usage 에서) COMPLETE_TASK_GRAPHS 뷰 뷰를 쿼리합니다.

작업 비용

SQL 코드 실행을 위한 작업 수행과 관련된 비용은 작업을 위한 컴퓨팅 리소스의 출처에 따라 다릅니다.

사용자 관리 웨어하우스

Snowflake는 클라이언트 또는 Snowflake 웹 인터페이스에서 같은 SQL 문을 실행하기 위한 웨어하우스 사용량과 유사하게, 작업이 실행되는 동안의 웨어하우스 사용량을 기준으로 크레딧 사용 에 대해 계정에 요금을 청구합니다. 초당 크레딧 청구 및 웨어하우스 자동 일시 중단을 사용하여 더 큰 웨어하우스 크기로 시작한 후 작업 워크로드에 따라 크기를 조정할 수 있는 유연성이 제공됩니다.

서버리스 컴퓨팅 모델

Snowflake는 컴퓨팅 리소스 사용량에 따라 계정에 요금을 청구합니다. 요금은 컴퓨팅 시간 크레딧 사용으로 측정되는 클라우드 서비스 사용량을 포함한 총 리소스 사용량을 기준으로 계산됩니다. 컴퓨팅 시간 비용은 웨어하우스 크기와 쿼리 런타임에 따라 달라집니다. 자세한 내용은 서버리스 크레딧 사용 또는 쿼리: 총 서버리스 작업 비용 섹션을 참조하십시오.

Snowflake는 작업 기록에서 작업 실행을 분석하여 서버리스 컴퓨팅 리소스의 올바른 크기와 수를 동적으로 결정합니다. Snowflake가 작업 실행을 관리하기 위해 리소스를 자동으로 확장하거나 축소하므로 작업 실행을 실행하는 데 드는 비용도 비례하여 증가합니다.

작업에서 사용하는 크레딧 수를 알아보려면 Snowflake 서비스 사용 테이블 에서 “서버리스 기능 크레딧 테이블”을 참조하십시오.

작업을 생성할 때 비용을 최적화하려면 다음 모범 사례를 고려하십시오.

  • SCHEDULE을 실행 빈도를 줄이도록 설정합니다.

  • 자동 일시 중단 및 자동 재시도 매개 변수를 사용하여 작업 실패로 인한 리소스 낭비를 방지합니다.

  • 서버리스 기능에 대한 예산을 생성하고 지출 한도에 대한 경고를 생성합니다. 자세한 내용은 예산을 사용하여 크레딧 사용 모니터링하기 섹션을 참조하십시오.

특정 작업에 대한 현재 크레딧 사용을 검색하려면 SERVERLESS_TASK_HISTORY 테이블 함수를 쿼리하십시오. 작업 소유자로 다음 문을 실행합니다. 여기서, <database_name> 은 작업이 포함된 데이터베이스이고 <task_name> 은 작업의 이름입니다.

SET num_credits = (SELECT SUM(credits_used)
  FROM TABLE(<database_name>.information_schema.serverless_task_history(
    date_range_start=>dateadd(D, -1, current_timestamp()),
    date_range_end=>dateadd(D, 1, current_timestamp()),
    task_name => '<task_name>')
    )
  );
Copy

모든 서버리스 작업에 대한 현재 크레딧 사용을 검색하려면 SERVERLESS_TASK_HISTORY 뷰를 쿼리하십시오. 계정 관리자로서 다음 문을 실행합니다.

SELECT start_time,
  end_time,
  task_id,
  task_name,
  credits_used,
  schema_id,
  schema_name,
  database_id,
  database_name
FROM snowflake.account_usage.serverless_task_history
ORDER BY start_time, task_id;
Copy

작업 보안

작업을 시작하려면 올바른 액세스 권한이 있어야 합니다. 이 섹션에서는 작업에 대한 액세스를 관리하는 방법을 설명합니다.

작업 그래프 소유권에 대한 정보는 작업 그래프 소유권 관리 섹션을 참조하십시오.

액세스 제어 권한

작업 만들기

작업을 만들려면 최소한으로 다음의 권한이 있는 역할이 필요합니다.

오브젝트

권한

참고

계정

EXECUTE MANAGED TASK

서버리스 컴퓨팅 리소스에 의존하는 작업에만 필요합니다.

데이터베이스

USAGE

스키마

USAGE, CREATE TASK

웨어하우스

USAGE

사용자 관리 웨어하우스를 사용하는 작업에만 필수입니다.

작업 실행하기

작업이 생성된 후 작업을 실행하려면 작업 소유자에게 다음 권한이 있어야 합니다.

오브젝트

권한

참고

계정

EXECUTE TASK

역할이 소유한 모든 작업을 실행하기 위해 필요합니다. 역할에 대한 EXECUTE TASK 권한을 취소하면 모든 후속 작업이 해당 역할에서 시작되지 않습니다.

계정

EXECUTE MANAGED TASK

서버리스 컴퓨팅 리소스에 의존하는 작업에만 필요합니다.

데이터베이스

USAGE

스키마

USAGE

작업

USAGE

웨어하우스

USAGE

사용자 관리 웨어하우스를 사용하는 작업에만 필수입니다.

또한 역할은 작업에서 실행되는 SQL 문을 실행하기 위해 필요한 권한이 있어야 합니다.

작업 기록 뷰

작업을 보려면 다음 권한 중 하나 이상이 있어야 합니다.

  • ACCOUNTADMIN 역할

  • 작업에 대한 OWNERSHIP 권한

  • 전역 MONITOR EXECUTION 권한

작업 다시 시작 또는 일시 중단하기

작업 소유자 외에도 작업에 대한 OPERATE 권한이 있는 역할은 작업을 일시 중단하거나 재개할 수 있습니다. 이 역할은 작업을 포함하는 데이터베이스 및 스키마에 대한 USAGE 권한이 있어야 합니다. 다른 권한은 필요하지 않습니다.

작업이 재개되면 Snowflake는 작업 소유자 역할이 작업 실행하기 에 나열된 권한이 있는지 확인합니다.

작업 권한을 관리하기 위한 사용자 지정 역할 만들기

사용자 지정 역할을 사용하면 Snowflake에서 각 계정이나 역할에 부여된 권한을 쉽게 관리할 수 있습니다. 사용자 지정 역할을 사용하여 모든 계정 또는 역할에 대한 권한을 변경하려면 사용자 지정 역할을 업데이트합니다. 또는 사용자 지정 역할을 제거하여 권한을 취소합니다.

작업을 생성하기 위한 사용자 지정 역할 만들기

Snowflake에서는 서버리스 작업과 사용자 관리 작업을 만들려면 서로 다른 권한이 필요합니다.

예를 들어, 사용자 지정 작업을 생성하려면 warehouse_task_creation 사용자 지정 역할을 만들고 해당 역할에 해당 역할이 작업을 생성할 수 있는 웨어하우스에 대한 CREATE TASK 및 USAGE 권한을 부여합니다.

USE SYSADMIN;

CREATE ROLE warehouse_task_creation
  COMMENT = 'This role can create user-managed tasks.';
Copy
USE ACCOUNTADMIN;

GRANT CREATE TASK
  ON SCHEMA schema1
  TO ROLE warehouse_task_creation;
Copy
GRANT USAGE
  ON WAREHOUSE warehouse1
  TO ROLE warehouse_task_creation;
Copy

서버리스 작업을 만들 수 있는 역할의 예제로, 이름이 serverless_task_creation 인 사용자 지정 역할을 만들고 이 역할에 CREATE TASK 권한과 계정 수준 EXECUTE MANAGED TASK 권한을 부여합니다.

USE SYSADMIN;

CREATE ROLE serverless_task_creation
  COMMENT = 'This role can create serverless tasks.';
Copy
USE ACCOUNTADMIN;

GRANT CREATE TASK
  ON SCHEMA schema1
  TO ROLE serverless_task_creation;
Copy
GRANT EXECUTE MANAGED TASK ON ACCOUNT
  TO ROLE serverless_task_creation;
Copy

작업을 관리하기 위한 사용자 지정 역할 만들기

사용자 지정 역할을 만들고 EXECUTE TASK 권한으로 이 사용자 지정 역할을 모든 작업 소유자 역할에 부여하여 자신의 작업을 변경할 수 있도록 합니다. 작업 소유자 역할이 작업을 실행할 수 있는 기능을 제거하려면 작업 소유자 역할에서 이 사용자 지정 역할을 취소합니다.

예를 들어, 사용자 지정 역할 이름 taskadmin 을 만들고 해당 역할에 EXECUTE TASK 권한을 부여합니다. taskadmin 역할을 myrole 이라는 작업 소유자 역할에 할당합니다.

USE ROLE securityadmin;

CREATE ROLE taskadmin;
Copy

새 역할에 계정 수준 권한을 부여하기 전에 활성 역할을 ACCOUNTADMIN으로 설정

USE ROLE accountadmin;

GRANT EXECUTE TASK, EXECUTE MANAGED TASK ON ACCOUNT TO ROLE taskadmin;
Copy

활성 역할을 SECURITYADMIN으로 설정하여 이 역할이 다른 역할에 역할을 부여할 수 있음을 표시

USE ROLE securityadmin;

GRANT ROLE taskadmin TO ROLE myrole;
Copy

사용자 지정 역할 및 역할 계층 구조 생성과 관련한 자세한 내용은 액세스 제어 구성하기 를 참조하십시오.

작업 소유자 역할 삭제

작업의 소유자 역할을 삭제하면 해당 작업의 소유권은 소유자 역할을 삭제한 역할로 이전됩니다. 작업의 소유권이 이전되면 해당 작업은 자동으로 일시 중지되고 새 소유자가 작업을 재개할 때까지 새로운 실행은 예약되지 않습니다.

작업이 실행되는 중에 역할을 삭제하면 작업 실행은 삭제된 역할에서 처리를 완료합니다.

시스템 서비스 작업 실행

Snowflake는 작업 소유자의 권한으로 작업을 실행하지만 작업 실행은 사용자와 연결되지 않습니다. 대신 각 실행은 시스템 서비스에 의해 실행됩니다. 작업은 특정 사용자와 분리되어 사용자가 삭제되거나 인증 문제로 인해 잠기거나 역할이 제거될 때 발생할 수 있는 복잡성을 방지합니다.

작업 실행은 사용자와 분리되기 때문에 작업 실행에 대한 쿼리 기록은 시스템 서비스와 연결됩니다. 따라서 이 서비스에는 사용자 자격 증명이 없으며, 어떤 개인도 이 서비스의 ID를 추정할 수 없습니다. 시스템 서비스에 대한 활동은 사용자의 계정으로 제한됩니다. 다른 작업에 적용되는 것과 동일한 암호화 보호 및 기타 보안 프로토콜이 이 서비스에 내장되어 있습니다.

작업 DDL

작업 생성 및 관리를 지원하기 위해 Snowflake는 다음과 같은 특수 DDL 작업 세트를 제공합니다.

또한, 공급자는 다음과 같은 표준 액세스 제어 DDL을 사용하여 ELT에 필요한 데이터베이스 오브젝트에 대한 액세스를 확인, 권한 부여 또는 취소할 수 있습니다.

작업 함수

작업에 대한 정보 검색을 지원하기 위해 Snowflake는 다음과 같은 함수 세트를 제공합니다.