导读 指标体系在数据分析、数据应用中有着重要的价值。本文从数仓开发的角度,分享在懂车帝业务中,指标体系建设工作如何开展落地,如何在数仓模型层面实现指标体系建设。
今天的介绍会围绕下面六点展开:1. 如何建立指标体系规范
2. 指标模型建设在数仓工作中的收敛
3. 指标体系质量监控策略
4. 构建全方位的指标应用场景
5. 未来展望
6. 问答环节
分享嘉宾|肖继哲 字节跳动 懂车帝资深数仓研发工程师
编辑整理|许通
内容校对|李瑶
出品社区|DataFun
如何建立指标体系规范
1. 懂车帝业务介绍
懂车帝是一站式汽车信息与服务平台,涵盖内容、工具和社区,致力于为用户提供真实、专业的汽车内容和高效的选车服务,同时为汽车厂商和汽车经销商提供高效解决方案。懂车帝的业务自成立以来,规模和体量在不断扩展,不论是线上用户还是内部业务场景,均需要数仓提供高质量的数据服务。
比如面向 C 端用户视角的热点文章推送、汽车销量榜单对比分析等,面向B 端商家视角的用户购车意愿等,以及内部业务的产品运营、经营分析、战略规划等场景,数仓一直为其提供数据分析、数据挖掘等数据服务。并且,数据服务包括多种时效场景:离线 T+1 场景、准实时(小时级、分钟级)以及纯实时场景。截止目前,懂车帝业务数仓的数据存储规模在百 PB 级别,日常例行生产任务数据量达数万,其计算资源消耗超十万 Core,共累计建设有 6000 多个有效指标。从数仓建设的规模也一定程度上反应出懂车帝业务的复杂性。2. 为什么要做指标体系规范
伴随着懂车帝业务的复杂多样和快速迭代,业务数据指标体系的建设相对应的也会变得非常复杂。这导致各相关团队在日常工作中使用数据,都会遇到诸多痛点。为了解决相关工作中的实际问题,数仓团队结合实际业务诉求,建立起持续围绕指标体系的数仓模型建设、数据 BI 分析需求、数据服务和数据应用的工作机制,以促进数据良性传播,全局降本提效,释放数据价值。3. DataLeap 指标管理平台
在介绍指标体系建设之前,我们先了解一下火山引擎 DataLeap 平台。DataLeap 的定位是建设公司范围内指标视角的统一资产(元数据)中心,解决“灵活数据分析”场景下的找数据和找口径的问题;维护可共享、可视化、服务化的业务指标体系。DataLeap 包含四大部分功能:规范定义、建模研发、指标应用和指标服务。懂车帝业务深度结合了 DataLeap 指标平台丰富的指标体系建设和管理的能力,并且在此基础之上,独立开发了指标观星台等业务 BI 平台产品,进一步丰富了指标应用能力的建设,最终实现整体指标体系的实践落地。4. 指标体系建设框架
我们整套指标体系建设包括三部分内容:基础能力建设、指标服务能力建设、应用能力建设。- 指标元信息规范建设,比如指标的命名规范、业务定义、元信息管理,解决指标是什么的问题;
- 指标模型挂载建设,包括模型粒度的选择、多模型如何挂载等,关乎如何保证数据查询的准确性和效率,解决指标怎么开发的问题;
- 指标血缘管理建设,明确上游生产链路以及下游应用场景,解决指标用在哪的问题;
- 指标服务质量保障建设,保证指标一致性和整个系统的稳定性,解决指标数据准不准的问题。
有了这些指标的基础信息,我们构建了指标体系管理大盘,可视化地体现基础元信息、血缘链路信息等。在基础能力具备之后,我们借助 DataLeap 指标平台的能力进行一体化的指标服务查询能力建设,包括指标路由查询逻辑的处理和容灾处理等。再进一步,打造指标的应用能力,为业务提供多样化的指标服务查询能力。比如我们推出了 DCD 指标观星台,提供了可视化的查询、分析和编排能力。还有很多 B 端、C 端线上数据服务应用,都是建立在统一的指标服务能力基础上,来确保业务使用数据的一致性和准确性。5. 指标元数据管理规范
在指标体系建设中,首先要关注指标元数据管理规范,包括指标命名规范、指标业务定义、指标等级管理、指标目录管理、指标版本管理和指标业务命名管理等。指标命名规范,标准化指标中英文命名,通过指标的词根拆解来定义没有歧义、标准一致的数据指标体系,同时通过对词根进行规范管理,避免同名不同义、同义不同名等问题。指标业务定义,要结合业务场景,保证指标完善、准确、易懂、精要。指标等级管理,制定指标优先级,重点关注高级别指标。具体分级为:- 一级指标:衡量业务结果的北极星指标,OKR 指标;
- 二级指标:业务重点关注的指标,能够反映当前业务效果的指标;
指标命名规范是元数据管理规范中的重点,命名不规范会带来歧义,增加使用的成本。接下来具体介绍如何进行指标命名。
标准的指标中英文命名通过词根拆解来实现,拆解过程总体包括基础词根信息配置和指标拆解定义。通过规范约束词根,来实现指标组合拼接达到统一标准。词根包括五种:数据域、业务过程、度量、修饰词、时间周期。通过这五种词根可以组合拼接出原子指标、衍生指标、复合指标的规范名称。为了高效实现词根拆解,我们开发提供了线上化工具,将词根拆解过程自动化执行。
依次,可以得到原子指标“成交_量”与衍生指标“双月_CPS_成交_量”。进一步,如果和其他指标结合,如“双月_CPS_商家_数量”,进行四则运算得到复合指标,复合指标名称为“双月_CPS_平均_商家_成交_量”。目前懂车帝词根管理已维护的包括:34 个数据域、700 个业务过程、220 个度量词、1080 个修饰词和 77 个时间周期。词根拆解之后,指标元数据创建流程也会遵循指定的 SOP 约束。
指标元数据创建过程中,参与角色除了需求方、数据产品团队、数仓开发团队,还有数仓指标评审组。数仓指标评审组是一个虚拟小组,有专项数仓同事参与指标评审。- 明确指标中英文名称后,数据产品团队补齐其他基础元数据
在词根拆解过程中,会通过拆解工具确定词根是否已经录入或存在同义词根。如果词根库中词根已满足需求,就可直接使用。词根库中需要词根补录时,数仓指标评审组先进行评审,通过后再加入词根库。通过数仓指标评审组的校验,可以有效保证词根库的规范和质量。指标元数据创建后,就会由数据开发同学进行模型的开发以及指标绑定。在介绍指标模型建设之前,先来看一下数仓同学在过往工作中存在的问题。
整体上,指标模型建设的情况可以总结为“散、乱、差”。具体表现在:- 维度表建设不足:缺少一致性维度层,维度表和事实表没有严格区分,有些维表也放在了 DWD 层。
- 汇总层严重缺失:未沉淀通用的指标逻辑,复用性差,存在同名不同义和同义不同名的问题,血缘链路也不清晰,加大了维护和问题排查成本。
- 明细层建设混乱:直接使用明细数据进行简单加工,没有进行过程抽象,造成大量耦合信息,数据产出的质量和时效越来越没有保障。
- 应用层重复建设:随着需求的增加,应用层快速膨胀,通用逻辑未下沉,造成大量重复建设,导致了资源的浪费。
为了解决指标模型建设的问题,需要结合业务特性制定规范标准。
懂车帝的业务场景包括:媒体&商业化业务场景、二手车&交易业务场景。媒体&商业化业务场景中业务发展相对稳定,指标体系变化相对低频。这种业务稳定的情况,依据主题数据域、业务过程等,沉淀公共层数据模型,优先推进规范化执行。二手车&交易业务场景中业务快速迭代,指标体系变动比较大,实时数据场景多,时效响应要求高,并且线上 SaaS 场景应用居多。对应这种快速变化的情况,优先满足业务需求快速迭代,允许从明细层灵活加工产出指标数据,但指标口径和业务定义需要做强保障。为了兼顾两大类场景,对数仓各层提出了如下一些规范要求:- 明细层(DWD 层)基于业务过程抽象,沉淀通用逻辑,达到规范统一、稳定易用。
- 轻度汇总层(DWA 层)遵循数据域--业务过程--原子指标--衍生指标--复合指标的建设规范,拆解指标体系,建设数据域+粒度视角的数据模型。
- 数据集市层(DM 层)处理跨数据域交叉场景,进行指标大宽表模型建设、支持复合指标建设。
数仓同学拿到一个指标或者在进行指标评审中,需要非常清楚指标拆解的过程,明确涉及到的数据域、业务过程、度量、修饰词等关键词根,进而判断、设计指标模型应该在哪一层做,做到什么粒度。
如何解决这些问题?这就用到了我们整理建设的数仓资产地图,这里包含了数仓已经建设的各个主题的数据模型,明确描述了覆盖的业务过程、数据粒度以及核心满足的业务场景。在指标模型开发前,数仓同学会通过数据资产地图搜索关键业务过程、词根查找模型。存在已有模型满足需求,可以直接使用避免重复建设。已有模型不满足需求时,如新增维度拆解,可以原有模型上进行迭代,并将迭代信息维护在资产地图中。通过这样过程,可以避免模型的重复建设。
指标模型建设完成后,将指标模型与指标绑定。在懂车帝业务场景中,有离线场景、准实时场景、纯实时场景,这些场景中具体的指标实现过程不一样,但是都会通过 DataLeap 指标平台进行挂载。一个指标可能会绑定多个指标模型。因为在具体工作中,同一个指标在不同场景会有不同效果的查询需求,比如 A 场景需要查询快速响应得到具体数据,B 场景需要进行多维度数据分析,这样同一个指标的不同的模型产出,可以满足不同维度分析与产出时效、查询效率的平衡。
指标体系质量监控策略
指标查询中会遇到各种问题,如:查询失败、慢查询、指标产出时间延迟、不同业务找同一个指标查询结果不一致、指标生产资源浪费等问题,因此需要建立指标体系质量监控来及时发现和解决问题。
指标体系监控策略整体上包括三大部分:指标体系规范监控、指标查询服务监控和指标治理监控。
指标体系规范监控包括:词根管理监控、指标业务定义监控、指标等级监控和指标版本监控四大方面。具体内容如上图所示。
- 多模型绑定查询一致性监控:支持多模型的指标体系,最担心的就是指标不一致。我们通过定时巡检指标查询服务,发现指标结果不一致,发送报警消息到指标模型 Owner。此类问题需要在开发阶段就将问题处理。
- 指标慢查询/异常查询监控:对慢查询同样采取定时巡检,事前处理。对于查询异常,通过服务接口的查询日志、用户访问平台的埋点日志,实时监控线上指标服务请求异常信息。发现异常时,按照指标服务登记场景的重要程度,分级发送报警消息。
- 指标 SLA 监控:对每个指标登记 SLA 信息,进行基线预警监控,还要根据需要进行专项优化治理。
- 指标数据波动监控:数据波动不一定是存在问题,但需要去分析其原因。
为了更直观的看到指标体系服务的质量效果,我们构建了可视化监控平台。该平台包括指标访问热度统计、监控信息统计和治理复盘,以及指标治理收益的统计。构建全方位的指标应用场景
有了清晰的指标定义、稳定的指标模型生产、完备的指标监控体系以及统一的指标查询服务,我们整体为懂车帝内部分析业务和外部线上业务提供了多样化的应用场景。
比如面向业务内部管理层查看的核心指标看板,面向产品运营同学灵活业务分析的自助指标 BI 分析平台,以及面向汽车经销商门店、销售提效的商业化运营平台。
结合实际的业务使用场景,我们还建设了全链路指标血缘应用管理。血缘管理可以方便可视化地体现指标上游链路异动对下游应用的影响,方便 SLA 治理,也方便量化数仓工作价值。其中血缘管理包括前向链路和后向链路两个过程。所有指标服务接口的调用都要在使用前做好接口调用场景的登记。即使某个指标服务跳过 SOP 没有进行登记,我们也可以通过调用日志监控发现遗漏,然后反向推动服务登记。通过这样的措施,保证了数仓能够对所有指标服务应用场景进行全面的掌控,以做好服务质量的管理。未来展望
未来,我们会结合 BSC(平衡计分卡),将指标体系与业务管理结合。将战略目标、实现路径、策略打法这些业务战略规划体现在指标体系中。另外,要建设更加完整、统一的数据服务查询层。现在借助 DataLeap 提供的数据服务接口,基本实现了指标粒度的统一服务查询。未来要应对更复杂的查询场景,提供不限于指标粒度的统一接口服务,实现一体化数据查询服务。最后还将考虑指标体系与大模型的结合,提供数据智能的问答交互能力。通过自然语言交互模式为业务人员提供自主取数、快速找数、理解数据的能力。问答环节
Q1:拆解好的指标体系是按照原子指标、修饰词、时间、维度,那么实际存储中是如何处理?A1:会区分原子指标、复合指标、衍生指标这几种场景。对于原子指标,直接从业务到度量,存储层面可以存在明细层。原子指标不存在跨域场景、不需要聚合。对于衍生指标、复合指标可能会涉及跨域的场景,在这种情况下需要考虑聚合到何种粒度。可以使用大宽表,也可以还在聚合层跨域查询。在存储层面,衍生指标、复合指标存储在 DM 层。对外服务中,指标在查询层面提供统一接口,原子指标直接查询明细层,衍生指标、复合指标通过路由调用最优的模型来处理。A2:平台中有一些算法库,提供智能算法识别词根的近义词相似度。对于近似度高的词根,进行人工排查。发现近义词后,进行复盘,核实为近义词后进行词根剔出。Q3:对于同一个指标来自于不同的业务域、数据源、商品范围,数据应该如何处理?是先进行异构数据融合,还是分开建设。若是分开建设,如何保证这两个口径一致。A3:如果是同一个指标,数据源、业务域都不一样,首先需要判断是否真的是同一个指标。如果是同一个指标,需要明确指标的业务定义,涉及指标口径概念。比如,不同的商品范围会对应商品范围修饰词,在不同修饰词限定下是不同的衍生指标。指标开发中,结合不同的修饰词在实际业务范围中开发指标模型。可能在原子指标上是同一个概念、同一个过程、同一个度量词,在不同修饰词的背景下是不同的衍生指标,用不同的开发逻辑来处理。Q4:多模型绑定查询具体是什么?一个指标可以绑定多个模型吗?A4:参考从指标模型到指标实现的绑定这页 ppt。多模型绑定以 DAU 指标为例:可以通过每日活跃用户的明细表来处理,可以按照省份、渠道聚合后来处理。在模型层面上是不同粒度、不同维度的模型,但是都是 DAU 指标。不同模型的输出结果是一致的。不同维度分析的时候,可以更快的实现支持查询。在查询某个城市的 DAU 指标时,直接使用聚合后的模型更快速,不需要从明细表计算结果。路由查询通过查询维度选择最优的模型来实现查询。A5:血缘分析是一个全链路管理,包括生产链路和应用链路。生产链路中可以拿到数据的生产过程。不同的模型会有不同的数据生产上游。在 SLA 治理场景下,如果要提前数据产出时间,可以通过链路来分析上游各任务的生产时间,识别慢任务、卡点任务。发现上级任务中瓶颈点后,可以通过优化对应模型来改善。对于下游应用链路,主要是应用场景登记。通过应用场景登记,可以管控指标服务。比如,通过调用热度统计,发现下游调用方不再使用的指标服务,进行降级处理或者联系服务调用方后进行指标下线处理。A6:先有业务需求,先定指标,然后根据指标设计模型。指标模型做到一定程度,可以考虑数据进一步发挥价值。这种情况先有模型然后来生成指标。A7:维度是模型中的字段。修饰词是维度中的枚举值。比如:维度是省份,修饰词是山东省。
分享嘉宾
INTRODUCTION
肖继哲
字节跳动
懂车帝资深数仓研发工程师
2017 年加入抖音集团旗下懂车帝数仓 团队,一直从事业务数仓模型开发和数据服务建设的相关工作。先后负责离线/实时数仓模型开发、数仓开发规范制定、数据治理项目、数据工程服务应用等工作,目前主要聚焦于业务数据指标体系的建设工作。