OneData建设探索之路:SaaS收银运营数仓建设

背景

随着业务的发展,频繁迭代和跨部门的垂直业务单元变得越来越多。但由于缺乏前期规划,导致后期数仓出现了严重的数据质量问题,这给数据治理工作带来了很大的挑战。在数据仓库建设过程中,我们总结的问题包括如下几点:

  • 缺乏统一的业务和技术标准,如:开发规范、指标口径和交付标准不统一。
  • 缺乏有效统一的数据质量监控,如:列值信息不完整和不准确,SLA时效无法保障等。
  • 业务知识体系散乱不集中,导致不同研发人员对业务理解存在较大的偏差,造成产品的开发成本显著增加。
  • 数据架构不合理,主要体现在数据层之间的分工不明显,缺乏一致的基础数据层,缺失统一维度和指标管理。

目标

在现有大数据平台的基础上,借鉴业界成熟OneData方法论,构建合理的数据体系架构、数据规范、模型标准和开发模式,以保障数据快速支撑不断变化的业务并驱动业务的发展,最终形成我们自己的OneData理论体系与实践体系。

OneData探索

OneData:行业经验

在数据建设方面,阿里巴巴提出了一种OneData标准,如图-1所示:

图1 OneData标准

OneData:我们的思考

他山之石,可以攻玉。我们结合实际情况和业界经验,进行了如下思考:

1.对阿里巴巴OneData的思考

  • 整个OneData体系覆盖范围广,包含数据规范定义体系、数据模型规范设计、ETL规范研发以及支撑整个体系从方法到实施的工具体系。
  • 实施周期较长,人力投入成本较高。
  • 推广落地的工作比较依赖工具。

2.对现有实际的思考

  • 现阶段工具保障方面偏弱,人力比较缺乏。
  • 现有开发流程不能全部推翻。

经过综合考量,我们发现直接全盘复用他人经验是不合理的。那我们如何定义自己的OneData,即能在达到目标的前提下,又能避免上述的难题呢?

OneData:我们的想法

首先,结合行业经验,自身阶段的实践及以往的数仓经验,我们预先定义了OneData核心思想与OneData核心特点。

OneData核心思想:从设计、开发、部署和使用层面,避免重复建设和指标冗余建设,从而保障数据口径的规范和统一,最终实现数据资产全链路关联、提供标准数据输出以及建立统一的数据公共层。

OneData核心特点:三特性和三效果。

  • 三特性:统一性、唯一性、规范性。
  • 三效果:高扩展性、强复用性、低成本性。

图2 OneData的六个特性

OneData:我们的策略

OneData即有核心思想又有核心特点,到底怎么来实现核心思想又能满足其核心特点呢?通过以往经验的沉淀,我们提出两个统一方法策略:统一归口、统一出口。

根据两个统一的方法策略,我们开启了OneData的实践之路。

OneData实践

统一业务归口

数据来源于业务并支撑着业务的发展。因此,数仓建设的基石就是对于业务的把控,数仓建设者即是技术专家,也应该是“大半个”业务专家。基于互联网行业的特点,我们基本上采用需求推动数据的建设,这也带来了一些问题,包括:数据对业务存在一定的滞后性;业务知识沉淀在各个需求里,导致业务知识体系分散。针对这些问题,我们提出统一业务归口,构建全局知识库,进而保障对业务认知的一致性。

图3 支持业务的数据源知识库

设计统一归口

为了解决数据仓库建设过程中出现的各种痛点,我们从模型与规范两个方面进行建设,并提出设计统一归口。

1.模型

规范化模型分层、数据流向和主题划分,从而降低研发成本,增强指标复用性,并提高业务的支撑能力。

(1) 模型分层

优秀可靠的数仓体系,往往需要清晰的数据分层结构,即要保证数据层的稳定又要屏蔽对下游的影响,并且要避免链路过长。结合这些原则及以往的工作经验,我们将分层进行统一定义为四层:

图4 数据分层架构

(2) 模型数据流向

重构前,存在大量的烟囱式开发、分层应引用不规范性及数据链路混乱、血缘关系很难追溯和SLA时效难保障等问题。

图5 重构前和重构后的数据流向图

重构之后,稳定业务按照标准的数据流向进行开发,即ODS–>DWD–>DWA–>APP。非稳定业务或探索性需求,可以遵循ODS->DWD->APP或者ODS->DWD->DWT->APP两个模型数据流。在保障了数据链路的合理性之后,又在此基础上确认了模型分层引用原则:

  • 正常流向:ODS>DWD->DWT->DWA->APP,当出现ODS >DWD->DWA->APP这种关系时,说明主题域未覆盖全。应将DWD数据落到DWT中,对于使用频度非常低的表允许DWD->DWA。
  • 尽量避免出现DWA宽表中使用DWD又使用(该DWD所归属主题域)DWT的表。
  • 同一主题域内对于DWT生成DWT的表,原则上要尽量避免,否则会影响ETL的效率。
  • DWT、DWA和APP中禁止直接使用ODS的表, ODS的表只能被DWD引用。
  • 禁止出现反向依赖,例如DWT的表依赖DWA的表。

2.主题划分

传统行业如银行、制造业、电信、零售等行业中,都有比较成熟的主题划分,如BDWM、FS-LDM、MLDM等等。但从实际调研情况来看,主题划分太抽象会造成对业务理解和开发成本较高,不适用互联网行业。因此,结合各层的特性,我们提出了两类主题的划分:面向业务面向分析

  • 面向业务:按照业务进行聚焦,降低对业务理解的难度,并能解耦复杂的业务。我们将实体关系模型进行变种处理为实体与业务过程模型。实体定义为业务过程的参与体;业务过程定义是由多个实体作用的结果,实体与业务过程都带有自己特有的属性。根据业务的聚合性,我们把业务进行拆分,形成了七大核心主题。
  • 面向分析:按照分析聚焦,提升数据易用性,提高数据的共享与一致性。按照分析主体对象不同及分析特征,形成分析域主题在DWA进行应用,例如销售分析域、组织分析域。

3.规范

模型是整个数仓建设基石,规范是数仓建设的保障。为了避免出现指标重复建设和数据质量差的情况,我们统一按照最详细、可落地的方法进行规范建设。

(1) 词根

词根是维度和指标管理的基础,划分为普通词根与专有词根,提高词根的易用性和关联性。

  • 普通词根:描述事物的最小单元体,如:交易-trade。
  • 专有词根:具备约定成俗或行业专属的描述体,如:美元-USD。

(2) 表命名规范

通用规范

  • 表名、字段名采用一个下划线分隔词根(示例:clienttype->client_type)。
  • 每部分使用小写英文单词,属于通用字段的必须满足通用字段信息的定义。
  • 表名、字段名需以字母为开头。
  • 表名、字段名最长不超过64个英文字符。
  • 优先使用词根中已有关键字(数仓标准配置中的词根管理),定期Review新增命名的不合理性。
  • 在表名自定义部分禁止采用非标准的缩写。

表命名规则

表名称 = 类型 + 业务主题 + 子主题 + 表含义 + 存储格式 + 更新频率 +结尾,如下图所示:

图6 统一的表命名规范

(3) 指标命名规范

结合指标的特性以及词根管理规范,将指标进行结构化处理。

A. 基础指标词根,即所有指标必须包含以下基础词根:

基础指标词根英文全称Hive数据类型MySQL数据类型长度精度词根样例
数量countBigintBigint100cnt
金额类amoutDecimalDecimal204amt
比率/占比ratioDecimalDecimal104ratio0.9818
…………………………

B.业务修饰词,用于描述业务场景的词汇,例如trade-交易。

C.日期修饰词,用于修饰业务发生的时间区间。

日期类型全称词根备注
dailyd
weeklyw
………………

D.聚合修饰词,对结果进行聚集操作。

聚合类型全称词根备注
平均averageavg
周累计wtdwtd本周一截止到当天累计
………………

E.基础指标,单一的业务修饰词+基础指标词根构建基础指标 ,例如:交易金额-trade_amt。

F.派生指标,多修饰词+基础指标词根构建派生指标。派生指标继承基础指标的特性,例如:安装门店数量-install_poi_cnt。

G.普通指标命名规范,与字段命名规范一致,由词汇转换即可以。

图7 普通指标规范

H.日期类型指标命名规范,命名时要遵循:业务修饰词+基础指标词根+日期修饰词/聚合修饰词。将日期后缀加到名称后面,如下图所示:

图8 日期类型指标规范

I.聚合类型指标,命名时要遵循:业务修饰词+基础指标词根+聚合类型+日期修饰词。将累积标记加到名称后面,如下图所示:

图9 聚合类指标规范

(4) 清洗规范

确认了字段命名和指标命名之后,根据指标与字段的部分特性,我们整理出了整个数仓可预知的24条清洗规范:

数据类型数据类别Hive类型MySQL类型长度精度词根格式说明备注
日期类型字符日期类stringvarchar10dateYYYY-MM-DD日期清洗为相应的格式
数据类型数量类bigintbigint100cnt活跃门店数量
…………………………………………

结合模型与规范,形成模型设计及模型评审两者的工作职责,如下图所示:

图10 模型设计和审计职责

统一应用归口

在对原有的应用支持流程进行梳理的时候,我们发现整个研发过程是烟囱式。如果不进行改善就会导致前面的建设”毁于一旦“,所以需对原有应用支持流程进行改造,如下图所示:

图11 应用归口

从图中可以看出,重构前一个应用存在多次迭代,每次迭代都各自维护自己的文档。烟囱式开发会导致业务信息混乱、应用无法与文档对齐、知识传递成本、维护成本和迭代成本大大增加等问题。重构后,应用与知识库相对应,保证一个应用只对应一份文档,且应用统一要求在一份文档上进行迭代,从根源上改变应用支持流程。同时,针对核心业务细节和所支撑的数据信息,进行了全局调研并归纳到知识库。综合统一的知识库,降低了知识传递、理解、维护和迭代成本。

统一归口策略包含业务归口统一、设计归口统一和应用归口统一,从底层保证了数仓建设的三特性三效果

统一数据出口

数仓建设不仅仅是为了数据内容而建设,同时也为了提高交付的数据质量与数据使用的便利性。如何保证数据质量以及推广数据的使用,我们提出了统一数据出口策略。在进行数据资产管理和统一数据出口之前,必须高质量地保障输出的数据质量,从而树立OneData数据服务体系的权威性。

1.交付标准化

如何保证数据质量,满足什么样的数据才是可交付的,是数据建设者一直探索的问题。为了保证交付的严谨性,在具体化测试方案之前,我们结合数仓的特点明确了数据交付标准的五个特性,如下图所示:

图12 交付标准化

《交付标准化》完善了整个交付细节,从根本上保证了数据的质量,如:业务测试保障数据的合理性、一致性;技术测试保障数据的唯一性、准确性;数据平台的稳定性和后期人工维护保障数据的及时性。

2.数据资产管理

针对如何解决数据质量中维度与指标一致性以及如何提高数据易用性的问题,我们提出数据资产的概念,借助公司内部平台工具“起源数据平台”实现了整个数据资产管理,它的功能如下图所示:

图13 起源功能体系

借用起源数据平台,我们实现了:

  • 统一指标管理,保证了指标定义、计算口径、数据来源的一致性。
  • 统一维度管理,保证了维度定义、维度值的一致性。
  • 统一数据出口,实现了维度和指标元数据信息的唯一出口,维值和指标数据的唯一出口。

通过交付标准化和数据资产管理,保证了数据质量与数据的易用性,同时我们也构建出OneData数据体系中数据指标管理的核心。

实践的成果

流程改善

我们对开发过程进行梳理,服务于整个OneData体系。对需求分析、指标管理、模型设计、数据验证进行了改善,并结合OneData模型策略,改善了数仓管理流程。

图14 数仓管理流程

数仓全景图

基于OneData主题建设,我们采用面向业务面向分析的建设策略,形成数仓全景图,如下图所示:

图15 数仓全景图

资产管理列表

基于起源数据平台形成的资产管理体系,如下图所示:

图16 数据资产管理

项目收益

基于OneData建设成果,我们结合实际项目建设样例,对比以前未进行OneData建设时的收益。如下图所示:

图17 价值收益

总结和展望

我们结合了OneData核心思想与特点,构建一种稳定、可靠的基础数据仓库,从底层保障了数据质量,同时完成OneData实践,形成自有的OneData理论体系。未来,我们还将在技术上引入实时数据仓库,满足灵活多样、低延时的数据需求;在业务层面会横向拓展其他业务领域,不间断地支撑核心业务的决策与分析。下一步,我们将为企业级One Entity数据中台(以Data As a Service为理念),提供强有力的数据支撑。在后续数仓维护过程中,不断地发现问题、解决问题和总结问题,保障数据稳定性、一致性和有效性,为核心业务构建价值链,最终形成企业级的数据资产。

作者

禄平,周成,黄浪,健平,高谦,美团数据研发工程师。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android远程服务与本地服务的特点以及功能差异

最近又重新看了点IPC的相关知识,以前看过不少Binder的知识,看到c层思路就很模糊了,回头再看也算是一种学习。 IPC全称为:interprocess communication内部进程间通信,官方地址:http://developer.android.com/intl/zh-c…

svn中文语言包安装(最详细步骤)+Language Pack+TortoiseSVN 安装

原文链接:https://blog.csdn.net/massillon/article/details/102780782 svn中文语言包安装(最详细步骤) 一. 查看自己的SVN 版本(这里省略也可以,同事1.9版本的直接在官网下载的语言包也能用,区别对待把,可以先直接在官网下载,不行再去找对应版本语言包) 1.打开SVN找…

我拿模型当朋友,模型却想泄漏我的隐私?

文 | 阿毅编 | 小轶相信大家对Facebook–Cambridge Analytica隐私泄露事件都还有印象。这事儿在当时可谓爆炸性新闻,激起了公众对数据隐私的强烈关注,也间接影响了美国总统选举结果(这不是重点)。不过从事后诸葛亮来看&#xff0c…

论文浅尝 | SPARQL 语言的 ASK 查询表达性研究进展

论文作者之一:杨炫兴,天津大学博士生。链接:http://cic.tju.edu.cn/faculty/zhangxiaowang/publication/ASK.pdf动机SPARQL是万维网联盟(World Wide Web Consortium,简记W3C)推荐的知识图谱标准查询语言&am…

LeetCode 1021. 删除最外层的括号(栈)

文章目录1. 题目2. 解题1. 题目 题目链接 示例 1:输入:"(()())(())" 输出:"()()()" 解释: 输入字符串为 "(()())(())",原语化分解得到 "(()())" "(())"&#xf…

JVM CPU Profiler技术原理及源码深度解析

研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能瓶颈。Profiling技术是一种在应用运行时收集程序相关信息的动态分析手段,常用的JVM Profiler可以从多个方面对程序进行动态分析,如CPU、Memory、Thread、Classes、…

Facebook提出生成式实体链接、文档检索,大幅刷新SOTA!

文 | 花小花Posy导言最近ICLR的rebutal 前后分数对比出来了,很多评委都改了分数,有改多的,也有改少的。今天给大家介绍的这篇高分论文竟然在rebuttal前后都保持高分,证明评委们对它的认可程度是很高的。实体检索任务的定义是&…

论文浅尝 | 知识库问答中关系检测的学习表示映射

论文笔记整理:吴涵,天津大学硕士,研究方向:自然语言处理。链接:Paper: https://arxiv.org/pdf/1907.07328v1.pdfCode: https://github.com/wudapeng268/KBQA-Adapter引入在关系检测任务中,对于训练数据中已…

LeetCode 1175. 质数排列

文章目录1. 题目2. 解题1. 题目 请你帮忙给从 1 到 n 的数设计排列方案,使得所有的「质数」都应该被放在「质数索引」(索引从 1 开始)上;你需要返回可能的方案总数。 让我们一起来回顾一下「质数」:质数一定是大于 1…

ICLR最高分论文揭秘模型泛化,GNN是潜力股

文 | Jerry Qiu编 | 小轶我们都知道,人类在很多任务上都可以很好地完成“外推”,例如:啊不——我是说——例如,我们学会两位数的加减乘除后,就可以轻松将其推广至任意大整数的四则运算:从数学的角度来讲&am…

Android系统原生应用解析之桌面闹钟及相关原理应用之时钟任务的应用(一)

前段时间我一个朋友在面试回来问我:那个公司要5天之内完成一个项目,功能包括每天早上6点开始执行定时任务,大批量图片上传,大批量数据库同步。我心想,后两个功能还好说,可就是每天早上6点开始执行的这种定时…

配送交付时间轻量级预估实践

1. 背景 可能很多同学都不知道,从打开美团App点一份外卖开始,然后在半小时内就可以从骑手小哥手中拿到温热的饭菜,这中间涉及的环节有多么复杂。而美团配送技术团队的核心任务,就是将每天来自祖国各地的数千万份订单,迅…

论文浅尝 | 面向 cQA 的跨语言问题检索方法

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为知识库问答。来源:WWW2019链接:https://dl.acm.org/citation.cfm?doid3308558.3313502本文提出了一种面向cQA的跨语言问题检索方法,旨在对于给定的问题检索…

揭秘Python并发编程——协程

原文链接:https://baijiahao.baidu.com/s?id1649450510185145678&wfrspider&forpc Python并发编程一直是进阶当中不可跨越的一道坎,其中包括进程、线程、协程,今天我们就来聊一聊协程。协程的定义很简单,从头到尾只有一条…

LeetCode 804. 唯一摩尔斯密码词(哈希+set)

文章目录1. 题目2. 解题1. 题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: “a” 对应 “.-”, “b” 对应 “-…”, “c” 对应 “-.-.”, 等等。 为了方便,所有26个英文字母对应摩尔…

计算机基础晦涩难懂?那你是没看他的图解文章!

这年头,写计算机基础的人好之又少,能把枯燥无味的计算机基础写的通俗易懂的人更是少,而就有一位叫「小林coding」的公众号横空出世,真的是一股清流,他酷爱「图解」计算机基础文章,真正做到了图解&#xff0…

Litho在美团动态化方案MTFlexbox中的实践

1. MTFlexbox MTFlexbox是美团内部应用的非常成熟的一种跨平台动态化解决方案,它遵循了CSS3中提出的Flexbox规范来抹平多平台的差异。MTFlexbox适用于重展示、轻交互的业务场景,与现有HTML、React Native、Weex等跨平台方案相比,MTFlexbox具备…

服务器部署docker

服务器部署docker docker简介## 可以把docker是一个容器,可以让开发者将自己的项目部署到这个容器中,最常用的场景是将自己的后端项目部署到服务器的时候会将其打入docker镜像中,可以理解为一个开销更小的虚拟机。 docker好处## 可以轻易地让…

LeetCode 461. 汉明距离(异或^ 与)

文章目录1. 题目2. 解题1. 题目 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y&#xff0c;计算它们之间的汉明距离。 注意&#xff1a; 0 ≤ x, y < 2^31.示例:输入: x 1, y 4输出: 2解释: 1 (0 0 0 1) 4 (0 1 0 0)…

论文浅尝 | NumNet: 一种带有数学推理的机器阅读理解模型

论文笔记整理&#xff1a;吴林娟。来源&#xff1a;EMNLP2019论文链接&#xff1a;https://arxiv.org/pdf/1910.06701.pdf开放源码&#xff1a;https://github.com/ranqiu92/NumNet概述本文提出了一个将数学推理融入机器阅读理解的模型——NumNet&#xff0c;其中利用数字感知的…