数据仓库详细信息(dwd )数据细节层主要从业务数据库中清洗同步的ODS层数据,并将其集成到相应的事实表中。 事实表是数据仓库维度建模的核心,必须紧紧围绕业务流程进行设计。 拿到业务系统的表结构后,进行粗略的整理,与业务端沟通整个业务流程,分析整个业务生命周期,明确关键业务流程,在满足业务需求的前提下,设计尽可能通用的模型。

业务方面有时只考虑现在的状况。 例如,业务要求通过审查的人的详细数据,我们设计了全量的审查明细表。 几天后,业务方又想分析审批流程各个环节的转变情况,我们还需要设计增量明细。 一张表可以满足的事情变成了两张,一方面舍弃了前面的表否定了自己前面的工作,另一方面所有依赖的下游都需要改变取数逻辑,工作量增加了,表的数量增加了,数据就会出现两个逻辑出口,口径的统一和数据管理也存在问题这些都可以在模型设计前期与业务沟通的过程中避免。 因此,我们在与业务沟通中,一方面要了解整个业务周期,另一方面要从业务侧的角度分析当前的业务需求和未来的潜在需求,考虑尽可能用一次设计进行全覆盖。

DWD层的主要事实表有三种:事务处理事实表、周期快照事实表和累计快照事实表。

(一)事务事实表事务事实表主要分为两类单事务事实表和多事务事实表。

1 .针对单一事务事实单单一业务流程设计事实单。 这种设计可以按业务流程进行单独分析,且业务端符合其逻辑认知,不影响使用。

2 .多事务事实表单事务事实表比较容易实现,但也有一定的缺点。 1 .如果假设多个业务流程的维度和粒度一致,且业务流程的维度多,事实相对少,我们就需要将每个业务流程的维度关联起来,存储量增加,同时join维度的存储计算量也会多次重复2 .随着多个业务过程中多个表、业务的发展,表中数量明细资产过多,管理不便。 所以,有多个事务事实表。

要使用多个事务处理事实表而不是单个事务处理事实表,必须了解三个问题。 1 .如何同时记录多个业务流程的信息(实现多事务处理)? 2 .如何进行单个业务流程的统计分析? 3 .什么时候可以使用多事务事实表(多事务极限)?

对于第一个问题,通常主要方法是在一个字段中存储每个业务流程的度量。 也就是说,每个事实都使用不同的字段进行保存。 如果不是当前业务流程的度量,请运行零值处理。 这样,通过获取每个实例的最新记录,可以了解到该实例到统计日期为止的业务进展情况。

针对第二个问题,单一事务事实表一般被用来分析必须从两个方面入手。 一个是明细数据,另一个是统计数据,统计某个时间区间内事务的发生频率,例如最近一周的订单数。 详细信息数据也存储在多个事务处理的事实表中,但统计数据必须通过为每个业务流程设置当天是否完成的字段来解决。 我们可以统计出在周期区间内几天完成的统计结果。

对于第三个问题,1 .多个事务处理事实表中的多个业务流程的粒度和维必须匹配。 粒度不一致就不能合并。 2 .如果实例在一天内还没有结束,则多事务处理事实表单将存在多个数据。 如果需要统计每个实例的业务流程时间或查看每个实例的最新状态,则必须过滤所有数据的最新数据,然后计算每个数据并比较性能。

以下是多事务处理表的具体设计时操作。 在传统的多事务处理表中,一个业务流程可能有一个数据,只有当前正在发生的业务流程有相应的数据,其他数据可能设置为零。 如果一天中一个实体发生多个业务流程,则应该有一些数据。 这里有两种方法。 一种情况是,每个业务流程都有数据,而非当前业务流程的度量设置为零。 这样的好处是,我们在统计测量值时可以直接进行sum和其他操作。 另一种方法是保留最新业务流程之前业务流程的所有度量。 这将减少总数量。 同一天可能完成多个业务流程。 但是,汇总计时需要标记为是否为当天,过滤重新汇总。 保证一个业务流程中只有一个记录有效。

事务事实表区分:

单一事务事实表多个事务事实表业务过程一个多个粒度互不相关同一粒度维度互不相关的一致事实,只能取当前业务过程的事实,为可累积的事实需要保留多个业务过程巾的事实,当前业务过程以外的事实需要设置零处理, 需要为了可累积的事实而将多个业务过程冗馀化,需要冗馀性的多次不同的业务流程,需要冗馀性的一次(记录次数=业务流程数)的理解度容易理解,不混淆且难以理解。 需要用标签限定计算的存储成本多,每个业务流程计算少,不同的业务流程融合,降低了存储计算量,但存在大量零值。 )二)解决累计快照事实表多事务事实表第三个问题的第二点是是否有表保存实例的所有最新状态。 这样,每次统计全部数据时,就不需要取全部数据重新计算统计最新数据。 这实际上是累计快照事实表的生成。 将所有实例仅保存为最新状态。 其实现方式可以用拉链列表方式实现,以事务列表中的历史最新数据为初始数据,每天更新其中的数据。 这样可以存储所有数据,并根据表计算相关工作时间。

但是,也存在数据量过多的问题。 要每天以最新状态保存全部量,必须减小表的生命周期设置。

(三)周期快照事实表事务处理事实表主要存储可累积行的度量。 需要若干状态计量的,如账户余额、买方星级、商品库存、卖方累计交易额等,请办公

事实表就不太适合。就需要周期快照事实表。我们按照一定的周期进行汇总。周期快照事实表产出方式1.对于可以通过对事务表聚集的数据,从事务事实表中汇总得到,但是这样可能逻辑比较复杂。2.无法聚集的数据,从操作系统中以快照的方式同步下到ods层,再在进行加工。

表之间的关系图:

总结

数据明细层是下游计算各种信息的基础,数据资产的底层建设,我们在设计时,尽量设计通用的模型。针对不同的业务需求,采用不同的表设计,本篇仅介绍了相关表的概念和逻辑,具体设计过程,要针对具体业务再展开。