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;

더 알아보기