腾讯欧拉如何打造数据自治系统
导读 腾讯欧拉数据资产套件,提供全链路的数据生产即治理解决方案,包含埋点、数据集成、数仓建模、指标建模、数据服务、治理引擎等关键能力,聚焦可信数据资产沉淀和交付。
主要内容包括以下几大部分:
1. 整体思路与框架
2. 数仓与指标建模
3. 数据发现
4. 未来展望
分享嘉宾|虎兴龙 腾讯 数据工程专家
编辑整理|阿东同学 中国科学院大学
出品社区|DataFun
整体思路与框架
首先是整个欧拉平台建设的思路和框架。企业面临本质问题是数据体系的信息熵太大、信息量小,数据治理本质是打造一个对抗熵增的系统。信息熵往往就等价于确定性,比如我们看到一份数据,如果不知道它用来算什么指标、有什么价值、上下游的应用和所占用的成本,确定性就很低,信息熵就很大。因此我们需要从数据的可理解性、规范性、易用性、可靠性、安全性、成本几个方面来提升确定性。1.平台主旨
怎么能让一个杂乱无序的系统变得规整?在物理学中,一个封闭系统要对抗熵增,通常会对外做功,这有点像事后治理的概念。例如,对于已有存量的数据,需要通过扫描元数据进而发现问题来进行事后治理。这是大家普遍知道的做法,也就是先污染后治理。物理学上其实还有一种方法,即建立一个内部自治的耗散结构。就像人体,即使躺在那里没有外部做功,也不会马上生病,因为人体本身是一个自调节的耗散结构。因此,我们在数据治理过程中 也可以尝试建立生产即治理的耗散结构,使得数据在整个生产和使用过程中都是规范和自调节的,缓解熵增(变混乱)过程。本文内容正是关于如何建立从数仓到指标生产即治理的耗散结构。2.评价体系
首先我们需要过资产分来量化数据体系的信息熵,建立一个评价体系,形成对数据现状、治理效果的共识,进而牵引、推动治理平台的落地。资产分高越则数据的信息熵越低、数据的确定性越高。在此基础上,基于欧拉平台,配合治理专项不断提高资产分。3.数据痛点及平台应对方案
很多企业在数据治理的时用了各种方法仍然避免不了 3 个问题——治理难、维护难、使用难。数据治理的成果像沙子堆的碉堡,缺乏骨架,经不起风吹草动。而腾讯欧拉这样生产即治理的平台工具就可以成为骨架。4.欧拉的服务框架
数仓与指标建模
接下来是数仓和指标建模以及它们所面临的问题和应对方法,还有指标中台、资产工场、数据发现三个平台的设计。1.典型数据问题案例
通常,数据集成入仓后会形成一个结构化的ODS层的表。在这个表上,数据工程师会进行维度扩展或逻辑建模,将一些维表与ODS表关联,如关联用户年龄、性别和渠道信息。这样,就会形成一个明细的DWD宽表,可能还会进行一些transform操作或格式转换。在这个DWD表格的基础上,我们会进行轻度的汇总,形成DWS表,基于DWS表再构建应用层的ADS表,ADS表直接用来配置报表或者用作数据分析,典型问题case 如下图所示:2.关键思路
本质是数据的确定性差,下面讲述如何一步步解决这些问题。3.如何实现数仓建模CRCD
这部分会说明如何实现数据开发流程的软件工程化。在进行前后端开发时,我们要遵循软件工程的理念,常听到的一个词就是面向对象编程。这种编程方式先声明一个对象,这个对象可能有很多属性方法,其它对象也可以继承这个对象。在数据开发中,我们往往是面向表格的开发和交付,表格包含:基础信息、生产代码、scheme定义、调度配置,这些都可以代码化。打通发布流水线,就可以实现数据开发的DevOps,也可以在整个工程实践中增加很多事前、事中、事后的检测约束,保障数据开发规范落地。4.数据工程的编码抽象
除了CR、CI、CD的流程,数据工程代码也需要一定的抽象能力。如果我们只用纯 SQL 来开发表格,就会产生许多问题,SQL代码难以实现可测试性、可读性。当 SQL 代码过于庞大时,可读性会降低,难以进行单元测试或单步调试,也无法实现流程控制,代码复用性也比较低。在软件工程中有一条原则叫做“don’t repeat yourself”,意思是要尽量避免重复。Python 和 SQL 结合是一种不完美、但能实现一些流程控制的放式,抽象公共脚本,实现类似宏的功能,也能引用一些模块化的公共脚本(如下图demo)。5.规范化的概念模型
我们可以将dataops视为一种软件工程化的物理建模。在开始物理建模之前,我们需要先进行概念建模和逻辑建模。概念建模,也是定义数据的业务模型。定义业务过程与业务主题域,可以采用树形结构的方式进行定义。此外,业务过程域下还会定义一些词根以及业务域主题的描述等。创建数据库表时,必须要将其挂载在具体的业务域和主题域下。表名可以根据前后缀和关键点以及业务所在的业务过程来自动生成。如果没有完整的概念模型,就无法形成这种统一的数据资产目录,除非采用人工的方式事后进行整理。6.规范化的逻辑模型
逻辑建模,通常定义一个星型模型或雪花模型,或可视化定义一个pipeline(这是一个数据加工逻辑的可视化方式,易于理解)。7.指标治理面临的主要问题
前面讲了数仓建模,那么指标存在哪些问题呢?答案是“不知道口径”或“口径不一致”,原因是重复(同意不同名、同名不同义也是一种重复)。那么为什么会出现重复?同样的指标在不同的平台被多次重复定义,导致难以保证口径的一致性,从而经常出现同名不同义或同义不同名的问题。我们的方案是以Headless BI为导向,建立一个指标中台。我们希望统一构建一个指标库并向下游提供SDK、API或类似SQL的方式来查询这些指标。我们能确保这个指标库中的指标不会重复。例如,如果出现多个DAU,它们的名称也不同,它们的口径也不同,我们可以轻松区分它们。
8.指标中台与敏捷分析
基于这一理念,可能会有一个问题,指标中台和敏捷分析有什么关系?因为指标是用于分析的。这是否会导致降低分析的敏捷性?实际上,我们应该从提升数据分析效率的角度来考虑问题。影响数据分析效率的因素有多种,例如找数据的效率、计算效率、确认数据是否正确的效率等。如果数据不准确,整体的数据分析效率也不会提高。指标和维度的广义定义是无限的,数据分析同学可能会随时提出不同的指标定义或维度想法。敏捷分析通过提倡快速定义指标维度并即时分析。指标中台的定位是规范地定义指标并提供统一指标服务,在某种程度上会与敏捷矛盾。9.tMetric的领域模型
接下来我们要讲的是指标中台的领域模型。10.如何标准化的定义指标
那么指标的定义呢如何标准化指定呢?例如:以最近七天的体育类视频播放时长为指标,度量是视频总播放时长,维度是性别、年龄等,业务限定体育类。统计周期为最近七天。最终确定了指标定义之后,自动生成计算SQL。这是一个基本的语义模型。11.tMetric的的体系架构
接下来讲一下整体框架。应用生态:对接决策智能平台、报表平台、实验平台和目标管理平台等。所有这些平台都可以接入指标库,使用指标 API 或类 SQL API 获取指标数据。在这些平台看到同一个指标时,口径一定是相同的。12.tMetric的物化加速方案
根据不同的场景选择不同的物化加速方式:场景一:如果这个指标常被观测,其维度组合也已知,且维度基数不高,那么我们会选择预计算方式,定义好指标和需要使用的日常维度组合,预计算是一个cube。这种方式优势是查询速度快、存储、计算成本都比较低,缺点是多维分析的灵活性较低。场景二:指标可能具有多个维度,而未来可能需要使用的维度不确定,这时可以使用StarRocks或Clickhouse等OLAP引擎支持任意维度的OLAP查询。通常会根据一些使用频率较高的维度创建物化视图。场景三:在配置指标时,需要快速预览其定义以确保指标定义正确性。为了实现快速预览,使用MPP内存计算引擎,如Presto、Impala。不过,这并不是一个频繁的操作,通常只在定义指标时进行预览查询。13.效果展示
数据发现
前面讲了指标生产和数仓建模,接下来就需要让用户方便地找到和使用这些数据资产——有哪些指标API可以使用?指标库包含哪些指标?数仓表中包含哪些重要表?这些问题需要通过清晰的呈现来得到解答。未来展望
现在大家都在谈论ChatGPT,也有很多人在讨论AI for BI在企业中应用的一些可能性。例如数据分析师在进行指标分析时面临的痛点,不仅仅是知道指标数值,关键痛点是连贯的顺畅的渐进式的分析。如果AI可以解决这个痛点,那将会是质的飞跃。但如果数据未经治理,没有统一的数据标准和数据框架,那么即使把所有的元数据信息都采集,AI的回答也会似是而非。05
Q&A
Q1:腾讯如何统一指标的?
A1:这个问题可以从三个层面来回答。一个层面是如何统一指标的口径,比如战略层面的一些指标如“DAU 怎么算”、“各个业务大家是不是一致认可的”等。在这方面,我们有一个数据治理的工作组,工作组和业务的数据分析人员会有一个类似数据决策委员会的组织,在战略层的一些关键的指标口径达成共识。另一方面是技术保证口径一致。其实就是我前面讲的,我们基于headless BI 的理念,建设一个统一的指标中台tMetric,把一些常用的指标都定义在这个指标库里面,下游的各个地方引用时都统一从这个指标库里获取指标。第三个层面,就是日常的临时洞察分析。广义上的指标其实是无法穷举的。数据分析人员可能会忽然想到临时指标来统计分析,此时用户的痛点在于怎么算这个指标。这种场景往往是基于日常例行观测指标的衍生指标,也就是说如果知道日常例行观测指标怎么算,大部分情况也能推理出自己新构造的指标怎么算。Q2:环境分为开发环境、测试环境还有生产环境吗?
A2:我们现在只有测试环境跟生产环境,没有预发的过程。但未来我们也会有预发,在一些很严苛的场景,数据测试完后可以发布到预发环境可试跑几天,确认没有问题再整个上线。Q3:指标库的规模大概是多大?
A3:坦白说现在指标的数量只有 6000 多个,但是维度的数量比较多,一个指标可能有特别多的维度,我认为能从各个维度去看这个指标才是最大的挑战。Q4:系统地讲一下在数据治理中用到了哪些 AI 技术?
A4:我觉得是两个方面。一个是通过 AI 手段来提升数据治理的自动化的水平。通过 AI直接自动化治理是比较难的,毕竟数据治理有很强的业务性,需要理解业务模式和数据专家经验。但 AI 的一些技术可以加强数据治理工具能力,比如有些表可能没有描述,之前要人工梳理和补充表描,但现在 AI 可以根据表的一些数据的样本自动补充描述,自动给数据分类。第二个是 AI 对数据治理的促进作用,也就是用 AI 做增强分析。但如前文所言,这需要极高的数据治理的水平,需要数据治理的平台化和生产即治理的模式,事后治理不能满足 AI for BI的需求的。Q5:枚举值的最初来源是埋点信息吗?
A5:枚举值的来源有三部分。第一部分是埋点信息,比如说一个APP的启动方式的枚举值可能在埋点系统定义。第二个部分是直接提取一些表的字段的枚举值。第三个就是人工补充。需要注意的是,枚举值的定义一定是可枚举的。不是所有维度都要枚举,比如维度是用户ID,就不可枚举。Q6:概念模型和逻辑模型在没有平台化管理的情况下,应该怎么迭代管理?
A6:目前没有很好的方案。如果没有平台管理,而是通过 wiki 、文档等去梳理,你那么维护成本极高。Q7:腾讯如何量化评估指标资产的价值?
A7:这个是大家都很关心的问题,其实也就是数据治理。那么我们如何让老板知道投了这么多资源的最终效果呢?其实数据治理本质上就是 4 个方面:成本、质量、安全风险和效率。单点治理时,切入点可以选成本,好度量。质量也有一些评估的方法,比如数据的及时性、数据问题反馈率和数据异常率等。数据安全和效率的效果量化困难比较困难,可以先组织大家形成共识,确定必须要做的事,在这个前提下再定义量化指标来牵引结果。我们的组织是数据治理工作组,量化指标是我前面讲的资产分,通过量化评估把大家的治理水平拉到一个评价标准上,谁的资产分低,说明说谁的治理效果可能存在问题。总结来讲,先通过组织共识目标(要做什么),再定义量化指标牵引目标达成,量化指标的定义也要注意,粗略的正确好过精确的错误。
Q8:如果构建了指标体系,传统的数仓会不会做的比较薄?
A8:数仓应该会下沉,比如说原来数仓有大量的ADS 表,现在就收敛到DWD或者少数DWS表,我认为可以通过指标中台的指标定义,自动化或半自动化地生产大量应用层的表。Q9:最后一问题的话是说现在经济环境不好,那业务都要敏捷,那数据治理怎么敏捷跟上业务的发展?
A9:我认为现在整个行业更偏向像保守的方向,倡导降本增效。数据治理的目标就是降本增效,刚好符合现在的企业诉求,原来不重视数据治理,同一个指标可能会反复统计多次,计算跟存储成本会非常高。现在数据治理想办法帮业务降本增效。做好这点,就是对业务发展最好的帮助。以上就是本次分享的内容,谢谢大家。分享嘉宾
INTRODUCTION
虎兴龙
腾讯
数据工程专家,研发组长
11年大数据领域从业经验,擅长大数据平台技术架构、数据治理与分析平台建设,先后在百度、vivo、腾讯负责大数据平台、数据治理平台研发工作,目前担任腾讯数据工程专家、研发组长,负责腾讯欧拉数据治理平台的技术工作。
今日推荐