카테고리:

Information Schema , 테이블 함수

DYNAMIC_TABLE_REFRESH_HISTORY

이 테이블 함수는 동적 테이블 의 각 새로 고침(완료 및 실행 중)에 대한 정보를 반환합니다.

이 테이블 함수는 진행 중인 모든 새로 고침은 물론이고, 현재 시간으로부터 1일 이내의 REFRESH_VERSION을 가진 모든 새로 고침도 반환합니다.

구문

DYNAMIC_TABLE_REFRESH_HISTORY(
  [ DATA_TIMESTAMP_START => <constant_expr> ]
  [ , DATA_TIMESTAMP_END => <constant_expr> ]
  [ , RESULT_LIMIT => <integer> ]
  [ , NAME => '<string>' ]
  [ , NAME_PREFIX => '<string>' ]
  [ , ERROR_ONLY => { TRUE | FALSE } ]
)
Copy

인자

모든 인자는 선택 사항입니다. 아무런 인자도 제공되지 않으면 계정의 모든 동적 테이블에서 100회의 새로 고침이 반환됩니다.

DATA_TIMESTAMP_START => constant_expr , . DATA_TIMESTAMP_END => constant_expr

새로 고침이 발생한 시간 범위(TIMESTAMP_LTZ 형식)입니다.

  • 시작 버전과 종료 버전이 모두 지정되지 않은 경우 기본 범위는 과거 날짜가 됩니다.

  • 종료 버전이 지정되지 않은 경우, CURRENT_TIMESTAMP 가 범위의 끝으로 사용됩니다.

  • 시작 버전을 지정하지 않은 경우, 범위는 DATE_TIMESTAMP_END가 시작되기 1일 전에 시작됩니다.

RESULT_LIMIT => integer

함수가 반환하는 최대 행 수를 지정하는 숫자입니다.

일치하는 행의 수가 이 제한보다 큰 경우, 지정된 제한까지는 가장 최근에 종료된 새로 고침(그리고 여전히 실행 중인 새로 고침)이 반환됩니다.

범위: 1 ~ 10000

기본값: 100.

NAME => string

동적 테이블의 이름입니다.

이름은 작은따옴표로 묶어야 하며 대/소문자를 구분하지 않습니다.

정규화되지 않은 이름(dynamic_table_name), 부분적으로 정규화된 이름(schema_name.dynamic_table_name) 또는 정규화된 이름(database_name.schema_name.dynamic_table_name)을 지정할 수 있습니다.

오브젝트 이름 확인에 대한 자세한 내용은 오브젝트 이름 확인 섹션을 참조하십시오.

이 함수는 이 테이블에 대한 새로 고침을 반환합니다.

NAME_PREFIX => string

동적 테이블의 접두사입니다.

이름 접두사는 작은따옴표로 묶어야 하며 대/소문자를 구분하지 않습니다.

이 함수는 이 접두사로 시작하는 이름을 가진 테이블에 대한 새로 고침을 반환합니다.

이 인자를 사용하여 특정 데이터베이스 또는 스키마의 동적 테이블에 대한 새로 고침을 반환할 수 있습니다.

ERROR_ONLY => TRUE | FALSE

TRUE로 설정 시, 이 함수는 실패하거나 취소된 새로 고침만 반환합니다.

출력

이 함수는 다음 열을 반환합니다.

열 이름

데이터 타입

설명

NAME

TEXT

동적 테이블의 이름입니다.

SCHEMA_NAME

TEXT

동적 테이블을 포함하는 스키마의 이름입니다.

DATABASE_NAME

TEXT

동적 테이블을 포함하는 데이터베이스의 이름입니다.

STATE

TEXT

동적 테이블의 새로 고침 상태입니다. 다음 중 한 가지 상태일 수 있습니다.

  • SCHEDULED: 새로 고침이 예약되었지만 아직 실행되지 않았습니다.

  • EXECUTING: 새로 고침이 진행 중입니다.

  • SUCCEEDED: 새로 고침이 성공적으로 완료되었습니다.

  • FAILED: 새로 고침이 실행 중에 실패했습니다.

  • CANCELLED: 새로 고침이 실행 전에 취소되었습니다.

  • SKIPPED: 자동 새로 고침 프로세스에서 어떤 이유로 새로 고침이 수행되지 않았음을 나타냅니다. 예를 들어 입력 동적 테이블이 새로 고쳐지지 않았거나 일관된 성능을 위해 로드를 줄이기 위한 것과 같은 이유가 있을 수 있습니다.

STATE_CODE

TEXT

새로 고침의 현재 상태를 나타내는 코드입니다.

STATE_MESSAGE

TEXT

새로 고침의 현재 상태에 대한 설명입니다.

QUERY_ID

TEXT

동적 테이블의 결과를 생성한 SQL 문의 ID입니다.

DATA_TIMESTAMP

TIMESTAMP_LTZ

새로 고침이 평가된 시점의 트랜잭션 타임스탬프입니다. (이는 실제 새로 고침 시간보다 약간 이전 시점일 수 있습니다.) 이 타임스탬프 이전에 도착한 기본 오브젝트의 모든 데이터는 현재 동적 테이블에 포함되어 있습니다.

REFRESH_START_TIME

TIMESTAMP_LTZ

새로 고침 작업이 시작된 시간입니다.

REFRESH_END_TIME

TIMESTAMP_LTZ

새로 고침이 완료된 시간입니다.

COMPLETION_TARGET

TIMESTAMP_LTZ

동적 테이블에 대한 TARGET_LAG 매개 변수에서 지연을 유지하기 위해 이 새로 고침을 완료해야 하는 시간입니다. 이전의 REFRESH_VERSION + TARGET_LAG와 같습니다.

QUALIFIED_NAME

TEXT

동적 테이블의 그래프에 표시되는 동적 테이블의 정규화된 이름입니다. 이를 사용하여 출력을 다음의 DYNAMIC_TABLE_GRAPH_HISTORY 함수의 출력과 결합할 수 있습니다.

LAST_COMPLETED_DEPENDENCY

OBJECT

다음 속성을 포함합니다.

  • qualified_name: 사용할 수 있게 될 최신 종속성의 정규화된 이름입니다.

  • data_timestamp: 해당 종속성의 새로 고침 버전입니다.

STATISTICS

OBJECT

다음 속성을 포함합니다.

  • numInsertedRows: 삽입된 행의 수입니다.

  • numDeletedRows: 삭제된 행의 수입니다.

  • numCopiedRows: 변경되지 않은 채로 복사된 행의 수입니다.

  • numAddedPartitions: 추가된 파티션의 수입니다.

  • numRemovedPartitions: 제거된 파티션의 수입니다.

    예: UPDATE 문이 10개의 행이 있는 파티션에서 1개의 행을 업데이트하는 경우. 그러면 위의 메트릭이 삽입된 행 1개, 삭제된 행 1개, 복사된 행 9개를 보여줍니다. 또한 파티션이 1개 제거되고 1개 추가됩니다.

REFRESH_ACTION

TEXT

다음 중 하나:

  • NO_DATA - 기본 테이블에 새 데이터가 없습니다. 기본 테이블에 데이터가 있는지 여부에 관계없이 새로 생성된 동적 테이블의 초기 새로 고침에는 적용되지 않습니다.

  • REINITIALIZE - 복제 중에 기본 테이블이 변경되었거나 복제된 동적 테이블의 원본 테이블이 새로 고쳐졌습니다.

  • FULL - 동적 테이블에 증분할 수 없는 쿼리 요소가 포함되어 있거나(SHOW DYNAMIC TABLE refresh_mode_reason 참조) 전체 새로 고침 비용이 증분 새로 고침보다 저렴해 전체 새로 고침을 수행했습니다.

  • INCREMENTAL - 일반적인 증분 새로 고침.

REFRESH_TRIGGER

TEXT

다음 중 하나:

  • SCHEDULED - 대상 지연 또는 다운스트림 대상 지연을 충족하기 위한 일반적인 백그라운드 새로 고침.

  • MANUAL - 사용자/작업이 ALTER DYNAMIC TABLE <이름> REFRESH 사용

사용법 노트

  • Information Schema 테이블 함수를 호출할 때 세션에는 사용 중인 INFORMATION_SCHEMA 스키마가 있거나 또는 함수 이름이 정규화되어야 합니다. 자세한 내용은 Snowflake Information Schema 섹션을 참조하십시오.

실패했거나 취소된 새로 고침을 검색합니다.

SELECT
  name,
  state,
  state_code,
  state_message,
  query_id,
  data_timestamp,
  refresh_start_time,
  refresh_end_time
FROM
  TABLE (
    INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY (
      NAME_PREFIX => 'MYDB.MYSCHEMA.', ERROR_ONLY => TRUE
    )
  )
ORDER BY
  name,
  data_timestamp;
Copy