SYSTEM$SET_ROW_TIMESTAMP_ON_ALL_SUPPORTED_TABLES
SYSTEM$SET_ROW_TIMESTAMP_ON_ALL_SUPPORTED_TABLES
이 시스템 함수를 사용해 기존 테이블에서 행 타임스탬프를 대량으로 활성화해요. 이 함수는 컨테이너 안의 모든 기존 적격 테이블에 행 타임스탬프 컬럼을 추가하고, 새로 생성된 테이블이 자동으로 행 타임스탬프를 활성화하도록 보장해요. 함수를 성공적으로 실행하려면 함수를 호출하는 컨테이너에 대한 MODIFY 권한이 필요해요.
행 타임스탬프가 활성화된 후 테이블은 각 행이 마지막으로 수정된 시각을 반환하는 METADATA$ROW_LAST_COMMIT_TIME 컬럼을 노출해요. 이를 통해 행 수정 시간 기반의 변경 추적, 증분 처리, 타임 트래블 쿼리가 가능해져요. 자세한 내용은 Use row timestamps to measure latency in your pipelines을 참고해요.
출처: Snowflake SQL Reference - SYSTEM$SET_ROW_TIMESTAMP_ON_ALL_SUPPORTED_TABLES
본문
구문
SELECT SYSTEM$SET_ROW_TIMESTAMP_ON_ALL_SUPPORTED_TABLES('<level>', '<qualified_name>')
- 첫 번째 인자는 레벨이에요:
schema,database또는account중 하나. - 두 번째 인자는 컨테이너의 완전 정규화 이름이에요.
인자
필수:
- 컨테이너 레벨이에요.
account,database,schema중 하나일 수 있어요. - 컨테이너의 완전 정규화 이름이에요. 예: schema 레벨의 경우
my_db.myschema.
예시
다음 예시는 시스템 함수를 사용해 특정 스키마 내의 모든 지원 테이블에 대해 행 타임스탬프를 대량 활성화하는 방법을 보여줘요. 또한 기존 테이블에 이 기능이 적용되는지 확인하고, 스키마 레벨 기본값을 설정해 향후 모든 테이블이 자동으로 METADATA$ROW_LAST_COMMIT_TIME 컬럼을 포함하도록 해요.
CREATE OR REPLACE DATABASE my_db;
CREATE OR REPLACE SCHEMA my_schema;
USE DATABASE my_db;
USE SCHEMA my_schema;
CREATE OR REPLACE TABLE my_table (id INT, v STRING);
CREATE OR REPLACE TRANSIENT TABLE my_transient_table (id INT, v STRING);
CREATE OR REPLACE TEMP TABLE my_temp_table (id INT, v STRING);
SELECT SYSTEM$SET_ROW_TIMESTAMP_ON_ALL_SUPPORTED_TABLES(
'schema',
'my_db.my_schema'
);
-- System function sets the container default so that new tables will get row timestamp going forward
SHOW PARAMETERS LIKE 'ROW_TIMESTAMP_DEFAULT' IN SCHEMA my_db.my_schema;
INSERT INTO my_table VALUES (1, 'a'), (2, 'b');
INSERT INTO my_transient_table VALUES (10, 'x');
INSERT INTO my_temp_table VALUES (100, 'tmp');
SELECT ID, METADATA$ROW_LAST_COMMIT_TIME FROM my_table ORDER BY ID;
SELECT ID, METADATA$ROW_LAST_COMMIT_TIME FROM my_transient_table ORDER BY ID;
SELECT ID, METADATA$ROW_LAST_COMMIT_TIME FROM my_temp_table ORDER BY ID;