首页 > 解决方案 > 填充有效性卫星并处理乱序更改事件

问题描述

https://www.linkedin.com/pulse/data-lt-mysteries-effectivity-satellite-driving-key-patrick-cuba/?trk=read_related_article-card_title中,Patrick Cuba 展示了仅插入逻辑在填充效率卫星。

但是,当将其应用于我们有乱序事件的事件流时,摄取和查询逻辑的复杂性似乎爆炸式增长。

例子

考虑这一系列描述个人雇佣关系变化的变化事件。

person_id 员工ID src_event_time 更改类型
一个 X t1 插入
一个 X t2 删除
一个 X t3 插入

考虑以下场景,其中事件按顺序出现t3, t1, t2,我们将其摄取到有效性链接卫星表中:

1.处理事件t3

person_id 员工ID 有效性开始日期 有效性结束日期
一个 X t3 t9999

2.处理事件t1

在我们的摄取逻辑中,我们可以确定新事件时间t1在现有事件之前t3。所以我们将有效性设置为介于t1t3

person_id 员工ID 有效性开始日期 有效性结束日期
一个 X t3 t9999
一个 X t1 t3

3.处理事件t2

这就是事情变得有点奇怪的地方。我们的逻辑必须检测到存在有效期限(从 t1 到 t3),然后通过添加 (t1 - t2) 有效期限来“纠正”它。由于我们的约束是我们只插入而不更新现有行,因此我们现在有两个具有相同 start time 的有效行t1

person_id 员工ID 有效性开始日期 有效性结束日期
一个 X t3 t9999
一个 X t1 t3
一个 X t1 t2

问题

这是正确的方法吗?我将如何查询给定时间点的关系状态?(例如,我将如何查询t1.5, 或的关系t2.5?)

标签: data-vault

解决方案


不太正确 Data Vault Guru 包含更好的示例、加载代码和查询代码


推荐阅读