SHOW DYNAMIC TABLES

SHOW DYNAMIC TABLES

SHOW DYNAMIC TABLES 명령은 접근 권한(privilege)이 있는 동적 테이블(dynamic table) 목록을 보여주는 명령이에요. 현재/지정한 데이터베이스·스키마 또는 계정 전체의 동적 테이블을 나열할 수 있어요.

출처: 문서

본문

이 명령은 접근 권한이 있는 동적 테이블을 나열해요.

관련 명령: CREATE DYNAMIC TABLE, ALTER DYNAMIC TABLE, DESCRIBE DYNAMIC TABLE, DROP DYNAMIC TABLE, SHOW OBJECTS, TABLES 뷰 (Information Schema).

참고: Frozen region은 이전에 불변 제약(immutability constraints)이라 불렸으며, IMMUTABLE WHERE 절이 이전에 FROZEN WHERE 구문을 사용했어요. 레거시 IMMUTABLE WHERE 구문은 계속 지원되며 여전히 immutable_where 컬럼을 사용해요.

구문 (Syntax)

SHOW DYNAMIC TABLES [ LIKE '<pattern>' ]
                    [ IN
                      {
                           ACCOUNT              |

                           DATABASE             |
                           DATABASE <db_name>   |

                           SCHEMA               |
                           SCHEMA <schema_name> |
                           <schema_name>
                      }
                    ]
                    [ STARTS WITH '<name_string>' ]
                    [ LIMIT <rows> [ FROM '<name_string>' ] ]

파라미터 (Parameters)

  • LIKE <pattern> — 명령 출력을 객체 이름으로 필터링해요. 대소문자를 구분하지 않는 패턴 매칭이며 SQL 와일드카드 문자(%_)를 지원해요. 기본값: 없음.

  • [ IN ... ] — 명령의 범위를 선택적으로 지정해요:

    • ACCOUNT — 전체 계정의 레코드 반환.
    • DATABASE 또는 DATABASE db_name — 현재 또는 지정한 데이터베이스의 레코드 반환.
    • SCHEMA 또는 SCHEMA schema_name — 현재 또는 지정한 스키마의 레코드 반환.
    • IN ...을 생략하면 범위는 세션의 현재 데이터베이스 유무에 따라 달라져요: 있으면 IN DATABASE와 같은 효과, 없으면 IN ACCOUNT와 같은 효과.
  • STARTS WITH <name_string> — 객체 이름의 시작 문자를 기준으로 출력을 필터링해요. 문자열은 작은따옴표로 묶어야 하며 대소문자를 구분해요.

  • LIMIT <rows> [ FROM <name_string> ] — 최대 행 수를 제한하면서 결과의 "페이지네이션"을 가능하게 해요. FROM '<name_string>' 하위 절은 결과의 "커서" 역할을 해요. 문자열은 작은따옴표로 묶어야 하며 대소문자를 구분하고, 부분 이름이 지원돼요.

    참고: STARTS WITHFROM 절을 모두 지원하는 SHOW 명령에서는 두 절을 같은 문장에서 결합할 수 있어요. 다만 두 조건이 모두 충족되어야 하며, 그렇지 않으면 서로 상쇄되어 결과가 반환되지 않아요. 객체는 이름 기준 사전 순으로 반환됩니다.

접근 제어 요구 사항 (Access control requirements)

이 작업을 실행하는 역할은 최소한 다음 권한을 가져야 해요:

권한 (Privilege) 객체 (Object) 비고
SELECT 나열하려는 동적 테이블 MONITOR 권한이 없으면 일부 메타데이터가 숨겨져요.

스키마의 객체를 조작하려면 상위 데이터베이스에 최소 하나, 상위 스키마에 최소 하나의 권한이 필요해요.

사용 참고 사항 (Usage notes)

  • 동적 테이블을 SHOW하려면 테이블에 MONITOR 권한이 있는 역할을 사용해야 해요.
  • 실행에 실행 중인 웨어하우스를 요구하지 않아요.
  • 현재 역할에 하나 이상의 접근 권한이 부여된 객체만 반환해요.
  • MANAGE GRANTS 권한은 보유자가 계정의 모든 객체를 볼 수 있게 해줘요. 기본적으로 ACCOUNTADMIN과 SECURITYADMIN 역할만 이 권한을 가져요.
  • 출력을 후처리하려면 파이프 연산자(|>) 또는 RESULT_SCAN 함수를 사용할 수 있어요. 출력 컬럼을 참조할 때는 컬럼 이름을 큰따옴표로 감싸서 사용해요.
  • LIMIT rows의 값은 10000을 초과할 수 없어요. LIMIT rows를 생략하면 결과 집합이 1만 행보다 크면 오류가 발생해요.

출력 (Output)

명령 출력은 동적 테이블 속성과 메타데이터를 다음 컬럼으로 제공해요:

  • created_on — 동적 테이블이 생성된 날짜·시간.
  • name — 동적 테이블 이름.
  • database_name — 동적 테이블이 저장된 데이터베이스.
  • schema_name — 동적 테이블이 저장된 스키마.
  • cluster_by — 동적 테이블의 클러스터링 키.
  • rows — 테이블의 행 수.
  • bytes — 전체 동적 테이블을 쿼리에서 스캔하면 스캔될 바이트 수. 실제 물리 바이트(디스크 저장 바이트)와 다를 수 있어요.
  • owner — 동적 테이블을 소유한 역할.
  • target_lag — 동적 테이블 콘텐츠가 실시간보다 뒤처질 수 있는 최대 시간. schedulerDISABLE로 설정되면 NULL.
  • scheduler — Snowflake가 동적 테이블을 자동으로 새로고침할지 여부를 지정. 자동으로 예약되면 ENABLE, 아니면 DISABLE, scheduler 속성이 명시적으로 설정되지 않았으면 NULL (기본적으로 스케줄러 관리).
  • refresh_modeINCREMENTAL(증분 새로고침), FULL(매 새로고침마다 전체 테이블), AUTO(Snowflake가 자동 선택), ADAPTIVE(큰 업스트림 변경 시 자동 재초기화로 증분 새로고침), CUSTOM_INCREMENTAL(사용자 정의 MERGE·INSERT 문 사용) 중 하나.
  • refresh_mode_reason — 새로고침 모드가 선택된 이유. Snowflake가 INCREMENTAL을 지원할 때 FULL을 선택했다면 전체 새로고침이 더 낫다고 판단한 이유를 제공해요. 관련 정보가 없으면 NULL.
  • warehouse — 증분 새로고침을 수행하는 데 필요한 리소스를 제공하는 웨어하우스.
  • comment — 동적 테이블에 대한 주석.
  • text — 이 동적 테이블을 만든 명령의 텍스트(예: CREATE DYNAMIC TABLE ...).
  • automatic_clustering — 동적 테이블에 자동 클러스터링이 활성화되어 있는지 여부. 현재 동적 테이블에서는 지원되지 않아요.
  • scheduling_state — 새로고침을 적극적으로 예약 중인 동적 테이블은 RUNNING, 일시 중단된 동적 테이블은 SUSPENDED를 표시.
  • last_suspended_on — 마지막 일시 중단 타임스탬프.
  • is_clone — 동적 테이블이 클론이면 TRUE, 아니면 FALSE.
  • is_replica — 동적 테이블이 복제본이면 TRUE, 아니면 FALSE.
  • is_iceberg — 동적 테이블이 동적 Apache Iceberg 테이블이면 TRUE, 아니면 FALSE.
  • data_timestamp — 동적 테이블에 포함된 기본 객체의 데이터 타임스탬프.
  • owner_role_type — 객체를 소유한 역할 유형(예: ROLE). 데이터베이스 수준 역할은 동적 테이블의 소유자가 될 수 없어요 (동적 테이블 소유자는 웨어하우스에 USAGE 권한이 필요하며, 웨어하우스는 계정 수준 객체이기 때문). Snowflake Native App이 객체를 소유하면 APPLICATION. 객체가 삭제되면 소유자 역할이 없으므로 NULL을 반환해요.
  • immutable_where — 동적 테이블에 설정된 frozen region 조건자(predicate)를 표시. 없으면 NULL.
  • execute_as_user — EXECUTE AS USER로 가장된 권한을 사용해 동적 테이블을 새로고침하는 사용자의 사용자 이름을 표시. 시스템 사용자로 실행되면 NULL(기본값), 지정한 사용자 ID가 더 이상 유효하지 않으면 INVALID.

예제 (Examples)

mydb.myschema 스키마에서 이름이 product_로 시작하는 모든 동적 테이블을 표시해요:

SHOW DYNAMIC TABLES LIKE 'product_%' IN SCHEMA mydb.myschema;

더 알아보기 (Learn more)