168大数据

标题: 数据仓库系列:如何优雅地规划数仓体系 [打印本页]

作者: 168主编    时间: 2019-12-24 21:40
标题: 数据仓库系列:如何优雅地规划数仓体系
本帖最后由 168主编 于 2020-3-18 11:53 编辑

0x00 前言
数仓规划是数仓建设的蓝图,涵盖从需求分析开始到最终的数仓评估验收整个环境;数仓规划之所以重要,是因为它是描述了数据流动的概念性框架为元数据管理奠定了基础对数据加工过程的理解、数仓建设的交流分享、数据的使用和问题排查、数仓健康度的评估都提供了极大的帮助
需要强调的是本节是从宏观上描述数仓的框架,具体到数据模型的细节对比、存储选型和管理、接入数据源管理等数仓建设的周边在本节不涉及。通过本节的阅读,你将了解到以下知识:
0x01 规划 矩阵
分宏观和微观来看,宏观的是公司的整体业务布局,微观的是产品的业务过程布局和业务过程的维度分解交叉信息。
宏观矩阵
宏观矩阵描述的是公司的业务线和对应的数据状况,其行和列一般分别对应着业务主题和数据主题。

引自《数据仓库实践之业务数据矩阵的设计-木东居士》
微观矩阵
微观矩阵描述的是主题和对应的维度关系,下面以常见的内容消费和用户主题两个维度来看微观矩阵的规划

-w698
业务过程描述的一般是对内容的消费抽象,可以是原子的,也可以是抽象的,比如卡片曝光维度的划分可以从以下两个大方向入手:
分层
ODS->DW->DM->DA(ADS)层是如何划分的,分层的原因(引自《一种通用的数据仓库分层方法-木东居士》):

层划分
一个完整数仓分层演示图如下:

一个典型的数仓分层样例:

-w730
分层依据
分层的依据在ods、da、dim层一般无歧义,关键在dw层的分层依据,也是数据仓库分层建设的核心。

每层划分的依据如下:
分线
分线也分宏观和微观,宏观的是整体的业务线,比如应用分发线、商业智能线、游戏运营线、广告流量线等;微观的是某个app或者某个具体的线,本节介绍的是app的数据线。分线和分主题有很多相似的地方,只是看待数据的角度不同,分主题是从数据内容分类和对外服务的角度看,类似商品分类;而分线是从数据生产加工过程的角度来看,类似业务生产流水线。
用户主线
反映整个app的用户规模,比如整个app的活跃、累积活跃、新增、留存、回流、流失
用户群线
满足某些行为的用户群的追踪,目的是为了进行个性化的运营等活动,该线的升华扩展是用户画像
内容消费
提供的消费实体的曝光、点击、生成、转化等,以及内容的累积消费、消费排行等都属于内容线
状态线
一般会作为辅线存在,相当于维表的存在,状态线一般又分为以下几种:
全量用户信息维表
记录开关状态变更记录,得到当前用户的开关状态快照,是多态记录的一种特殊情况
记录用户的添加删除等操作,得到当前用户操作结果的保有快照
商业化线
商业化线相关的与收入相关的,比如cp合作、广告位、推广位、订单、会员充值等;
需要说明的是本系列的数仓的主要介绍的是流量型产品形态、更多的是关注用户规模,所以主线是是关于用户的,而对于其它的产品形态,比如购物类、充值消费类的则主线可能是商业化线等。此外作为用户流量型产品,还隐藏着另外一个更加常用的线:自查线,每个主题的自查明细表,基于event_id或者参数的展开,但是没有参数值的组合过滤。(自查线这个似乎没有必要)
下图是一张数仓的分线演示图,每个框是一张表,不同颜色的框串联成各自的数仓线。

分主题
在进行分矩阵设计的时候牵涉到分行和列的业务主题,此处详细介绍下数据主题的设计,本部分的设计是从高层次上的。
主题划分的一些依据:业务过程(或子过程,比如订单)、ER中的E(或者R,比如商品主题)、数据服务的对象(运营主题)、数据的用途(比如商业);分主题也即数据集市,根据业务形态的不同,会衍生出不同的主题,但以下主题在app中广泛存在:
备注:
用户主题
用户主题是产品的盘子,就像家店铺,多少人使用就像多少顾客。基于用户主题的常见统计有整体的新增、活跃、累积活跃、新增留存、活跃留存等大盘数据,以及对某些关键行为的用户的后续追踪,还有某些核心过程的PUV、转化漏斗等
内容主题
内容主题是盘子里东西的消费状况,就像提供的菜单,每个菜被多少人点了。基于内容主题的常见统计有针对内容(文章、视频、商品等)的各种消费行为(曝光、点击、购买、下载等)的次数、人数、时长、金额等按不同维度的度量统计。常见的维度拆分有时间拆分、地域拆分、位置(人货场模型中的场)拆分、画像拆分、渠道拆分等,对度量的统计又有累积、非累积、TopN等。
运营主题
广告、促销、活动等一切由于运营活动相关本身的数据统计,以及运营活动对其它主题数据的影响衡量。
营收主题
营收的来源主要分为以下几种:
流量广告的数据主要产生于用户行为,而充值消费的数据主要来自业务库相关。
以上四个主题是在常见应用上通用的主题,其它的主题比如技术主题,在某些有明显的技术指标对比的产品上会占主要的地位,比如文字识别类应用的识别准确率、搜索类产品的搜索满意度、语音智能助理类的会话完成率等。这些产品上技术指标和用户的体验密切相关,是产品未来发展重要的参考方向,因此会强化出来做数据主题。另外如引流类或者与其他app有频繁的引流拉起等应用的数据体系建设上,也会单独拿出跳转对接数据做主题分析。总之,主题的划分并不是确定不变的,需要根据业务的具体形态和重点度量的指标等进行建设。
以上的矩阵、分层、分线、分主题的规划只是从不同的角度来看数据框架,本质都是对数据流图的一种拆解,差异在拆解的数据视角。

0x02 实施 需求分析
了解业务过程,每个业务过程的参与实体和各实体可能的分析维度等信息; 了解数据源组成,有哪些数据源、数据的更新周期;预构建指标体系,了解指标的分类,分析维度、时效性要求;了解可能的扩展需求,比如画像宽表。需求分析阶段是建立数仓的概念模型,明白数仓要支持的大致需求,虽然数仓建设并不要完全满足业务需求,在建设的过程中肯定要有取舍,但第一步进行需求分析能保证在数仓建设过程中不致于偏离目标太多,避免建设烂尾或者好看不好用的绣花枕头。
指标体系
此部分会另外开专题介绍,指标体系一般分为三类:
每个体系内分析数据的维度、更新周期等。指标体系的建立是需求分析环节需要重点完成的一步。
模型选择
模型选择环节要根据需求分析阶段的结论,在ER模型、维度建模等基本的建模思想中选择一种建模思想,比如说选择了维度建模,要进一步根据需求分析中相关的业务过程和维度视角,在星型模型、雪花模型、星座模型中选择一种模式。这个过程要充分的结合业务的实际状况、开发人力和成本、各模型的优缺点等因素进行综合分析,是关系到建模是否成功的关键环节。需要说明的是,在快速迭代的互联网行业,业务规则可能经常变化,而对于不同粒度水平进行度量和监控,进而快速响应的需求却基本保持不变,比如层级的时间粒度(年、月、周、日、小时)、层级的地理粒度(大区、省、市、区县、商圈)以及基于产品自身属性的层级粒度(大类、子类)。基于这种特性,互联网行业中广泛采用维度建模的思想,同时为了使用的方便,又以星型模型和雪花模型较多。
标准规划
标准规划是对数仓建设过程各阶段中涉及的对象、属性、关系、键、交付物等进行规范定义,同时制定标准落地方式或者检查的方式。比如表命名规范、字段命名规范、任务命名规范、调度依赖规范、代码开发规范等。需求强调的是,这一步看似无关紧要,也往往直接被忽略跳过,但好的标准规划能为建设高质量数仓的保驾护航,对数仓质量、健康度的保持都大有裨益。
开发部署
包含表设计、代码开发、调度开发和告警开发等,对应本系列的第三节和第四节。
开发部署阶段完成了数仓建设的逻辑模型和物理模型设计阶段,是数仓建设的主要工作内容。
评估验收
对应的问题包含在相关问题介绍部分,需要进一步思考数仓开发的交付物是什么。
0xFF 总结
本篇从业务矩阵、分层、分线和分主题等方面对数仓的规划做了简要的描述。这些方面的差异只在于剖析数仓的角度,其目的是一致的,即为了清晰地梳理数据体系、洞察数据状态、以及更好地规划未来数据地图,从而更好的服务于各个业务需求方(BI报表、数据分析、用户画像等);本节最后简要的介绍了数仓开发的基本流程。
进一步思考:
参考:

水大人,数据开发小哥,爱折腾、爱记笔记,热衷方法论提炼和效率提升。虽然半路出家,但致力于全栈远景。《七天数据埋点之旅》系列作者。

本文来自微信公众号 - 木东居士(Data_Engineering)





欢迎光临 168大数据 (http://www.bi168.cn/) Powered by Discuz! X3.2