知识卡片
时态表:随时间变化的维度快照查询
内容
时态表是一种会随时间推移不断变化、但查询时需要按”某个历史时间点当时的值”来关联的表,比如汇率表:不同时刻汇率不同,一笔历史订单结算时应该用它成交那一刻的汇率,而不是当前最新的汇率。这类需求如果直接用当前值去关联历史事实数据会得到错误结果。解决办法是把这张维度表包装成一个”时态表函数”,查询时给定一个时间点,函数返回的是这张表在那个时间点的快照版本,再用这个快照去和事实表按时间戳关联。这本质上是数据库中”渐变维度(Slowly Changing Dimension)”问题在流计算里的对应形态:业务事实需要绑定的不是维度的当前状态,而是事件发生时刻的维度状态,这个原则在任何需要历史归因的分析场景里都成立,不局限于某个具体框架的语法实现。
参考来源
《Flink入门与实战》第7章《Table API和SQL》