使用SHOW_INITIAL_ROWS创建的Snowflake Stream查询报错排查
Snowflake Stream创建报错问题排查
SHOW_INITIAL_ROWS参数与时间旅行的关联
两者存在直接依赖关系:
- 当你在创建Stream时指定
SHOW_INITIAL_ROWS = TRUE,Snowflake需要读取Stream创建时刻的源表全量快照作为Stream的初始返回数据,这个读取快照的动作底层就是调用Snowflake的时间旅行能力实现的。
报错触发原因
你遇到的错误:
Time travel data is not available for table [...]. The requested time is either beyond the allowed time travel period or before the object creation time
常见触发场景如下:
- 源表时间旅行保留周期不足:比如你给该表配置的时间旅行保留期为1天,但你创建Stream的时间距离源表对应快照的生成时间已经超过1天,对应快照已被系统自动清理,无法回溯。
- 源表近期被重建过:如果执行过
create or replace table语句覆盖重建了该表,即使表名和结构不变,表的内部对象ID已经更新,时间旅行只能读取当前表对象创建之后的快照,无法回溯重建前的时间点数据。 - 时间旅行配置曾被下调:比如之前该表的时间旅行保留期设置为7天,近期修改为1天,所有超过1天的历史快照会被立即清理,此时创建Stream需要读取更早的快照就会触发报错。
规避方案
- 先调整源表的时间旅行保留周期到足够覆盖需要回溯的时间范围,再重新创建Stream
- 若无法调整时间旅行配置,可以先手动全量读取一次源表作为初始数据,后续再消费Stream的增量数据即可
内容的提问来源于stack exchange,提问作者rmesteves
相关产品推荐
相关产品推荐

