You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Databricks执行Snowflake时间旅行查询报错问题排查

问题排查:Snowflake时间旅行查询在Databricks报错的原因

核心差异:Snowflake与Databricks的时间旅行机制不兼容

你在Snowflake中可正常运行的查询:

SELECT * FROM Sample CHANGES(INFORMATION => DEFAULT) AT(TIMESTAMP => '2023-05-10 00:43:34.885 -7000')

在Databricks执行时触发错误:

Time travel data is not available for table Sample. The requested time is either beyond the allowed time travel period or before the object creation time.

以下是具体排查方向:

  • 时间旅行支持范围不同
    Snowflake的时间旅行保留期可通过DATA_RETENTION_TIME_IN_DAYS配置(默认1天,企业版最高90天),而Databricks仅Delta Lake表支持时间旅行,默认保留期为7天;普通Parquet/CSV表完全不支持时间旅行。先确认Databricks中Sample表的类型:

    • 执行DESCRIBE EXTENDED Sample;查看dataRetentionDurationInDays字段,确认保留期是否覆盖目标时间戳
    • 若为非Delta表,直接不支持时间旅行,必然报错。
  • 时间戳格式与时区解析差异
    Snowflake支持-7000这类非标准时区格式,但Databricks仅兼容±HH:mm格式(如-07:00)。尝试将时间戳改为'2023-05-10 00:43:34.885 -07:00'后重试,避免时区解析偏差导致时间范围判断错误。

  • 表的创建时间不匹配
    确认Databricks中Sample表的创建时间是否晚于指定的2023-05-10 00:43:34.885 -7000。如果该表是从Snowflake同步而来,且同步时间晚于目标时间戳,自然无法回溯到表创建前的时间点。

  • 语法规则不兼容
    Snowflake的CHANGES是特有的变更数据捕获(CDC)语法,Databricks没有对应实现。Delta表的时间旅行需用TIMESTAMP AS OF语法,CDC功能需额外开启changeDataFeed后通过.changes()查询:

    -- 基础时间旅行查询
    SELECT * FROM Sample TIMESTAMP AS OF '2023-05-10 00:43:34.885 -07:00'
    -- 开启CDC后的变更数据查询
    SELECT * FROM Sample.changes('2023-05-10 00:43:34.885 -07:00', current_timestamp())
    

内容的提问来源于stack exchange,提问作者Adi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:15:08