数仓架构--之数据拉链表
不登高山不知天之高也,不临深溪不知地之厚也
序
一句话道出求知的路劲,要想知道这个东西难不难只有去行动,去攀登。接下来在这里比较简单的讲讲数仓中的拉链表
拉链表作为处理历史数据的非常常用的表,掌握拉链表可以说掌握了数仓开发的核心,废话不多说,直接进入正题。
拉链表定义
可参考百度不详细说明,主要是记录某些数据特征在某一段时间内持续的状态
拉链表特征
- 开始时间和结束时间两个字段;
- 需要生成1-2个标志全表字段的字段,根据该字段进行数据变化的判断,如:MD5_FILED(存主键)和NON_MD5_FIELD(存主键以外的必要业务字段);
MD5生成可以如下:select listagg(to_char(column_name)) from user_table_columns left join user_cons_columns on t2.position is not null where columnname not in (技术字段)
- 主键 业务主键和开始时间;
- 辅助字段,跑批时间、跑批字段、跑批批次等
拉链表加工
重跑机制
- 删除当前批次之后开链的数据
delete from 表 where start_date >=batch_date and jobname = '123'