01 数据建设指引

导读:面对爆炸式增长的数据,如何建设高效的数据模型和体系,对这些数据进行有序和有结构地分类组织和存储,避免重复建设和数据不一致性,保证数据的规范性, 是大数据系统建设不断追求的方向。

定位

建设统一的、规范化的数据接入层( ODS )和数据中间层( DWD和DWS ),通过数据服务和数据产品,服务于大数据系统建设 ,即数据公共层建设。

核心

从业务架构设计到模型设计,从数据研发到数据服务,做到数据可管理 、可追溯、可规避重复建设。

价值

提供标准化的( Standard )、共享的( Shared )、数据服务( Service )能力,降低数据互通成本,释放计算、存储、人力等资源,以消除业务和技术之痛。

体系架构

业务板块:根据业务的属性划分出几个相对独立的业务板块,业务板块之间的指标或业务重叠性较小。如阿里电商业务板块涵盖淘系、 B2B系等,美团到店业务板块包含酒店bu、旅游bu等。

规范定义:结合行业的数据仓库建设经验和业务数据自身特点,设计出的一套数据规范命名体系,规范定义将会被用在模型设计中。

模型设计:以维度建模理论为基础,基于维度建模总线架构,构建一致性的维度和事实(进行规范定义)。同时,在落地表模型时,基于自身业务特点设计出一套表规范命名体系。

规范定义

规范定义指以维度建模作为理论基础,构建总线矩阵,划分和定义数据域、业务过程、维度、度量/原子指标、修饰类型、修饰词、时间周期、派生指标。

规范定义实例如图所示:

 

名词术语

名词术语解释如下:

名词术语

解释

数据域

指面向业务分析,将业务过程或者维度进行抽象的集合。其中,业务过程可以概括为一个不可拆分的行为事件,在业务过程之下,可以定义指标;维度是指度量的环境,如买家下单事件,买家是维度。为保障整个体系的生命力,数据域是需要抽象提炼,并且长期维护和更新的,但不轻易变动。在划分数据域时,既能涵盖当前所有的业务需求,又能在新业务进入时无影响地被包含进已有的数据域中和扩展新的数据域。

业务过程

指企业的业务活动事件,如下单、支付、退款都是业务过程。请注意,业务过程是一个不可拆分的行为事件,通俗地讲,业务过程就是企业活动中的事件。

维度

维度是度量的环境,用来反映业务的一类属性,这类属性的集合构成一个维度,也可以称为实体对象。维度属于一个数据域,如地理维度(其中包挤国家、地区、省以及城市等级别的内容)、时间维度(其中包括年、季、月、周、日等级别的内容)。

度量/原子指标

原子指标和度量含义相同,基于某一业务事件行为下的度量,是业务定义中不可再拆分的指标,具有明确业务含义的名词 ,如支付金额。

修饰词

指除了统计维度以外指标的业务场景限定抽象。修饰词隶属于一种修饰类型,如在日志域的访问终端类型下,有修饰词PC端、无线端等。

修饰类型

是对修饰词的一种抽象划分。修饰类型从属于某个业务域,如日志域的访问终端类型涵盖无线端、pc端等修饰词。

时间周期

用来明确数据统计的时间范用或者时间点,如最近30天、自然周、截至当日等。

维度属性

维度属性隶属于一个维度。如地理维度里面的国家名称、国家ID 、省份名称等都属于维度属性。

派生指标

派生指标=一个原子指标+多个修饰词(可选)+时间周期。可以理解为对原子指标业务统计范围的圈定。 如原子指标:支付金额,最近1天海外买家支付金额则为派生指标(最近1天为时间周期,海外为修饰词,买家作为维度,而不作为修饰词)

指标体系

指标体系由原子指标、派生指标、修饰类型、修饰词、时间周期组成。

基本原则

  • 派生指标由原子指标、时间周期修饰词、若干其他修饰词组合得到。各对象关系如下:

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

  • 派生指标可以选择多个修饰词,修饰词之间的关系为“或”或者“且”,由具体的派生指标语义决定。

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

  • 原子指标有确定的英文字段名、数据类型和算法说明,必须挂靠在某个业务过程下;派生指标要继承原子指标的英文名、数据类型和算法要求。

  • 事务型指标(指对业务活动进行衡量的指标)和存量型指标(指对实体对象某些状态的统计)只会唯一定位到一个业务过程,如果遇到同时有两个行为发生、需要多个修饰词、生成一个派生指标的情况,则选择时间靠后的行为创建原子指标,选择时间靠前的行为创建修饰词。

操作细则

派生指标可以分为三类:事务型指标、存量型指标和复合型指标。按照其特性不同,有些必须新建原子指标,有些可以在其他类型原子指标的基础上增加修饰词形成派生指标。

事务型指标:指对业务活动进行衡量的指标。例如新发商品数、重发商品数、新增注册会员数、订单支付金额,这类指标需维护原子指标及修饰词,在创建派生指标。

存量型指标:指对实体对象(如商品)某些状态的统计。例如商品总数、注册会员总数,这类指标需维护原子指标及修饰词,在创建派生指标,对应的时间周期一般为“历史截至当前某个时间”。

复合型指标:是在事务型指标和存量型指标的基础上复合而成的。例如浏览UV-下单买家数转化率有些需要建新原子指标,有些则可以在事务型或存量型原子指标的基础上增加修饰词得到派生指标。复合型指标的规则:

  • 比率型:创建原子指标,如CTR、浏览UV-下单买家数转化率、满意率等。例如,“最近1天店铺首页CTR”,原子指标为“CTR”,时间周期为“最近1天”,修饰类型为“页面类型”,修饰词为“店铺首页”。

  • 比例型:创建原子指标,如百分比、占比。例如“最近1天无线支付金额占比”,原子指标为“支付金额占比”,修饰类型为“终端类型”,修饰词为“无线”。

  • 变化量型:不创建原子指标,增加修饰词,在创建派指标。例如,“最近7天支付金额上7天变化量”,原子指标为“支付金额”,时间周期为“最近7天”,修饰类型为“统计方法”,修饰词为“上7天变化量”。

  • 变化率型:创建原子指标。例如,“最近3天海外买家支付金额3天变化率”,原子指标为“支付金额变化率”,修饰类型为“买家地域”,修饰词为“海外买家”。

  • 统计型:不创建原子指标,增加修饰词,在创建派生指标。例如,均值、分位数等,在修饰类型 “统计方法”下增加修饰词,如人均、日均、行业平均、70分位数等。例如,“自然月日均 UV”,原子指标为“UV”,修饰类型为“统计方法”,修饰词为“日均”。

  • 排名型:创建原子指标,一般为top_xxx xxx,有时会同时选择rank和top_xxx _xxx 组合使用。创建派生指标时选择对应的修饰词如下:统计方法(如降序、升序)、排名名次(如TOP5 )、排名范围(如行业、省份)、排序内容(如搜索次数、 PV )。

命名约定

  • 指标命名:尽量使用英文简写,其次是英文,指标英文名太长(超过20位)时,可考虑用汉语拼音首字母命名。如中国质造,zgzc。

  • 业务过程:英文名:用英文或英文的缩写或者中文拼音简写;中文名:具体的业务过程中文即可。

  • 原子指标:英文名:动作+度量;中文名:动作+度量。

  • 修饰词:只有时间周期才会有英文名,其他修饰词无英文名。

  • 派生指标:英文名:原子指标+时间周期修饰词;中文名:时间周期修饰词+[其他修饰词]+原子指标。

模型设计

指导理论:数据公共层设计理念遵循维度建模思想,可参考Star Schema-The Complete ReferenceThe Data Warehouse Toolkit-The Definitive Guide to Dimensional Modeling。数据模型的维度设计主要以维度建模理论为基础,基于维度数据模型总线架构,构建一致性的维度和事实。

模型概念

数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,来表示现实世界中事务的相互关系的一种映射。在这里数据模型表现的抽象的实体和实体之间的关系,通过对实体和实体之间关系的定义和描述,来表达实际的业务中具体的业务关系。为什么需要数据模型,因为数据模型能够帮助我们解决以下的一些问题:

  • 进行全面的业务梳理,改进业务流程。在业务模型建设的阶段,能够帮助我们的企业或者管理机构对本单位的业务进行全面的梳理。通过业务模型的建设,我们应该能够全面了解该单位的业务架构图和整个业务的运行情况,能够将业务按照特定的规律进行分门别类和程序化,同时,帮助我们进一步的改进业务的流程,提高业务效率,指导我们业务部门的生产。

  • 建设全方位的数据视角,消灭信息孤岛和数据差异。通过数据仓库的模型建设,能够为企业提供一个整体的数据视角,不再是各个部门只是关注自己的数据,而且通过模型的建设,勾勒出部门之间的联系,帮助消灭各部门之间的信息孤岛的问题,更为重要的时,通过数据模型的建设,能够保证这个企业的数据一致性,各个部门之间数据的差异将会得到有效解决。

  • 解决业务的变动和数据仓库的灵活性。通过数据模型的建设,能够很好的分离出底层技术的实现和上层业务的展现。当上层业务发生变化时,通过数据模型,底层的技术实现可以非常轻松的完成业务的变动,从而达到整个数据仓库的灵活性。

  • 加速数据仓库系统本身的建设。通过数据仓库的模型建设,开发人员和业务人员能偶很容易的达成系统建设范围的界定,以及长期目标的规划,从而能够使整个项目组明确当前的任务,加快系统建设的速度。

模型层次

我们对数据进行分层的一个主要原因就是希望在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:

  • 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。

  • 数据血缘追踪:简单来讲可以这样理解,我们最终给业务诚信的是一能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。

  • 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。

  • 把复杂问题简单化:将复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

  • 屏蔽业务的影响:不必改一次业务就需要重新接入数据。

数据模型分为三层:操作数据层(ODS,Operational Data Store)、公共维度模型层(CDM,Common Dimensions Model)和应用数据层(ADS,Application Data Service), 其中公共维度模型层包括明细数据层(DWD,Data Warehouse Detail)和汇总数据层(DWS,Data Warehouse Summary)。模型层次关系如下:

 ODS:在结构上其与源系统的增量或者全量数据基本保持一致。它相当于一个数据准备区,同时又承担着基础数据的记录以及历史变化。主要功能如下,

  • 同步:结构化数据增量或全量同步到数据仓库。

  • 结构化:非结构化(日志)结构化处理并存储至数据仓库。

  • 累积历史、清洗:根据数据业务需求及稽核和审计要求保存历史数据、清洗数据。

CDM:主要作用是完成数据加工与整合、建立一致性的维度、构建可复用的面向分析和统计的明细事实表以及汇总公共粒度的指标。存放明细事实数据、维表数据及公共指标汇总数据,其中明细事实数据、维表数据一般根据ODS层数据加工生成;公共指标汇总数据一般根据维表数据和明细事实数据加工生成。CDM层又细分为DWD层(明细数据层)和DWS层(汇总数据层),采用维度模型方法作为理论基础,更多地采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联 ,提高明细数据易用性;同时在汇总数据层, 加强指标的维度退化,采取更多的宽表手段构建公共指标数据层,提升公共指标的复用性,减少重复加工。其主要功能如下,

  • 组合相关和相似数据:采用明细宽表,复用关联计算,减少数据扫描。

  • 公共指标统一加工:构建命名规范、口径和算法统一的统计指标,为上层数据产品、应用和服务提供公共指标;建立逻辑汇总宽表。

  • 建立一致性维度:建立一致的数据分析维表,降低数据计算口径、算法不统一的风险。

ADS:存放数据产品个性化的统计指标数据,根据CDM层与ODS层加工生成。其主要功能如下,

  • 个性化指标加工:不公用性、复杂性(指数型、比值型、排名型指标)。

  • 基于应用的数据组装:大宽表集市、横表转纵表、趋势指标串。

模型架构图如下:

 数据调用服务优先使用CDM层数据,当公共层没有数据时,需评估是否需要创建公共层数据,当不需要建设公共层时,方可直接使用ODS层数据。ADS层作为产品特有的个性化数据一般不对外提供数据服务,但是 ADS层作为被服务方也需要遵守这个约定。

设计原则

模型是对现实事物的反映和抽象,能帮助我们更好地了解客观世界。数据模型定义了数据之间关系和结构,使得我们可以有规律地获取想要的数据。

  • 高内聚低耦合:主要是指数据业务特性访问特性两个角度来考虑,将业务相近或者相关的数据设计为一个逻辑或者物理模型;将高概率同时访问的数据放在一起,将低概率同时访问的数据分开存储。

  • 核心模型与扩展模型分离:建立核心模型拓展模型体系,核心模型包括的字段支持常用的核心业务,扩展模型包括字段支持个性化和少量应用的需求,不能让扩展模型的字段过度入侵到核心模型,以免破坏核心模型的简洁性可维护性

  • 公共逻辑下沉及单一:越是底层公用的处理逻辑越应该在数据调用依赖的底层进行封装与实现,不要让公共逻辑暴露在应用层实现,不要让公共逻辑多处同时存在。

  • 成本与性能平衡:适当的数据冗余可换取和刷新性能,不宜过度冗余与数据复制。

  • 数据可回滚:处理逻辑不变,在不同时间多次运行数据结果确定不变。

  • 一致性:具有相同含义的字段在不同的表中命名必须相同,必须使用规范定义的名称。

  • 命名清晰可理解:表名需要清晰,表名易于消费者理解和使用。

实施过程

Inmon 模型实施过程

Inmon 将模型划分为三个层次,分别是 ERD (Entity Relationship Diagram ,实体关系图)层、 DIS (Data Item Set 数据项集)层和物理层( Physical Model ,物理模型)。

  • ERD层是数据模型的最高层,该层描述了公司业务中的实体或主题域以及它们之间的关系;

  • DIS层是数据模型的中间层,该层描述了数据模型中的关键字、属性以及细节数据之间的关系;

  • 物理层是数据建模的最底,该层描述了数据模型的物理特性。

Inmon 对于构建数据仓库模型建议采用螺旋式开发方法,采用迭代方式完成多次需求。但需要采用统一的 ERD 模型,才能够将每次迭代的结果整合在一起。 ERD 模型是高度抽象的数据模型,描述了企业完整的数据。而每次迭代则是完成ERD模型的子集,通过 DIS 和物理数据模型实现。

ps:上述内容主要引用自Bill Inmon的 Building the Data Warehouse

建模方法:范式建模,建模过程共4步:

  • 业务建模:主要解决业务层面的分解和程序化;

  • 领域(主题域)建模:主要是针对业务模型进行抽象处理,生成领域(主题域)概念模型;

  • 逻辑建模:主要是将领域模型的概念实体以实体之间的关系进行数据库层次的逻辑化;

  • 物理建模:主要解决逻辑模型的物理化以及性能等一些具体的技术问题。如,考虑物理存储,同时基于性能和平台特点进行物理属性的设计,也可能做一些表的合并,分区设计等。

Kimball 模型实施过程

构建维度模型一般要经历四个阶段:第一个阶段是高层设计时期,定义业务过程维度模型的范围,提供每种星形模式的技术和功能描述;第二个阶段是详细模型设计时期,对每个星形模型添加属性和度量信息;第 个阶段是进行模型的审查、再设计和验证等工作;第四个阶段是产生详细设计文档,提交 ETL 设计和开发。

  • 高层模型:直接产出目标是创建高层维度模型图,它是对业务过程中的维表和事实表的图形描述。确定维表创建初始属性列表,为每个事实表创建提议度量。

  • 详细模型:填补高层模型缺失的信息,不断测试模型能否满足业务需求,确保模型的完备性。确定每个维表的属性和事实表的度量,确定信息来源的位置、定义,确定属性和度量填入模型的初步业务规则。

  • 审查验证:主要召集相关人员进行模型的审查和验证,根据审查结果对详细维度进行再设计。

  • 设计开发:完成模型详细设计文档,提交ETL 开发人员,进入ETL设计和开发阶段,由ETL人员完成物理模型的设计和开发。

ps:上述内容主要引用自Ralph Kimball等的The Data Warehouse Lifecycle Toolkit

建模方法:维度建模,建模过程共4步:

  • 选择业务过程:业务过程是组织完成的操作性活动,业务过程事件建立或获取性能度量,并转换成事实表中的事实。业务过程定义了特定的设计目标以及对粒度、维度、事实的定义。通过对业务需求以及数据源的综合考虑,决定选择哪种业务过程开展建模工作。

  • 声明粒度:粒度用于确定某一事实表中的行表示什么。在选择维度或事实前必须声明粒度,某个候选维度或事实必须与定义的粒度保持一致。在所有的维度设计中强制实行一致性是保证BI应用性能和易用性的关键。

  • 确认维度:维度提供围绕某一业务过程事件所涉及的“谁、什么、何处、何时、为什么、如何”等背景。

  • 确认事实:事实涉及来自业务过程事件的度量,基本上以数量值表示。

OneData 体系实施过程

OneData是阿里的模型设计理论,看完这个过程,基本会搞清楚维度建模的各个步骤。首先,在建设数据仓库时,要进行充分的业务调研和需求分析。这是数据仓库建设的基石,业务调研和需求分析做得是否充分直接决定了数据仓库建设是否成功。其次,进行数据总体架构设计,主要根据数据域对数据进行划分;按照维度建模理论,构建总线矩阵、抽出业务过程和维度。再次,对报表需求进行抽象整理出相关指标体系,使用OneData工具完成指标规范定义和模型设计。最后,就是代码研发和运维。实施工作流如下图:

 

  • 数据调研:业务调研需要对业务系统的业务进行了解,需求分析则是收集分析师运营人员对数据或者报表的需求,报表需求实际是最现实的建模需求的基础。

  • 架构设计:分为数据域划分和构建总线矩阵。数据域划分是指面向业务分析,将业务过程或者维度进行抽象的集合,业务过程可以概括为一个个不可拆分的行为事件,如下单、支付等。构建总线矩阵需要明确每个数据域下游哪些业务过程,业务过程与哪些维度相关,并定义每个数据域下的业务过程和维度。

  • 规范定义:规范定义主要定义指标体系,包括原子指标、修饰词、时间周期和派生指标,关于指标的规范定义阿里有单独的一节描述,大家可以好好学习一下,很多时候细节决定成败。

  • 模型设计:模型设计主要包括维度及属性的规范定义、维表、明细事实表和汇总事实表的模型设计。

总结:OneData 的实施过程是一个高度迭代和动态的过程, 般采用螺旋式实施方法。在总体架构设计完成之后,开始根据数据域进行迭代式模型设计和评审。在架构设计、规范定义和模型设计等模型实施过程中,都会引人评审机制,以确保模型实施过程的正确性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值