DYNAMIC_TABLES

DYNAMIC_TABLES (동적 테이블 메타데이터)

현재 시각 7일 이내의, 집계 지연(lag) 메트릭과 가장 최근 새로 고침의 상태를 포함한 동적 테이블에 대한 메타데이터를 반환하는 테이블 함수예요.

출처: Snowflake SQL Reference - DYNAMIC_TABLES

본문

구문

DYNAMIC_TABLES (
  [ NAME => '<string>' ]
  [ , REFRESH_DATA_TIMESTAMP_START => <constant_expr> ]
  [ , RESULT_LIMIT => <integer> ]
  [ , INCLUDE_CONNECTED => { TRUE | FALSE } ]
)

인자

모든 인자는 선택적이에요. 인자가 제공되지 않으면 계정의 모든 동적 테이블에서 100개의 새로 고침이 반환돼요.

NAME => '<string>'

동적 테이블의 이름이에요. 이름은 작은따옴표로 묶어야 하며 대소문자를 구분하지 않아요. 정규화되지 않은 이름(dynamic_table_name), 부분 정규화 이름(schema_name.dynamic_table_name), 또는 완전 정규화 이름(database_name.schema_name.dynamic_table_name)을 지정할 수 있어요. 객체 이름 해석에 대한 자세한 내용은 객체 이름 해석을 참고해요. 이 함수는 이 테이블에 대한 메타데이터를 반환해요.

REFRESH_DATA_TIMESTAMP_START => <constant_expr>

동적 테이블 대상 지연과 관련된 메트릭을 계산하는 시간(TIMESTAMP_LTZ 형식)이에요. LATEST_DATA_TIMESTAMP가 REFRESH_DATA_TIMESTAMP_START보다 크거나 같은 모든 새로 고침이 포함돼요. 기본값: 새로 고침 이력의 모든 새로 고침은 7일간 보존돼요.

RESULT_LIMIT => <integer>

함수가 반환하는 최대 행 수를 지정하는 숫자예요. 기본적으로 함수는 100행을 반환하며, RESULT_LIMIT 인자로 달리 지정하지 않는 한 결과는 동적 테이블의 마지막 완료 새로 고침 상태를 다음 순서로 정렬해요: FAILED, UPSTREAM_FAILED, SKIPPED, SUCCEEDED, CANCELED. 다른 순서로 정렬하려면 충분히 큰 RESULT_LIMIT 값(예: 부호 있는 정수의 최댓값)을 제공해야 해요. RESULT_LIMIT가 계정의 총 동적 테이블 수를 초과하는 한 ORDER BY 절로 결과를 정렬할 수 있어요. 결과에 필터를 적용하려면 필터가 모든 동적 테이블에 적용되도록 큰 RESULT_LIMIT 값도 지정해요. 범위: 1에서 10000. 기본값: 100.

INCLUDE_CONNECTED => { TRUE | FALSE }

TRUE로 설정하면 함수는 NAME 인자로 지정된 동적 테이블에 연결된 모든 동적 테이블에 대한 메타데이터를 반환해요. NAME 인자를 지정해야 하며, RESULT_LIMIT 인자는 지정하지 말아야 해요. 기본값: FALSE.

출력

이 함수는 다음 컬럼을 반환해요. 이 컬럼을 보려면 MONITOR 권한이 있는 역할을 사용해야 해요. 그렇지 않으면 함수는 NAME, SCHEMA_NAME, DATABASE_NAME, QUALIFIED_NAME에 대해서만 값을 반환해요.

컬럼 이름 데이터 타입 설명
NAME TEXT 동적 테이블의 이름
SCHEMA_NAME TEXT 동적 테이블을 포함하는 스키마의 이름
DATABASE_NAME TEXT 동적 테이블을 포함하는 데이터베이스의 이름
QUALIFIED_NAME TEXT 동적 테이블의 완전 정규화 이름
TARGET_LAG_SEC NUMBER 동적 테이블의 대상 지연 시간(초). 동적 테이블의 TARGET_LAG 매개변수에 지정된 값이에요.
TARGET_LAG_TYPE TEXT 대상 지연의 유형. USER_DEFINED(동적 테이블에 지정된 TARGET_LAG 매개변수로 결정) 또는 DOWNSTREAM(DOWNSTREAM 대상 지연의 동적 테이블 포함) 중 하나일 수 있어요.
SCHEDULING_STATE OBJECT 다음으로 구성된 OBJECT: STATE(TEXT, 일정 상태 RUNNING 또는 SUSPENDED), REASON_CODE(TEXT, 동적 테이블이 실행되지 않는 이유 코드), REASON_MESSAGE(TEXT, 동적 테이블이 실행되지 않는 이유의 텍스트 설명. 동적 테이블이 RUNNING 상태가 아닐 때만 적용), SUSPENDED_ON(TIMESTAMP_LTZ, 동적 테이블이 일시 중지된 시각. SUSPENDED 상태일 때만 적용), RESUMED_ON(TIMESTAMP_LTZ, 동적 테이블이 마지막으로 재개된 시각. RUNNING 상태일 때만 적용).
MEAN_LAG_SEC NUMBER 이 동적 테이블의 새로 고침 평균 지연 시간(초)
MAXIMUM_LAG_SEC NUMBER 이 동적 테이블의 새로 고침 최대 지연 시간(초)
TIME_ABOVE_TARGET_LAG_SEC NUMBER 보존 기간 또는 마지막 구성 변경 이후, 실제 지연이 정의된 대상 지연보다 컸던 시간(초)
TIME_WITHIN_TARGET_LAG_RATIO NUMBER 보존 기간 또는 마지막 구성 변경 이후, 실제 지연이 대상 지연 이내였던 시간의 비율
LATEST_DATA_TIMESTAMP TIMESTAMP_LTZ 마지막 성공적인 새로 고침의 데이터 타임스탬프
LAST_COMPLETED_REFRESH_STATE TEXT 동적 테이블의 마지막 종료된 새로 고침 상태. SUCCEEDED(새로 고침 성공), FAILED(실행 중 새로 고침 실패), UPSTREAM_FAILED(상위 실패로 새로 고침 미수행), CANCELLED(실행 전 새로 고침 취소) 중 하나일 수 있어요.
LAST_COMPLETED_REFRESH_STATE_CODE TEXT 새로 고침의 현재 상태를 나타내는 코드. LAST_COMPLETED_REFRESH_STATE가 FAILED이면 이 컬럼은 실패와 관련된 오류 코드를 표시해요.
LAST_COMPLETED_REFRESH_STATE_MESSAGE TEXT 새로 고침의 현재 상태에 대한 설명. LAST_COMPLETED_REFRESH_STATE가 FAILED이면 이 컬럼은 실패와 관련된 오류 메시지를 표시해요.
EXECUTING_REFRESH_QUERY_ID TEXT 있으면 새로 고침 작업의 쿼리 ID예요. NULL이면 진행 중인 새로 고침 작업이 없어요.

사용 참고 사항

  • 정보 스키마 테이블 함수를 호출할 때 세션에 INFORMATION_SCHEMA 스키마가 사용 중이거나 함수 이름이 정규화되어 있어야 해요.

예시

지정한 동적 테이블에 연결된 모든 동적 테이블의 이름, 지연 정보, 마지막 성공적인 새로 고침의 데이터 타임스탬프를 가져와요:

SELECT
  name,
  target_lag_sec,
  mean_lag_sec,
  latest_data_timestamp
FROM
  TABLE (
    INFORMATION_SCHEMA.DYNAMIC_TABLES (
      NAME => 'mydb.myschema.mydt',
      INCLUDE_CONNECTED => TRUE
    )
  )
ORDER BY
  target_lag_sec

더 알아보기