update 两个表关联_拉链表开发注意事项

3682289c24eb88eb485b50c25da30f68.png

一般而言,在总体数据量比较多,而每天真正变化的数据量并不是很多的情况下,才会选择做拉链存储。离线数仓开发中,如果数据每天变化或者频繁变化,但又想做成拉链的形式存储数据,这就需要视业务需要而定。就借据表而言,计提利息(应计利息)字段每天都是变化的,随着日期和余额的变动而变动,如果业务上不是很重要(业务中更关注实还利息),或者说通过其他方式依然能反映此字段的变化情况的话,则在判断是否拉链的时候,可去掉此字段的比对条件进行拉链操作。但是后续在依赖拉链表开发的过程中,就需注意计提利息字段相关指标造成的不利影响,如下:(1)计提利息字段:使用拉链表的数据,统计此字段是不对的;(2)其他关联字段:因发生利息还款导致的计提利息字段变化,其他字段均不变化的话,而这时候取当天拉链的增量数据加工出来的一些指标的值会偏小,比如说:本日回收利息。
针对上述第(2)点,最好不要使用拉链表的增量数据去加工指标,这样会产生较大的数据差异。可以结合两个角度取数,首先是业务需要的角度,比如:需要反映放款、结清和回款行为的数据。其次就是数据变化角度,只要借据发生放款、结清和回款动作时,更新字段会发生变化,在理想意义上借据从产生到结束,也无非这几个动作。在实际开发过程中,需要注意一些特殊情况:数据没有发生变化,但是update_time更新字段却真实变化,这种情况导致最终的增量数据集的数据量变大,虽然不影响指标值的统计;抽数过程中会多抽一点,把第二天凌晨的数据也抽进来了,如下图中的B、C和D的情况。若限制start_dt等于当天作为增量数据,虽然数据都能进来,但统计putout_date放款指标的时候,C记录在当天一定是统计不到,也不该被统计到的,但关键是在第二天也是大概率取不到且统计不到的。以上特殊情况表明,直接根据拉链表数据特征去取增量数据会导致某些指标值偏小。其实,如果结合业务含义,从全量数据中取增量数据会更加合理。从2020-09-20的全量数据中删选出putout_date=stat_dt,这样放款指标就都能计算到。

65845ed9de4fcaa90d8c6c79ddd1f043.png
拉链表增量数据

此外,在开发拉链表之前,应该做好数据探测的工作,对空值字段、更新字段以及业务字段进行分析,再选择适当的方式进行拉链存储并做好后续的数据校验工作。例如:空值字段的排查,某条记录的某个字段初始化时就是null值,在比对数据时不对空值子段做处理,则会造成拉链存储感知不到此字段的变化,造成数据准确性问题等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值