SHOW TASKS
SHOW TASKS
액세스 권한이 있는 태스크(task)를 나열하는 명령이에요. 현재/지정한 데이터베이스·스키마 또는 전체 계정의 태스크를 나열하는 데 사용할 수 있어요.
출처: 문서
본문
액세스 권한이 있는 태스크를 나열해요. 이 명령을 사용해 현재/지정한 데이터베이스·스키마 또는 전체 계정의 태스크를 나열할 수 있어요. 출력은 태스크 메타데이터와 속성을 데이터베이스, 스키마, 태스크 이름 기준 사전순으로 반환해요. 제공된 필터로 결과를 필터링하려면 이 점을 유의해야 해요.
구문
SHOW [ TERSE ] TASKS [ LIKE '<pattern>' ]
[ IN { ACCOUNT | DATABASE [ <db_name> ] | [ SCHEMA ] [ <schema_name> ] | APPLICATION <application_name> | APPLICATION PACKAGE <application_package_name> } ]
[ STARTS WITH '<name_string>' ]
[ ROOT ONLY ]
[ LIMIT <rows> [ FROM '<name_string>' ] ]
매개변수
TERSE
출력 컬럼의 부분집합만 반환해요: created_on, name, kind(모든 태스크 레코드에 NULL 표시), database_name, schema_name, schedule.
LIKE 'pattern'
선택적으로 객체 이름으로 명령 출력을 필터링해요. 필터는 SQL 와일드카드 문자(%와 _)를 지원하며 대소문자를 구분하지 않는 패턴 매칭을 사용해요. 예를 들어 다음 패턴들은 같은 결과를 반환해요:
... LIKE '%testing%' ...
... LIKE '%TESTING%' ...
기본값: 값 없음(출력에 필터링이 적용되지 않음).
IN ACCOUNT | DATABASE [ db_name ] | SCHEMA [ schema_name ] | APPLICATION application_name | APPLICATION PACKAGE application_package_name
선택적으로 명령의 범위를 지정해요. 현재/지정한 데이터베이스·스키마 또는 전체 계정에 대한 레코드만 나열할지 결정해요.
APPLICATION과 APPLICATION PACKAGE 키워드는 필수가 아니지만, 명명된 Snowflake Native App에 대한 범위를 지정해요.
- ACCOUNT 키워드를 지정하면, 명령은 현재 계정의 모든 데이터베이스에 있는 모든 스키마에 대한 레코드를 검색해요.
- DATABASE 키워드를 지정하면:
- db_name을 지정하면, 명령은 지정된 데이터베이스의 모든 스키마에 대한 레코드를 검색해요.
- db_name을 지정하지 않으면: 현재 데이터베이스가 있으면 현재 데이터베이스의 모든 스키마에 대한 레코드를 검색해요. 현재 데이터베이스가 없으면 계정의 모든 데이터베이스와 스키마에 대한 레코드를 검색해요.
- SCHEMA 키워드를 지정하면:
- 정규화된 스키마 이름(예: my_database.my_schema)을 지정하면, 명령은 지정된 데이터베이스와 스키마에 대한 레코드를 검색해요.
- 정규화되지 않은 schema_name을 지정하면: 현재 데이터베이스가 있으면 현재 데이터베이스의 지정된 스키마에 대한 레코드를 검색해요. 현재 데이터베이스가 없으면 명령은
SQL compilation error: Object does not exist, or operation cannot be performed.오류를 표시해요. - schema_name을 지정하지 않으면: 현재 데이터베이스가 있으면, 현재 스키마가 있으면 현재 데이터베이스의 현재 스키마에 대한 레코드를 검색하고, 현재 스키마가 없으면 현재 데이터베이스의 모든 스키마에 대한 레코드를 검색해요. 현재 데이터베이스가 없으면 계정의 모든 데이터베이스와 모든 스키마에 대한 레코드를 검색해요.
기본값: 세션이 현재 사용 중인 데이터베이스가 있는지에 따라 달라져요:
- 데이터베이스가 있는 경우: DATABASE가 기본값이에요(즉 명령은 데이터베이스에서 볼 권한이 있는 객체를 반환).
- 데이터베이스가 없는 경우: ACCOUNT가 기본값이에요(즉 명령은 계정에서 볼 권한이 있는 객체를 반환).
STARTS WITH 'name_string'
선택적으로 객체 이름의 시작 부분에 나타나는 문자를 기준으로 명령 출력을 필터링해요. 문자열은 작은따옴표로 묶어야 하고 대소문자를 구분해요. 예를 들어 다음 문자열들은 다른 결과를 반환해요:
... STARTS WITH 'B' ...
... STARTS WITH 'b' ...
기본값: 값 없음(출력에 필터링이 적용되지 않음).
ROOT ONLY
명령 출력을 루트 태스크(선행 태스크가 없는 태스크)만 반환하도록 필터링해요.
LIMIT
선택적으로 반환되는 최대 행 수를 제한하면서 결과의 "페이지 매김"도 가능하게 해요. 선택적 FROM 'name_string' 하위 절은 결과의 "커서" 역할을 해요. 문자열은 작은따옴표로 묶어야 하고 대소문자를 구분해요. 전체 객체 이름을 포함할 필요는 없고 부분 이름도 지원돼요. 기본값: 값 없음(출력에 제한이 적용되지 않음).
참고:
FROM 'name_string'과STARTS WITH 'name_string'절을 모두 지원하는 SHOW 명령에서는 같은 문장에서 두 절을 모두 조합할 수 있어요. 그러나 두 조건이 모두 충족되어야 하며, 그렇지 않으면 서로 상쇄되어 결과가 반환되지 않아요. 또한 객체는 이름으로 사전순으로 반환되므로 FROM 'name_string'은 STARTS WITH 'name_string'이 반환한 행보다 사전순 값이 더 높은 행만 반환해요.
출력
명령 출력은 태스크 속성과 메타데이터를 다음 컬럼으로 제공해요:
| 컬럼 이름 | 설명 |
|---|---|
| created_on | 태스크가 생성된 날짜와 시각이에요. |
| name | 태스크의 이름이에요. |
| id | 각 태스크의 고유 식별자예요. 태스크를 다시 만들면(CREATE OR REPLACE TASK) 본질적으로 새 ID를 가진 새 태스크가 만들어져요. |
| database_name | 태스크가 저장된 데이터베이스예요. |
| schema_name | 태스크가 저장된 스키마예요. |
| owner | 태스크를 소유하는 역할, 즉 태스크에 대한 OWNERSHIP 권한이 있는 역할이에요. |
| comment | 태스크에 대한 주석이에요. |
| warehouse | 태스크를 실행하는 데 필요한 리소스를 제공하는 웨어하우스예요. |
| schedule | 태스크 실행 일정이에요. 일정이 지정되지 않았거나 트리거된 태스크면 NULL을 표시해요. |
| scheduling_mode | 서버리스 태스크가 FIXED인지 FLEXIBLE인지를 표시해요. FIXED면 태스크 실행이 사용자가 지정한 일정을 기반으로 해요. FLEXIBLE이면 태스크 실행이 사용자가 지정한 일정과 대상 완료 간격을 기반으로 해요. |
| target_completion_interval | 서버리스 태스크의 대상 완료 간격이에요. 실행을 위한 컴퓨트 리소스 크기를 결정하는 데 사용돼요. |
| predecessors | 태스크의 AFTER 매개변수에 식별된 태스크(즉 선행 태스크)의 JSON 배열이에요. 이것들이 성공적으로 완료되면 현재 태스크를 트리거해요. 배열의 개별 태스크 이름은 정규화되어 있어요(컨테이너 데이터베이스와 스키마 이름 포함). 태스크에 선행 태스크가 없으면 빈 배열을 표시해요. |
| state | 태스크의 현재 상태에 따라 'started' 또는 'suspended'예요. |
| definition | 태스크가 실행될 때 실행되는 SQL 문이에요. |
| condition | 태스크의 WHEN 절에 지정된 조건이에요. |
| allow_overlapping_execution | 태스크 그래프의 루트 태스크의 경우, 태스크 그래프의 중첩 실행이 명시적으로 허용되면 TRUE를 표시해요. 태스크 그래프의 자식 태스크의 경우 NULL을 표시해요. |
| error_integration | 태스크의 오류 알림을 전달하기 위해 Amazon Simple Notification Service(SNS), Google Pub/Sub 또는 Microsoft Azure Event Grid에 접근하는 데 사용되는 알림 통합의 이름이에요. |
| success_integration | 태스크의 성공 알림을 전달하기 위해 Amazon Simple Notification Service(SNS), Google Pub/Sub 또는 Microsoft Azure Event Grid에 접근하는 데 사용되는 알림 통합의 이름이에요. |
| last_committed_on | 태스크 버전이 마지막으로 설정된 타임스탬프예요. 버전이 설정되지 않은 경우(즉 태스크가 생성된 후 재개되거나 수동으로 실행되지 않은 경우) 값은 NULL이에요. |
| last_suspended_on | 태스크가 마지막으로 중단된 타임스탬프예요. 루트 태스크와 자식 태스크 모두에 대한 타임스탬프를 표시해요. 태스크가 아직 중단되지 않았으면 값은 NULL이에요. |
| owner_role_type | 객체를 소유하는 역할의 유형으로, 예를 들어 ROLE이에요. Snowflake Native App이 객체를 소유하면 값은 APPLICATION이에요. 객체를 삭제하면 삭제된 객체에는 소유 역할이 없으므로 Snowflake는 NULL을 반환해요. |
| config | 태스크 그래프의 루트 태스크의 경우, CREATE TASK 또는 ALTER TASK로 태스크 정의에 설정된 기본 구성을 표시해요. 자식 태스크의 경우 NULL을 표시해요. |
| last_suspended_reason | 태스크가 중단된 이유를 표시해요. 가능한 이유: USER_SUSPENDED(사용자가 alter task <name> suspend 명령으로 태스크를 중단), SCHEMA_OR_DATABASE_DELETED(태스크의 스키마 또는 데이터베이스가 드롭됨), GRANT_OWNERSHIP(사용자가 grant ownership 명령으로 태스크 소유권을 다른 역할에 이전), SUSPENDED_DUE_TO_ERRORS(태스크가 연속으로 특정 횟수만큼 실패하여 중단. 태스크를 중단하는 데 필요한 실패 횟수는 SUSPEND_TASK_AFTER_NUM_FAILURES 매개변수로 설정 가능), CHILD_BECAME_ROOT(태스크가 이전에 태스크 그래프의 자식 태스크였지만 모든 선행 태스크가 제거되어 루트 태스크가 됨), FINALIZER_BECAME_ROOT(태스크가 이전에 태스크 그래프의 파이널라이저 태스크였지만 파이널라이제이션이 제거되어 루트 태스크가 됨), MATCHING_OWNER_NOT_FOUND(태스크 복제 중 태스크를 소유하는 역할을 보조 데이터베이스에서 찾지 못함). 태스크가 중단된 적이 없거나, 컬럼이 2023_08 Bundle(일반 활성화)에 도입되기 전에 마지막으로 중단된 경우 NULL을 표시해요. |
| task_relations | 선행 태스크와 파이널라이저 태스크를 포함해 태스크 관계를 설명하는 JSON 객체예요. 객체는 다음 필드를 포함할 수 있어요: Predecessors(태스크의 AFTER 매개변수에 식별된 태스크의 정규화된 이름 배열. 모든 선행 태스크가 성공적으로 완료되면 현재 태스크를 트리거. 선행 태스크가 없으면 빈 배열), FinalizerTask(이 루트 태스크와 연결된 파이널라이저 태스크의 정규화된 이름. 파이널라이저 태스크가 있는 루트 태스크에만 표시), FinalizedRootTask(이 태스크가 파이널라이즈하는 루트 태스크의 정규화된 이름. 파이널라이저 태스크에만 표시). 예: |
- 파이널라이저 태스크가 있는 루트 태스크:
{"Predecessors":[],"FinalizerTask":"MY_DB.MY_SCHEMA.FINALIZE_LONG_RUNNING_TASK"} - 파이널라이저 태스크:
{"FinalizedRootTask":"MY_DB.MY_SCHEMA.LONG_RUNNING_TASK","Predecessors":[]} - 선행 태스크가 있는 태스크:
{"Predecessors":["MY_DB.MY_SCHEMA.DEFTASK"]}| | execute_as_user | 시스템 사용자로 실행되면(기본값) NULL로 표시돼요. 가장된 권한(EXECUTE AS USER)으로 태스크를 실행하는 사용자의 사용자 이름을 표시해요. 자세한 내용은 사용자 권한으로 태스크 실행(Run tasks with user privileges)을 참고해요. |
태스크에 지정할 수 있는 속성에 대한 자세한 내용은 CREATE TASK를 참고해요.
사용 메모
- 태스크 소유자(즉 태스크에 대한 OWNERSHIP 권한이 있는 역할) 또는 태스크에 대한 MONITOR 또는 OPERATE 권한이 있는 역할에 대해서만 행을 반환해요.
- 이 명령은 실행에 웨어하우스가 필요하지 않아요.
- 이 명령은 현재 사용자의 현재 역할에 액세스 권한이 하나 이상 부여된 객체만 반환해요.
MANAGE GRANTS액세스 권한은 보유자에게 계정의 모든 객체를 볼 수 있는 권한을 암묵적으로 부여해요. 기본적으로 계정 관리자(ACCOUNTADMIN 역할)와 보안 관리자(SECURITYADMIN 역할)만MANAGE GRANTS권한을 가져요.- 이 명령의 출력을 후처리하려면 파이프 연산자(
->>)나RESULT_SCAN함수를 사용할 수 있어요. 두 구성 모두 출력을 쿼리할 수 있는 결과 집합으로 취급해요. 예를 들어 SHOW 명령 출력에서 특정 컬럼을 선택하거나 행을 필터링할 수 있어요. - 출력 컬럼을 참조할 때는 큰따옴표로 묶은 식별자를 사용해요. 예를 들어
type출력 컬럼을 선택하려면SELECT "type"이라고 지정해요. SHOW 명령의 출력 컬럼 이름은 소문자이므로 큰따옴표로 묶은 식별자를 사용해야 해요. LIMIT <rows>의 값은 10000을 초과할 수 없어요. LIMIT rows를 생략하면 결과 집합이 1만 행보다 크면 명령이 오류를 일으켜요. 1만 개를 초과하는 결과를 보려면 LIMIT rows를 포함하거나 Snowflake 정보 스키마의 해당 뷰를 쿼리해요.
예제
tpch.public 스키마에서 볼 권한이 있는, line으로 시작하는 이름을 가진 모든 태스크 표시:
SHOW TASKS LIKE 'line%' IN tpch.public;
tpch.public 스키마에서 볼 권한이 있는 모든 태스크 표시:
SHOW TASKS IN tpch.public;
더 알아보기 (Learn more)
- See also: CREATE TASK, ALTER TASK, DROP TASK, DESCRIBE TASK