大数据面试官

我们不生产数据,我们只是大数据的搬运工。

导航

【数仓面试】什么是拉链表?

面试官:什么是拉链表?

当一条数据有变动时,如更新、删除、新增,即想在原表中保留这条数据变更前的历史数据,又想保存最新的数据,就需要拉链表。
也就是,当一条数据有变动时,不把历史数据删除覆盖,而是既保存一条失效的历史记录,又保存一条最新的记录。

面试官:拉链表和增量表、全量表相比,有什么优势?

  • 增量表:只保留一份最新全量数据,无法记录历史数据状态
  • 全量表:每天保留一份全量数据,可以保留所有历史数据,但占用过多存储空间
  • 拉链表:既能保留历史数据状态,有能保存最新数据状态,且不浪费存储

面试官:拉链表设计方法,怎么更新?

可以在增量表的基础上增加2个字段:

  1. 数据有效期起始日期
  2. 数据有效期结束日期

拉链表数据更新方法:
当数据状态有删除变更时,历史数据置为失效(结束日期设置为前一日),同时新增一条数据的最新记录(起始日期设置为当日,结束日期设置为业务失效日期或'9999-12-31')。

下游从拉链表取数:
where 起始日期<=当日 and 结束日期>=当日(即只取有效日期内的数据)

posted on 2022-07-31 18:26  大数据面试官  阅读(1258)  评论(0)    收藏  举报