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