STORAGE_LIFECYCLE_POLICY_HISTORY

STORAGE_LIFECYCLE_POLICY_HISTORY (스토리지 수명주기 정책 기록)

최근 14일 이내에 계정에서 스토리지 수명주기 정책(storage lifecycle policy)의 실행 기록을 반환해요.

출처: Snowflake SQL Reference - STORAGE_LIFECYCLE_POLICY_HISTORY

본문

이 테이블 함수를 사용해 (완료되었거나 아직 실행 중인) 가장 최근 정책 실행을 실행 종료 시간 내림차순으로 조회하세요. 스토리지 수명주기 정책 모니터링에 대한 자세한 내용은 스토리지 수명주기 정책 모니터링(Monitor storage lifecycle policies)을 참고하세요.

참고: CREATE STORAGE LIFECYCLE POLICY, ALTER STORAGE LIFECYCLE POLICY, DROP STORAGE LIFECYCLE POLICY

구문

객체별:

STORAGE_LIFECYCLE_POLICY_HISTORY(
 REF_ENTITY_NAME => '<string>',
 REF_ENTITY_DOMAIN => '<string>'
 [, TIME_RANGE_START => <constant_expr> ]
 [, TIME_RANGE_END => <constant_expr> ]
 [, RESULT_LIMIT => <integer> ] )

스토리지 수명주기 정책별:

STORAGE_LIFECYCLE_POLICY_HISTORY(
 POLICY_NAME => '<string>'
 [, TIME_RANGE_START => <constant_expr> ]
 [, TIME_RANGE_END => <constant_expr> ]
 [, RESULT_LIMIT => <integer> ] )

인자

참고: 함수를 호출할 때 다음 옵션 중 하나를 지정하세요.

  • REF_ENTITY_NAME과 REF_ENTITY_DOMAIN: 객체(테이블)에 연결된 모든 스토리지 수명주기 정책의 실행 기록을 검색해요.

  • POLICY_NAME: 이름으로 지정된 특정 스토리지 수명주기 정책의 실행 기록을 검색해요.

필수:

REF_ENTITY_NAME => 'string'

실행이 발생한 객체(테이블)의 식별자예요. 예를 들어 스토리지 수명주기 정책이 연결된 테이블의 이름이에요.

식별자에 공백이나 특수 문자가 포함되어 있으면 전체 문자열을 큰따옴표로 묶어야 해요. 큰따옴표로 묶인 식별자도 대소문자를 구분해요. 자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고하세요.

REF_ENTITY_DOMAIN => 'string'

스토리지 수명주기 정책이 연결된 객체 타입이에요.

  • 'Table': 스토리지 수명주기 정책이 테이블에 연결되었음을 지정해요.

POLICY_NAME => 'string'

실행 기록을 검색할 스토리지 수명주기 정책의 식별자예요. 정책 이름을 지정하지 않으면 REF_ENTITY_NAME과 REF_ENTITY_DOMAIN 값을 지정해야 해요.

식별자에 공백이나 특수 문자가 포함되어 있으면 전체 문자열을 큰따옴표로 묶어야 해요. 큰따옴표로 묶인 식별자도 대소문자를 구분해요.

자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고하세요.

선택:

TIME_RANGE_START => constant_expr, TIME_RANGE_END => constant_expr

정책 실행이 발생한 최근 14일 이내의 시간 범위예요.

두 매개변수를 모두 지정하지 않으면 함수는 END_TIME 내림차순으로 최신 정책 실행에 대한 행을 (RESULT_LIMIT까지) 반환해요.

RESULT_LIMIT => integer

함수가 반환하는 최대 행 수예요.

범위: 1 ~ 1000

기본값: 1000.

반환 값

이 함수는 스토리지 수명주기 정책의 실행 기록 레코드를 반환해요. 각 레코드에는 정책 이름, 연결된 테이블, 실행 상태, 시작·종료 시간 및 실행 결과를 포함한 정책 실행에 대한 정보가 담겨요.

자세한 열 설명은 출력(Output)을 참고하세요.

출력

이 함수는 다음 열을 반환해요.

EXECUTION_RESULT 필드

EXECUTION_RESULT 열은 정책 실행의 각 작업 유형에 대한 중첩 객체를 포함하는 JSON 객체예요.

  • EXPIRE: 만료 작업(행을 영구 삭제)의 결과를 포함해요.

  • ARCHIVE: 보관 작업(행을 아카이브 스토리지로 이동)의 결과를 포함해요.

  • EXPIRE_ARCHIVE: 만료 작업(아카이브 스토리지에서 행을 영구 삭제)의 결과를 포함해요.

각 중첩 객체는 다음 필드를 포함할 수 있으며, 특정 필드는 특정 작업 유형에 적용돼요.

예시 EXECUTION_RESULT 본문:

EXECUTION_RESULT =
{
 “EXPIRE”: {
 “start_time”: "Thu, 27 Jun 2024 02:57:57 -0700",
 “end_time”: "Thu, 27 Jun 2024 02:58:01 -0700",
 “state”: "SUCCEEDED",
 “rows_expired”: 100,
 “error_message_code”: null,
 “error_message”: null
 }
}

접근 제어 요구 사항

이 SQL 명령을 실행하는 데 사용되는 역할은 최소한 다음 권한 중 하나 이상을 가져야 해요.

사용 시 참고 사항

  • 결과는 쿼리를 실행하는 역할에 부여된 권한을 기반으로 반환돼요.

    • 역할에 전역 APPLY STORAGE LIFECYCLE POLICY 권한이 있으면, Snowflake는 계정의 모든 정책·테이블 연결과 관련된 모든 정책 실행을 반환해요.

    • 역할에 특정 스토리지 수명주기 정책에 대한 APPLY 권한이 있으면, Snowflake는 함수를 호출하는 역할이 소유한 객체에 대한 그 정책의 실행만 반환해요.

    • 역할에 정책에 대한 APPLY 권한 또는 OWNERSHIP 권한이 있지만, 정책이 연결된 테이블에 대한 OWNERSHIP 권한이 없으면, Snowflake는 결과에 그 정책에 대한 실행을 표시하지 않아요.

    • 역할에 정책 권한이 없지만 정책이 연결된 테이블에 대한 OWNERSHIP 권한이 있으면, Snowflake는 오류 메시지를 반환하고 정책 실행을 반환하지 않아요.

예시

REF_ENTITY_NAME과 REF_ENTITY_DOMAIN 인자를 지정해 t1이라는 테이블에 대한 스토리지 수명주기 정책 기록을 검색해요.

SELECT * FROM
 TABLE (
 INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY(
 REF_ENTITY_NAME => 'my_db.my_schema.t1',
 REF_ENTITY_DOMAIN => 'Table'
 )
 );

slp라는 정책과 연결된 각 테이블에 대한 스토리지 수명주기 정책 기록을 검색하고 결과를 100행으로 제한해요.

SELECT * FROM
 TABLE(
 INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY(
 POLICY_NAME => 'my_db.my_schema.slp',
 RESULT_LIMIT => 100
 )
 );

지정된 정책에 대해 최근 한 시간 내에 스케줄된 가장 최근 100개의 실행을 검색해요.

SELECT * FROM
TABLE(
 INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY(
 POLICY_NAME => 'my_db.my_schema.slp',
 TIME_RANGE_START => DATEADD('HOUR', -1, CURRENT_TIMESTAMP()),
 RESULT_LIMIT => 100
 )
);

주어진 테이블에 대해 30분 시간 범위 내의 정책 실행 기록을 검색해요.

SELECT * FROM
TABLE (
 INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY(
 REF_ENTITY_NAME => 'my_db.my_schema.t1',
 REF_ENTITY_DOMAIN => 'Table',
 TIME_RANGE_START => TO_TIMESTAMP_LTZ('2024-07-08 12:00:00.000 -0700'),
 TIME_RANGE_END => TO_TIMESTAMP_LTZ('2024-07-08 12:30:00.000 -0700')
 )
);

더 알아보기