繁体   English   中英

在数据块中使用增量时间旅行的时间系列

[英]Time Serie with delta time travel in databricks

我将产品价格存储在增量表中。 的架构是这样的:

id | price |  updated
1  |   3   | 2022-03-21
2  |   4   | 2022-03-20
3  |   3   | 2022-03-20

我使用 id 字段作为主键插入行并更新价格和更新字段。

我正在尝试使用数据块时间旅行随着时间的推移获得一系列价格。 但是看文档显然我只能看像这样的表格的 2 个版本

%sql
SELECT count(distinct id) - (
SELECT count(distinct id)
FROM table TIMESTAMP AS OF date_sub(current_date(), 7))
FROM table

有没有办法select 各版本不同价折? 喜欢:不同的价格。

出于以下原因,我真的不建议使用时间旅行:

  • 如果你的数据经常更新,那么你会有很多版本,你的性能会随着时间的推移而下降,因为处理大量版本(成千上万)会给驱动程序带来很大压力
  • 正如您已经看到的那样,很难进行历史分析 - 对于每个版本,您都需要有子查询和联合数据。

相反,您可以使用两个表 - 第一个是实际数据,第二个是历史数据,理想情况下,构建 SCD 类型 2(缓慢变化的维度),其中包含价格活跃的时期的标记。 您可以使用 更改数据馈送 (CDF)功能构建第二个表,以从第一个表中提取更改,然后使用 MERGE 操作将它们应用到第二个表。 Databricks 文档包括使用 MERGE 构建 SCD 类型 2 (尽管没有 CDF)的示例。

使用这种方法,您可以轻松执行历史分析,因为所有数据都在同一个表中,您不需要使用时间旅行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM