CREATE SNAPSHOT TAG
在 FUSE 表上创建一个具名快照标签。快照标签会为表在某个特定时间点的状态添加书签,使你之后可以通过 AT 子句查询该状态。
语法
ALTER TABLE [<database_name>.]<table_name> CREATE TAG <tag_name>
[ AT (
SNAPSHOT => '<snapshot_id>' |
TIMESTAMP => <timestamp> |
STREAM => <stream_name> |
OFFSET => <time_interval> |
TAG => <tag_name>
) ]
[ RETAIN <n> { DAYS | SECONDS } ]
参数
示例
为当前快照打标签
SET enable_experimental_table_ref = 1;
CREATE TABLE t1(a INT, b STRING);
INSERT INTO t1 VALUES (1, 'a'), (2, 'b'), (3, 'c');
-- Create a tag at the current snapshot
ALTER TABLE t1 CREATE TAG v1_0;
-- Insert more data
INSERT INTO t1 VALUES (4, 'd'), (5, 'e');
-- Query the tagged snapshot (returns 3 rows, not 5)
SELECT * FROM t1 AT (TAG => v1_0) ORDER BY a;
基于现有引用创建标签
-- Copy from an existing tag
ALTER TABLE t1 CREATE TAG v1_0_copy AT (TAG => v1_0);
-- Tag a specific snapshot
ALTER TABLE t1 CREATE TAG before_migration
AT (SNAPSHOT => 'aaa4857c5935401790db2c9f0f2818be');
-- Tag the state from 1 hour ago
ALTER TABLE t1 CREATE TAG hourly_checkpoint AT (OFFSET => -3600);
创建带自动过期时间的标签
-- Tag expires after 7 days
ALTER TABLE t1 CREATE TAG temp_tag RETAIN 7 DAYS;
-- Tag expires after 3600 seconds
ALTER TABLE t1 CREATE TAG debug_snapshot RETAIN 3600 SECONDS;