6

构建与优化数据仓库·业务调研--阿里云教程

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzA4NzA5NzE5Ng%3D%3D&%3Bmid=2650231177&%3Bidx=1&%3Bsn=05dd03172256892a48939e0cba4f1e71
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

点击关注上方“ 知了小巷 ”,

设为“置顶或星标”,第一时间送达干货。

zAjaQbA.jpg!mobile

数仓构建流程

教程本身就是以阿里云 MaxCompute 为例,实际上,流程和方法论是通用的。

UJN7Bjb.png!mobile

基本概念

业务板块:比 数据域 更高维度的 业务划分方法 ,适用于庞大的业务系统。

维度: 维度建模 由Ralph Kimball提出。 维度模型主张从分析决策的需求出发构建模型 ,为分析需求服务。维度是度量的环境,是我们观察业务的角度,用来反映业务的一类属性。属性的集合构成维度,也可以称为实体对象。例如,在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。

属性(维度属性):维度所包含的表示维度的列称为维度属性。维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。  度量: 在维度建模中, 将度量称为事实 ,将环境描述为维度,维度是用于分析事实所需要的多样环境。 度量通常为数值型数据 ,作为事实逻辑表的事实。

指标:指标分为 原子指标和派生指标 。原子指标是基于某一业务事件行为下的度量,是业务定义中不可再拆分的指标,是具有明确业务含义的名词,体现明确的业务统计口径和计算逻辑,例如支付金额。

原子指标=业务过程+度量。

派生指标=时间周期+修饰词+原子指标,派生指标可以理解为对原子指标 业务统计范围 的圈定。

业务限定:统计的业务范围,筛选出 符合业务规则 的记录(类似于SQL中where后的条件,不包括时间区间)。

统计周期:统计的 时间范围 ,例如最近一天,最近30天等(类似于SQL中where后的时间条件)。

统计粒度:统计分析的对象或视角,定义 数据需要汇总的程度 ,可理解为聚合运算时的分组条件(类似于SQL中的group by的对象)。 粒度是维度的一个组合 ,指明您的统计范围。例如,某个指标是某个卖家在某个省份的成交额,则粒度就是卖家、地区这两个维度的组合。如果您需要统计全表的数据,则粒度为全表。在指定粒度时,您需要充分考虑到业务和维度的关系。统计粒度常作为派生指标的修饰词而存在。

基本概念之间的关系和举例如下图所示:

E7FZRnz.png!mobile

YzEVnqq.png!mobile

业务调研

1. 确定需求

业务调研

在进行数据仓库构建之前, 首先需要确定数仓构建的目标与需求,进行全面的业务调研 。您需要了解真实的业务需求是什么,以及确定整个业务系统能解决什么问题。

充分的业务调研和需求分析是数据仓库建设的基石,直接决定数据仓库能否建设成功。在数仓建设项目启动前,您需要请相关的业务人员介绍具体的业务,以便明确各个团队的分析员、运营人员的需求,沉淀出相关文档。

您可以通过调查表、访谈等形式详细了解以下信息:

  1. 用户的组织架构和分工界面 。例如,用户可能分为数据分析、运营、维护部门,各个部门对数仓的需求不同,您需要对不同部门分别进行调研。
  2. 用户的整体业务架构,各个业务模块之间的联系与信息流动的流程 。梳理出整体的业务数据框架。
  3. 各个已有的业务系统的主要功能及获取的数据

本教程中以 A公司的电商业务 为例,梳理出 业务数据框架 如下图所示。A公司的 电商业务板块 分为 招商供应链营销服务 四个板块,每个板块的需求和数据应用都不同。在您构建数仓之前, 首先 需要明确构建数仓服务的业务的板块和需要具体满足的业务需求。

J36RB3n.png!mobile

此外,您还需要进一步了解各业务板块中已有的各数据功能模块。功能模块通常和业务板块紧耦合,对应一个或多个表,可以作为构建数仓的数据源。下表展现的是一个营销业务板块的数据功能模块。

功能模块 A公司电商营销管理 商品管理 Y 用户管理 Y 购买流程 Y 交易订单 Y 用户反馈 Y

说明:Y代表包含该功能模块,N代表不包含。

本教程中,假设用户是电商营销部门的营销 数据分析师 。数据需求为最近一天某个类目(例如:厨具)商品在各省的销售总额、该类目Top10销售额商品名称、各省客户购买力分布(人均消费额)等,用于 营销分析 。最终的业务需求是 通过营销分析完成该类目的精准营销,提升销售总额 。通过业务调研,我们将着力分析营销业务板块的 交易订单功能模块

需求分析

在未考虑数据分析师、业务运营人员的数据需求的情况下, 单纯根据业务调研建设的数据仓库可用性差 。完成业务调研后,您 需要进一步收集数据使用者的需求,进而对需求进行深度的思考和分析

需求分析的途径有两种:

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

  2. 对报表系统中现有的报表进行研究分析。

在进行需求分析阶段,您需要 沉淀出业务分析或报表中的指标,以及指标的定义和粒度 。粒度可以作为维度的输入。建议您思考下列问题,对后续的数据建模将有巨大的帮助:

  1. 业务数据是根据什么(维度、粒度)汇总的,衡量标准是什么? 例如,成交量是维度,订单数是成交量的度量。
  2. 明细数据层和汇总数据层应该如何设计?公共维度层该如何设计?是否有公共的指标?
  3. 数据是否需要冗余、沉淀到汇总数据层中?

举例:数据分析师需要了解A公司电商业务中厨具类目的成交金额。当获知这个需求后,您需要分析: 根据什么(维度)汇总、汇总什么(度量)以及汇总的范围多大(粒度) 。例如,类目是维度,金额是度量,范围是全表。此外,还需要思考明细数据和汇总数据应该如何设计、是否是公共层的报表、数据是否需要沉淀到汇总表中等因素。

需求调研的分析产出通常是 记录原子与派生指标的文档

2. 分析业务过程

业务过程可以概括为一个个不可拆分的行为事件。用户的业务系统中,通过埋点或日常积累,通常已经获取了充足的业务数据。为 理清数据之间的逻辑关系和流向 ,首先需要理解用户的业务过程,了解过程中涉及到的 数据系统

您可以采用 过程分析法 ,将整个业务过程涉及的每个环节一一列清楚,包括技术、数据、系统环境等。在分析企业的工作职责范围(部门)后,您也可以借助工具通过逆向工程抽取业务系统的真实模型。您可以参考业务规划设计文档以及业务运行(开发、设计、变更等)相关文档, 全面分析数据仓库涉及的源系统及业务管理系统

  1. 每个业务会生成哪些数据,存在于什么数据库中。

  2. 对业务过程进行分解,了解过程中的每一个环节会产生哪些数据,数据的内容是什么。

  3. 数据在什么情况下会更新,更新的逻辑是什么。

业务过程可以是 单个业务事件 ,例如交易的支付、退款等;也可以是 某个事件的状态 ,例如当前的账户余额等;还可以是 一系列相关业务事件组成的业务流程 。具体取决于您分析的是某些事件过去发生情况、当前状态还是事件流转效率。

选择粒度:在业务过程事件分析中,您需要预判所有分析需要细分的程度和范围,从而决定选择的粒度。识别维表、选择好粒度之后,您需要基于此粒度设计维表,包括维度属性等,用于分析时进行分组和筛选。最后,您需要确定衡量的指标。

本教程中,经过业务过程调研,我们了解到用户电商营销业务的交易订单功能模块的业务流程如下。

b6viMna.png!mobile

这是一个非常典型的电商交易业务流程图。在该业务流程图中,有 创建订单买家付款卖家发货确认收货 四个核心业务步骤。由于确认收货代表交易成功,我们重点分析确认收货(交易成功)步骤即可。

在明确用户的业务过程之后,您可以根据需要进行分析决策的业务划分数据域。

3. 划分数据域

数据仓库是面向主题(数据综合、归类并进行分析利用的抽象)的应用。数据仓库模型设计除横向的分层外,通常也需要根据业务情况进行纵向划分数据域。 数据域是联系较为紧密的数据主题的集合,是业务对象高度概括的概念层次归类,目的是便于数据的管理和应用

划分数据域

通常,您需要 阅读各源系统的设计文档、数据字典和数据模型设计文档研究逆向导出的物理数据模型 。进而,可以进行跨源的主题域合并,跨源梳理出整个企业的数据域。

数据域是指面向业务分析,将业务过程或者维度进行抽象的集合。为保障整个体系的生命力,数据域需要抽象提炼,并 长期维护更新 。在划分数据域时,既能涵盖当前所有的业务需求,又能让新业务在进入时可以被包含进已有的数据域或扩展新的数据域。数据域的划分工作可以在业务调研之后进行,需要分析各个业务模块中有哪些业务活动。

数据域可以按照用户企业的部门划分,也可以按照业务过程或者业务板块中的功能模块进行划分。例如A公司电商营销业务板块可以划分为如下数据域,数据域中每一部分都是实际业务过程经过归纳抽象之后得出的。

数据域 业务过程 会员店铺域 注册、登录、装修、开店、关店 商品域 发布、上架、下架、重发 日志域 曝光、浏览、点击 交易域 下单、支付、发货、确认收货 服务域 商品收藏、拜访、培训、优惠券领用 采购域 商品采购、供应链管理

4. 定义维度与构建总线矩阵

明确 每个数据域下有哪些业务过程 后,您需要开始 定义维度 ,并 基于维度构建总线矩阵

定义维度

在划分数据域、构建总线矩阵时,需要结合对业务过程的分析定义维度。以本教程中 A电商公司营销业务板块 为例,在 交易数据域 中,我们 重点考察确认收货(交易成功)的业务过程

在确认收货的业务过程中,主要有 商品收货地点 (本教程中,假设收货和购买是同一个地点)两个维度所依赖的业务角度。从 商品维度 我们可以定义出以下维度的属性:

商品ID(主键)

商品名称

商品交易价格

商品新旧程度:1 全新 2 闲置 3 二手

商品类目ID

商品类目名称

品类ID

品类名称

买家ID

商品状态:0 正常 1 删除 2 下架 3 从未上架

商品所在城市

商品所在省份

地域维度 ,我们可以定义出以下维度的属性:城市code

城市名称

省份code

省份名称

作为维度建模的核心,在企业级数据仓库中必须保证维度的唯一性。以A公司的商品维度为例,有且只允许有一种维度定义。例如,省份code这个维度,对于任何业务过程所传达的信息都是一致的。

构建总线矩阵

明确每个数据域下有哪些业务过程后,即可构建总线矩阵。您需要明确业务过程与哪些维度相关,并定义每个数据域下的业务过程和维度。如下所示是A公司电商板块交易功能的总线矩阵,我们定义了购买省份、购买城市、类目名称、类目ID、品牌名称、品牌ID、商品名称、商品ID、成交金额等维度。

UJjyMnI.png!mobile

说明:Y代表包含该维度,N代表不包含

5. 明确统计指标

需求调研输出的文档中,含有原子指标与派生指标,此时我们 需要在设计汇总层表模型前完成指标的设计

指标定义注意事项

原子指标 是明确的统计口径、计算逻辑: 原子指标=业务过程+度量

派生指标 即常见的统计指标: 派生指标=时间周期+修饰词+原子指标 。原子指标的创建需要在业务过程定义后才可以创建。派生指标的创建一般需要在了解具体报表需求之后展开,在新建派生指标前必须新建好原子指标。

注意事项如下:

  1. 原子指标、修饰类型及修饰词,直接归属在业务过程下,其中修饰词继承修饰类型的数据域。

  2. 派生指标可以选择多个修饰词,由具体的派生指标语义决定。例如,支付金额为原子指标,则客单价(支付金额除以买家数)为派生指标。

  3. 派生指标唯一归属一个原子指标,继承原子指标的数据域,与修饰词的数据域无关。

根据业务需求确定指标

本教程中,用户是电商营销部门的营销数据分析师。数据需求为最近一天厨具类目的商品在各省的销售总额、该类目Top10销售额商品名称、各省用户购买力分布(人均消费额)等,用于营销分析。

根据之前的分析,我们确认业务过程为:确认收货(交易成功),而度量为商品的销售金额。因此根据业务需求,我们可以定义出 原子指标 :商品成功交易金额。

派生指标 为:

  1. 最近一天全省厨具类目各商品销售总额

  2. 最近一天全省厨具类目人均消费额(消费总额除以人数)

  3. 最近一天全省厨具类目各商品销售总额进行降序排序后取前10名的名称,即可得到该类目Top10销售额商品名称。

- END -

nIzeUzu.png!mobile

点一下,代码无 Bug

nQJ7nmY.gif!mobile


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK