ETL架构师面试题(五)



建立映射

一.什么是代理键?简述代理键替换管道如何工作。

       在维度表的迁移过程中,有一种处理方式是使用无意义的整型值分配给维度记录并作为维度记录的主键,这些作为主键的整型值称为代理键(Surrogate Key)。使用代理键有很多好处,如隔离数据仓库与操作环境,历史记录的保存,查询速度快等。

       同时,在事实表的迁移过程中,为了保证参照完整性也需要进行代理键的替换工作。为了代理键替换的效率高一些,我们通常在数据准备区中建立代理键查找表(Surrogate Mapping Table or Lookup Table)。代理键查找表中保存最新的代理键和自然键的对应关系。在对事实表进行代理键替换时,为了保证效率高,需要把代理键查找表中的数据加载到内存中,并可以开多线程依次替换同一记录的中的不同代理键,使一条事实记录在所有的代理键都替换完后再写如磁盘中,这样的替换过程称为代理键替换管道(Surrogate Key Pipeline)。

二.为什么在ETL的过程中需要对日期进行特殊处理?

       在数据仓库的项目中,分析是主导需求,而基于日期和时间的分析更是占了很大的比重。而在操作型源系统中,日期通常都是SQL的DATETIME型的。如果在分析时,使用SQL对这种类型的字段临时处理会出现一些问题,如效率很差,不同的用户会采用不同的格式化方法导致报表不统一。所以,在数据仓库的建模时都会建立日期维度表和时间维度表,将用到的和日期相关的描述都冗余到该表中。

       但是,并不是所有的日期都被转化为日期维度表的外键。日期维度表中的记录是有限的,有些日期如生日等可能会比日期维度表中记录的最小日期还要早,这类字段可以直接在数据仓库中保存SQL的DATETIME型。而像购买日期等与分析的业务紧密相关的通常都需要转化为日期维度表的外键,可以用日期维度表中统一的描述信息进行分析。

三.简述对一致性维度的三种基本的交付步骤。

       数据整合的关键就是生成一致性维度,再通过一致性维度将来自不同数据源的事实数据合并到一起,供分析使用。通常来说,生成一致性维度有如下三个步骤:

1.标准化(Standardizing)

标准化的目的是使不同数据源的数据编码方式,数据格式等相同,为下一步数据匹配打下基础。

2.匹配(Matching and Deduplication)

数据匹配的工作有两种,一种是将不同数据源的标识同一事物的不同属性匹配到一起,是数据更完善;另一种是将不同数据源的相同数据标识成重复,为下一步的筛选打下基础。

3.筛选(Surviving)

数据筛选的主要目的是选定一致性维度作为主数据(Master Data),也就是最终交付的一致性维度数据。

四.简述三种基本事实表,并说明ETL的过程中如何处理它们。

       事实表从粒度的角色来划分可以分为三类,分别是交易粒度事实表(Transaction Grain)、周期快照粒度事实表(Periodic Snapshot)和累计快照粒度事实表(Accumulating Snapshot)。在事实表的设计时,一定要注意一个事实表只能有一个粒度,不能将不同粒度的事实建立在同一张事实表中。

       交易粒度事实表的来源伴随交易事件成生的数据,例如销售单。在ETL过程中,以原子粒度直接进行迁移。

       周期快照事实表是用来记录有规律的,固定时间间隔的业务累计数据,例如库存日快照。在ETL过程中,以固定的时间间隔生成累计数据。

       累积快照事实表用来记录具有时间跨度的业务处理过程的整个过程的信息。在ETL过程中,随着业务处理过程的步骤逐步完善该表中的记录。

五.简述桥接表是如何将维度表和事实表进行关联的?

       桥接表(Bridge Table)是维度建模中的一类比较特殊的表。

       在数据仓库的建模时,会遇到具有层次结构的维度表,对于这样的表有一种建模方式是建立父子表,即每条记录上包括一个指向其父记录的字段。这种父子表的建立在层级深度可变时尤其有用,是一个紧凑而有效的建模方式。但是这种建模方式也有缺点,就是用标准SQL很难对递归结构进行操作。

      与这种递归结构的父子表不同,桥接表采用不同的建模方式也可以表示这种层级结构。桥接表是建立在维度表和事实表中间的一个具有较多冗余信息的表,其中的记录包含层级结构中节点到其下面每个节点的路径。表结构如下所示:

父关键字

子关键字

父层数

层名

底端标识

顶端标识

        在桥接表中,节点与其下面的任意一个节点都建立一个关联记录保存在表中,即父子关系不再局限在相邻层,如第一层与第三层同样有父子关系,通过父层数可以区分相隔了几层。这样,可以通过父层数和父子关系来进行层级结构的查询。

当然,桥接表也不是一个完备的解决方案,它只能是在某些情况下是查询变得容易。

六.迟到的数据对事实表和维度表有什么影响?怎样来处理这个问题?

       迟到的数据分为两种,一种是迟到的事实表数据,另一种是迟到的维度表数据。

       对于迟到的事实记录,我们可以插入到相应的事实表中。在插入的同时,还需要做一些处理。首先,对于具有SCD TYPE 2型维度的事实记录需要在插入前判断该事实记录的发生日期到目前为止,维度记录是否发生过变化,如果有变化,该事实记录需要对应到事实发生时的维度记录上。其次,在事实记录插入完成后,与该事实表相关的聚集事实表和合并事实表需要做相应的处理。

       对于迟到的维度记录,我们需要做的处理要复杂一些。首先,如果迟到的维度记录是第一次进入数据仓库中,那么需要在维度表中生成一条维度记录,并将与该维度记录对应的事实记录的外键进行更新。其次,如果迟到的维度记录是对原维度进行的修改,那么我们在维度表中生成一条新记录的同时,还需要找到维度本次变化到下次变化间的事实行,并将其维度外键更新为新加维度的代理关键字。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值