数据仓库具有面向主题的特性,那么就会有主题的概念, 数仓建设是遵循纵向分层开发,横向划分主题域设计 ,数仓分层就不在这次谈了, 这次我会结合本人数仓工作实践总结的经验来聊聊数仓主题域划分,同时会引申出主题划分,和数据域是什么,业务过程等。
这个对于数仓工程师来说是必备的能力,比如当你面临着一个新业务的开启,需要从0到1开始搭建数据仓库或者数据集市,这时候就要考虑到主题域和主题的合理划分。
下面结合本人对搬家业务的数仓建设,进行主题域划分和主题划分实践 ,当然项目的大小决定着这是一个小型的数据集市 还是 企业级的数据仓库。
数仓主题域 :主题域通常是联系较为紧密的数据主题的集合,根据业务需求分析的视角进行划分抽象归类。
划分方法 :主题域划分的方法一般有几种
数仓主题 :是在较高层次上将企业生产上的各个系统中 某一分析对象 的数据进行整合、归类并分析的一种范围,属于一个抽象概念,简单点说每一个主题对应一个宏观分析领域。
划分方法 :说白了主要就是要识别出分析对象主体,做主题划分和主题域划分,个人建议是要站在全局的视角来看,然后先划分出主题域,再接着在主题域里面划分出各个主题,主题域的划分一般比较谨慎,一旦定下来了避免频繁变动,虽然数仓建设是迭代建设的,不能保证一次性初始化好,但我们的主题域划分和主题划分要尽可能地涵盖企业的所有业务,以及在新业务进来时能够无影响地被包含进来和可扩展主题域。
我就分享我负责过的搬家业务数仓建设中,我是如何划分主题域和划分主题的,规模相当于数据集市,即小型的数据仓库
划分主题域:
首先我是按照业务系统来划分的,搬家是企业业务中一个独立的业务线,所对应的业务系统也是跟其他系统是独立开的,那么这时候我按照业务系统来划分,就不会在建设过程中出现一些‘扯皮’操作,出现数据边界归属问题。
划分主题:
上面的主题域划分完了后就产生一个搬家主题域,比如把搬家分析作为一个分析领域,那么‘搬家分析’所涉及到的主要分析对象就有用户、订单、搬运工 等,则数仓的主题就可以划分为用户主题、订单主题、搬运工主题 等。
健壮性评估:
当后续搬家主题域业务新增,我还可以轻松地扩展出其他主题,毕竟按照上面的划分法,搬家的数据基本都划分在搬家主题域,剩下的就是搬家有新业务进来时扩展新主题或包含进已有主题。
分享网上搜索到的 马蜂窝数仓主题、主题域划分案例
以马蜂窝订单交易模型的建设为例,基于业务生产总线的设计是常见的模式,首先调研订单交易的完整过程,定位过程中的关键节点,确认各节点上发生的核心事实信息。
总是听到数据域,那么数据域和主题域是有什么关系呢,参考《阿里巴巴大数据之路》书籍和网上有人总结过这么一段,如下:
主题域 :面向业务过程,将业务活动事件进行抽象的集合,如下单、支付、退款都是业务过程,针对公共明细层(DWD)进行主题划分。
数据域 :面向业务分析,将业务过程或者维度进行抽象的集合,针对公共汇总层(DWS)进行数据域划分。
业务过程 :指企业的业务活动事件,如下单、支付、退款都是业务过程,业务过程就是一个不可拆分的行为事件。
其实数据域跟主题域的差别不大,很大情况下两者就等同于一个概念的。