【发布时间】:2021-11-14 07:24:39
【问题描述】:
我们得到如下数据,创建时间列告诉我们记录的顺序。需要处理整批记录。加工后需要保持SCD类型-2。并维护活动和非活动列。
key data creation_time (in mili seconds)
k1 abc 2021-09-16 14:17:28.447000
k1 abcd 2021-09-16 18:50:42.676000
k1 abc 2021-09-16 18:50:42.853000
k1 abcd 2021-09-16 18:50:43.141000
k1 abc 2021-09-16 18:50:43.809000
k1 abcd 2021-09-16 18:50:44.288000
k1 abc 2021-09-16 18:50:44.854000
应用 SCD 类型后的输出 - 2.
规则#。传入数据的顺序是基于creation_time的,只有当传入的记录数据发生一些变化并且其active_dtmz(直到秒)为增量值时,才会插入新记录并停用先前的记录。
key data active_dtmz inactive_dtmz
k1 abc 2021-09-16 14:17:28 2021-09-16 18:50:42
k1 abcd 2021-09-16 18:50:42 2021-09-16 18:50:43
k1 abc 2021-09-16 18:50:43 2021-09-16 18:50:44
k1 abcd 2021-09-16 18:50:44 3001-01-01 00:00:00
关键点
- active-dtmz 只有几秒钟。
- 如果下一条记录在同一键的数据方面重复,则忽略。
【问题讨论】:
-
为什么结果集只有4行?
-
active_dtmz 值不包含毫秒,这就是为什么只有 4 条记录。这是 active_dtmz 应该只包含秒的要求。
-
。 .问题需要修改(或者你需要提出一个新问题)才能清楚地解释逻辑。 “只有几秒钟”是行不通的。如何处理具有相同秒值的多行?
-
当然,我添加了更多细节作为规则,如果您还有任何问题,请告诉我。我需要了解它是否可行。感谢您的宝贵时间。
标签: sql stored-procedures amazon-redshift