从数据仓库到数据中台,再到数据湖,最后到现在新提出的湖仓一体,存算分离。大数据的生态越来越丰富,新技术层出不穷。其中批处理这个分支,是指将各类数据归一到数据仓库,定时处理后给下游各种应用场景使用,而维度建模正适用于这种大数据量,复杂的场景,通过构建庞大的重型模型,提高复用率,这就是所谓的用空间换时间。
本文主要分享我在数仓开发过程中事务事实的设计经验,供大家参考,如有不正确之处,请评论指正,我们共同进步。
本人的理解,事实大部分是指一个动作,是业务过程的体现。比如用户下单这个动作,用户登录这个动作,都可以抽象形成事实。
事实表中主要包含事实事件所产生的度量,用于关联的外键,退化的维度等。
举个例子,电商用户下单这个动作,可以抽象形成订单事实表,该事实表用来记录用户下单这个过程产生的数据,比如购买商品的数量,金额等度量,订单号,订单状态,用户ID等维度
事务事实表的一行对应空间或时间上某点的度量事件。
例如,用户页面点击情况的日志记录。这类日志通常是以打点的形式按时间顺序记录下来,历史的数据并不会改变。
周期快照表的每行汇总了发生在某一标准周期,如某一天、某周、某月的多个度量事件。
例如,用户年下单量,下单金额。
累计快照表的行汇总了发生在过程开始和结束之间可预测的步骤内的度量事件。
例如,用户交易累计快照。
尽管多数度量事件获取的结果是数字化的,但也存在某些事件仅仅记录一系列某一时刻发生的多维实体。
例如,在给定的某一天发生的学生参加课程的事件,可能没有可记录的数字化事实,但该事实行带有一个包含日历天、学生、教师、地点、课程等定义良好的外键。利用这样无事实的事实表也可以分析发生了什么。