本文介绍了CREATE或REPLACE语句是否会影响雪花中的时间旅行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我在Snowflake中创建一个表,然后使用CREATE或REPLACE语句创建另一个同名的表,则无法使用时间旅行访问第一个表的内容。

例如,如果我运行此代码

CREATE TABLE "MY_DB"."MY_SCHEMA"."MY_TABLE" (COL1 VARCHAR, COL2 NUMBER);
INSERT INTO "MY_DB"."MY_SCHEMA"."MY_TABLE" VALUES ('A',1);

..。然后在五分钟内运行这段代码

CREATE OR REPLACE TABLE "MY_DB"."MY_SCHEMA"."MY_TABLE" (COL1 VARCHAR, COL2 NUMBER);
INSERT INTO "MY_DB"."MY_SCHEMA"."MY_TABLE" VALUES ('B',2);
SELECT * FROM "MY_DB"."MY_SCHEMA"."MY_TABLE"
UNION
SELECT * FROM "MY_DB"."MY_SCHEMA"."MY_TABLE" AT (offset => -60*1)

查询仅返回第二个表中的值。这是意料之中的行为吗?我试着在谷歌上搜索或在雪花文档中找到澄清,但没有成功.

谢谢

推荐答案

是-这是预期的。通过运行CREATE或REPLACE,您已经删除了原始表,并将其替换为一个新表。将不会有来自发出替换表之前的时间旅行数据。

如果要从表中删除数据并保留数据用于时间旅行,请改用TRUNCATE TABLE语句。

https://docs.snowflake.com/en/sql-reference/sql/truncate-table.html

这篇关于CREATE或REPLACE语句是否会影响雪花中的时间旅行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-26 09:05