数仓构建案例:从需求分析到数仓构建全流程

0 评论 4808 浏览 39 收藏 14 分钟

如何解读从数据需求到数仓构建的整体流程?这篇文章里,作者结合实际案例,从需求分析、可视化看板设计、数据采集、数仓规划、维度建模等方面进行了描述和拆解,不妨来看一下,或许会对你有做帮助。

一、背景

最近发文章,发现在文章中有插入广告功能,假设广告插入为新上线的新功能。

1. Web端链路

曝光环节:每次刷新,都会有不同的内容。如下图所示:

具体落地页,大家可以自己点击看看。

2. 业务需求

功能上线一个月后,老板想看看该功能带来了多少营收?

运营人员希望分析广告投放、广告曝光、落地页曝光、支付页、支付成功转化链路的转化情况?

本文以此为背景,从需求分析、可视化看板设计、数据采集、数仓规划、维度建模等几个阶段去描述数据需求到数仓构建的整体流程。

二、需求分析阶段

1. 目的

了解清楚业务问题和目标后,搞清楚数据怎么定义和描述这个问题?列出结果指标和过程指标,确定指标的展现形式。

2. 业务过程调研

需要整体分析各角色之间存在的各类要素流动关系。

3. 需求调研

根据业务调研及业务目标,使用不同的数据分析分析方法列出指标体系,最终大致遵循常用指标分类方式。

需求调研可以从以下角度出发:

1)根据与分析师、业务运营人员的沟通获知需求。

2)了解以前的报表,对现有报表系统中的报表进行研究分析,了解关键性指标。

4. 确定指标

5. 确定指标统计含义及口径

在筛选指标时,需要考虑指标的数据来源、数据质量、数据可靠性等因素。在此过程中,需要补充数据来源系统,来源表,来源字段,计算方式等。

三、可视化看板设计阶段

1. 根据指标需求设计可视化看板

2. 确定展示内容和筛选条件

1)卡片展示内容:指标名称、统计口径、指标值、指标单位、统计日期、同比值、环比值、更新时间。

筛选条件:日期、支持选择今日、昨日、本周、上周、本年、去年、最近7天、最近30天等等。不能选择今天及以后。

2)支付情况日变动趋势图

筛选条件:日期范围。支持选择今日、昨日、本周、上周、本年、去年、最近7天、最近30天等等。不能选择今天及以后,支持按日、按月、按年去对比。

3)下单转化漏斗

筛选条件:日期范围,支持选择今日、昨日、本周、上周、本年、去年、最近7天、最近30天等等。不能选择今天及以后。

可选统计方式:次数/人数

四、数据采集阶段

数据采集前需要考虑以下两点。

1)熟悉业务数据:明确业务过程与表之间的关系,表与表之间的关系,字段之间的关联关系。

2)调研数据源情况:是否具备采集条件,数据库类型,存储格式,通过什么方式采集。对缺失的用户行为数据进行埋点。

埋点时需根据不同埋点类型以及业务情况选择合适的埋点方案和前后端采集方案。

1. 埋点需求分析

2. 自定义埋点方案设计

标准埋点方案一般由 4 张表组成:

  • 埋点说明 – 埋点实施参考
  • 事件&属性 – 记录事及相关信息;
  • 用户属性 – 记录用户与相关信息
  • 默认采集事件属性 – 默认采集的事件属性说明

公共属性:

自定义事件&属性:

在设计埋点前,可做一些埋点文档和埋点评审的规范定义,方便文档的维护和工作的开展。

比如:事件命名由 4 部分组成:类型_流程_页面_功能。

  • 类型:点击、进入、停留、指标
  • 流程:事件所属的业务流程,填写规则是[流程名称 +“流程”]
  • 页面:事件所在的页面,填写规则是[页面名称 + “页面”]
  • 功能:可以是按钮或功能的名称

未了保障数据的准确性,需注意触发时机和规则定义:比如什么样的曝光是有效的?商品停留时间超过2s,卡片至少漏过50%。商品曝光重复:如果之前已经可见且上报了,那么不做二次上报等规则。

五、数仓规划阶段

在构建数仓前,需要对数仓进行整体规划,包括:

  • 技术架构设计:数据存储技术的选择、ETL工具选择、任务调度工具选择;
  • 分层架构:数仓分层规划;
  • 主题域规划:主题域确定;
  • 数据开发规范指定:命名规范、开发规范、各种流程规范;
  • 元数据管理方法等等。

1. 数仓分层规划

操作数据层:ODS(Operational Data Store):把操作系统数据几乎无处理地存放在数据仓库系统中。

事实明细层:DWD(Data Warehouse Detail):DWD 层是在ODS层基础上,根据业务过程建模出来的事实明细层。

公共汇总层:DWS(Data Warehouse Summary):一般根据维表数据和明细事实数据加工生成,作为通用的数据模型使用。

应用数据层:ADS(Application Data Store):存放数据产品个性化的统计指标,根据明细层、汇总层及维表数据加工生成。

想了解更多数仓分层可查阅上篇文章《带你轻松理解数仓为啥分层?》https://www.woshipm.com/share/5892372.html

2. 主题域规划

我们选择按照业务过程划分主题域:划分的前提,先理清业务过程,根据业务过程去抽象出主题,比如浏览,曝光,点击,都属于用户行为的业务过程,就可以划分成流量主题。

想了解更多主题域规划可查阅《如何理解主题域?》。

六、数仓设计阶段

1. 构建业务总线矩阵

在数据仓库领域中,业务总线矩阵是一种用于设计和组织数据仓库的业务模型的工具。它是基于业务需求和业务过程的分析,明确业务过程与维度的关系。它帮助将业务需求转化为数据模型,并指导数据仓库的建模和设计过程。

从该业务矩阵中,我们可以得知需要建设哪些DIM层维度表,DWD层的事实表。

2. 指标拆分

指标的拆分是运算过程的拆分,维度模型里的指标拆分是一种思路,是模型设计很重要的一环。想了解更多可看《原子指标、派生指标、复合指标》。

原子指标:不可再分的指标。

派生指标:派生指标是由原子指标、时间周期、修饰词构成,用于反映企业某一业务活动在指定时间周期及目标范围中的业务状况。

复合指标:由派生指标直接运算而来,通常是比率型指标。比如最近七天广告点击率,他的特点就是产生了新的原子指标。

3. 维度表设计

根据业务总线矩阵,可构建用户维度表、时间维度表、地理位置维度表等等。

日期维度表示例:

4. 事实表设计

此处拓展事实表构建流程。

事实表说明:

事实表包括:事务型事实表、周期快照事实表、累积快照事实表。

1)选择业务过程及确定事实表类型

业务过程定义:业务过程是从企业的经营收益、成本出发,价值链条上有影响力的用户需求事情或者事件。而且,这样的过程非常多,我们要分析当中的核心关键过程,不断细分。

核心内容:企业活动事件、不可拆分原则。

2)声明粒度:定义事实表的每一行所表示的业务含义,尽量选择最细级别的原子粒度,以确保事实表的应用具有最大的灵活性。

3)确定维度:选择能够描述清楚业务过程所处的环境的维度信息。

4)确定事实:事实有可加性、半可加性、非可加性三种类型 需要将不可加性事实分解为可加的组件。

5)冗余维度:考虑更多的是提高下游用户的使用效率,降低数据获取的复杂性,减少关联的表数量。

章阅读事实表:

页面浏览事实表:

下单累计快照事实表:

交易域每日支付汇总表:

流量域每日曝光汇总表:

根据需求,汇总表还需要统计每月、每年、近7天、近30天等数据汇总情况,此处不做过多表格展示。需要注意命名规范以及事实是否可加

最后:文中涉及很多概念大都一概而过,后续会慢慢分享相关内容。

本文由 @清小墨 原创发布于人人都是产品经理,未经许可,禁止转载

题图来自 Unsplash,基于 CC0 协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!