「数仓建设篇」从0到1搭建无忧搬家数仓

一、前言

1.1 背景

从而有以下问题:

docx image

1.直接从ods贴源层取数据,业务研发侧一改造则下游链路级联影响改动很大

2.各数据分析下游从源头贴源层就直接各自依赖计算,数据链路十分零散不好管理

3.贴源层数据与业务侧保持一致,存在业务侧数据质量问题导致污染各数据下游风险

4.数据指标缺乏公共层沉淀,各下游数据分析重复计算资源浪费

1.2 解决方案

为提高数据的易用性和复用性、减少数据冗余、提高数据产出效率搭建无忧搬家主题域公共层数仓模型,包含无忧搬家订单主题、无忧搬家小哥主题 等等这样可以做到:

docx image

1.尽可能地屏蔽业务侧改造对下游的直接影响,提升下游数据分析的稳定性

2.提效BI同学和运营同学的数据分析需求,提升数据的易用性和复用性、提高数据链路产出效率

3.公共层表沉淀了核心基础字段供下游使用,公共通用的基础指标和字段避免了下游重复计算

4.承担起数据质量保障环节,在关键核心表设计大禹数据治理平台监控规则告警及熔断机制

5.收敛了数据任务分散情况,优化数据链路,构建良好的血缘关系和数据架构

二、数仓建设

讲完上面的背景和解决方案,接下来就来分享下无忧搬家数仓建设的实际落地过程,数仓建设这个对于数仓开发工程师来说是必备的能力,比如当你面临着一个新业务的开启,就需要从0到1开始搭建数据仓库或者数据集市,这时候就要考虑数据如何组织和设计才能使下游数据分析团队提效以及增强数仓模型的健壮性。

2.1 数仓概述

数仓建设是遵循纵向分层开发,横向划分主题域设计

docx image

2.2 建设步骤

2.2.1 业务调研

承上对接业务研发侧&承下对接数据分析侧

无忧搬家的整体的业务流程

先是邀约部门针对获取到的已有线索,邀约感兴趣成为平台搬家小哥的成员,然后来到货拉拉各城市的培训点进行面试,然后注册认证并交保证金成为我们平台的一位搬家小哥,搬家小哥也会有角色,比如小哥队长和小哥队员等,成为搬家小哥后就可以开始接单和做单了,当然搬家小哥由于各种原因也可以从平台退保证金之后退出平台,这是搬家小哥的大致业务过程。对于用户而言,下无忧搬家单其实跟下货运单无过多差别,货运单跟无忧搬家单的区别就在于后者会提供搬运服务且参与对象多了搬家小哥这个主体。

2.2.2 主题域划分

数仓主题域

划分方法:主题域划分的方法一般有几种

要么按照业务过程来划分,一个业务过程抽象出一个主题域,比如业务系统中的商品、交易、物流等

要么按照业务部门来划分,一个业务部门抽象出一个主题域,比如中台部门、业务运营部门、供应链部门等

要么按照业务系统来划分,一个业务系统抽象出一个主题域,比如搬家系统、erp系统 等

那么这时候采用上面第3点划分方法,在已有企业级数仓中,按照业务系统来划分,新增一个无忧搬家主题域

小结:企业级数仓做主题划分和主题域划分,建议还是要站在全局的视角来看,然后先划分出主题域,再接着在主题域里面划分出各个主题,比如几个核心大域,货运交易订单域、货运用户域、货运司机域

2.2.3 主题划分

数仓主题某一分析对象

说白了主要就是要识别出分析对象主体

2.2.4 输出总线矩阵

即业务过程和维度,组建成的矩阵。

docx image

2.2.5 数仓分层设计模型表开发

数仓分层的每一层建设都有其专属的职责和侧重点,数仓分层设计很重要,但如何分层以及命名其实没有固定的标准,各层之前的职责在各行业和公司也各有理解和应用,我建议是无需深究概念,不追究千篇一律都一致,但要知其各层主要职责划分和按公司内部约定好的规范应用遵守。

货拉拉的数仓分层设计

ODS贴源数据层

DWD明细数据层

DWB基础宽表层

DWS轻度汇总层

无忧搬家主题域的模型表分层设计架构图

docx image

健壮性评估

当后续搬家主题域业务新增,还可以轻松地扩展出其他主题,毕竟按照上面的划分法,搬家的数据基本都划分在搬家主题域,剩下的就是搬家有新业务进来时扩展新主题或包含进已有主题。

模型表开发举例讲解

表名

设计:

做法:

优势:

2.2.6 数据质量保障

所以我们有必要增加一个环节-数据质量监控 ,辅助我们做到故障升级前及时感知,故障升级后快速定位。

监控规则设计思路 & 实践

以下思路最终形成的实现逻辑借助大数据内部自研数据治理平台-大禹 来配置监控规则及时感知业务数据以及熔断数据质量避免污染传递下游。

表数据量波动监控

监控数据量波动情况有助于我们识别出暴涨暴跌场景。

比如:全量表数据量一般只可能大于上一天数据量,跌了or等于都可能代表着数据异常了

表字段枚举值值域监控

枚举值值域监控主要针对的是业务侧改动场景,改动频率不高但设计这类监控可以让我们及时感知到业务侧的数据变动调整。

比如:主订单表的order_status主订单状态枚举值 和 搬运订单表的order_status搬运订单状态枚举值,监控业务侧改动场景

表核心指标异常监控

通过一些数据场景来监控数据是否异常。

比如:一般订单主表内每笔订单都会携带地理位置信息的addr_info字段json数组数据,通过对addr_info解析出来的地理位置信息数据设计null校值验,从而就能发现无忧搬家地理位置解析表的地理位置信息数据异常

表多源join抽样监控

因为宽表层会有较多的join场景和字段很多,所以可以按每个join子查询抽样监控一两个关键指标。

三、结语

无忧搬家主题域目前建设了无忧搬家订单主题&无忧搬家小哥主题,从依赖到数仓公共层(dwb&dws)下游链路来看,目前就覆盖满足了下游数据分析团队的上千个数据分析任务,数据链路不再像以前各自分散不好管理,且业务改造也不会直接影响到数据分析师们的任务,由数仓公共层数据模型为其保障了数据质量,以更加良好的数据模型和数据架构赋能业务,助力货拉拉业务更好更快的向前发展

当然,无忧搬家公共层模型现在还不算完善,这也不止无忧搬家业务线,货运业务线的其他主题域公共层模型也需要持续迭代升级,以及历史存量不规范和无效任务治理,数据质量监控设计还没完全覆盖,我们会在未来继续迭代,夯实数仓公共层模型,沉淀好数据资产。

笔者介绍:江鑫彪|大数据数仓开发工程师。曾任职于魅族科技,从事大数据etl开发,现就职于货拉拉科技,搭建了货拉拉无忧搬家数据仓库,目前专注于货运交易订单主题域的数仓模型设计改造和无忧搬家主题域的数仓模型升级迭代。

– END –

docx image

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容