数仓实战——懂车帝数据指标体系建设和应用实践

目录

一、如何建立指标体系规范

1.1 懂车帝业务介绍

1.2 为什么要做指标体系规范

1.3 DataLeap 指标管理平台

1.4 指标体系建设框架

1.5 指标元数据管理规范

二、指标模型建设在数仓工作中的收敛

2.1 指标模型建设存在的问题

2.2 指标模型数仓层级建设标准

2.3 从指标拆解到模型实现

2.4 从指标模型到指标实现的绑定

三、指标体系质量监控策略

3.1 指标体系规范监控

3.2 指标查询服务监控

3.3 指标治理监控

四、构建全方位的指标应用场景

4.1 全场景的指标服务应用能力建设

4.2 全链路指标血缘管理

五、未来展望

六、疑问


  原文大佬的这篇指标体系建设案例有借鉴意义,这里摘抄下来用作学习和知识沉淀。

一、如何建立指标体系规范

1.1 懂车帝业务介绍

    懂车帝是一站式汽车信息与服务平台,涵盖内容、工具和社区,致力于为用户提供真实、专业的汽车内容和高效的选车服务,同时为汽车厂商和汽车经销商提供高效解决方案。懂车帝的业务自成立以来,规模和体量在不断扩展,不论是线上用户还是内部业务场景,均需要数仓提供高质量的数据服务。

    比如面向C端用户视角的热点文章推送,汽车销量榜单对比分析等,面向B 端商家视角的用户购车意愿等,以及内部业务的产品运营、经营分析、战略规划等场景,数仓一直为其提供数据分析、数据挖掘等数据服务。并且,数据服务包括多种时效场景:离线 T+1 场景,准实时(小时级、分钟级)以及纯实时场景。截止目前,懂车帝业务数仓的数据存储规模在百PB级别,日常例行生产任务数据量达数万,其计算资源消耗超十万 Core,供累计建设有6000多个有效指标。从数仓建设的规模也一定程度上反映出懂车帝业务的复杂性。

1.2 为什么要做指标体系规范

   伴随着懂车帝业务的复杂多样和快速迭代,业务数据指标体系的建设相对应的也会变得非常复杂。这导致各相关团队在日常工作中使用数据,都会遇到诸多痛点。为了解决相关工作中的实际问题,数仓团队结合实际业务诉求,建立起持续围绕指标体系的数仓模型建设,数据 BI分析需求、数据服务和数据应用的工作机制,以促进数据良性传播,全局降本增效,释放数据价值。

1.3 DataLeap 指标管理平台

     在介绍指标体系建设之前,我们先了解一下火山引擎 DataLeap 平台。DataLeap 的定位是建设公司范围内指标视角的统一资产(元数据)中心,解决“灵活数据分析”场景下的找数据和找口径的问题;维护可共享、可视化、服务化的业务指标体系。

   DataLeap包含四大部分功能:规范定义、建模研发、指标应用和指标服务。

  懂车帝业务深度结合了 DataLeap 指标平台丰富的指标体系建设和管理的能力,并且在此基础之上,独立开发了指标观星台等业务 BI 平台产品,进一步丰富了指标应用能力的建设,最终实现整体指标体系的实践落地。

1.4 指标体系建设框架

我们整套指标体系建设包括三部分内容:基础能力建设、指标服务能力建设、应用能力建设。

基础能力建设主要包括:

  • 指标元信息规范建设,如指标的命名规范、业务定义、元信息管理,解决指标是什么的问题

  • 指标模型挂载建设,包括模型粒度的选择、多模型如何挂载等,关乎如何保证数据查询的准确性和效率,解决指标怎么开发的问题;

  • 指标血缘管理建设,明确上游生产链路以及下游应用场景,解决指标用在哪里的问题;
  • 指标服务质量保障建设,保证指标一致性和整个系统的稳定性,解决指标数据准不准的问题

  有了这些指标的基础信息,我们构建了指标体系管理大盘,可视化地体现基础元信息、血缘链路信息等。

   在基础能力具备之后,我们借助 DataLeap 指标平台的能力进行一体化的指标服务查询能力建设,包括指标路由查询逻辑的处理和容灾处理等。

   再进一步,打造指标的应用能力,为业务提供多样化的指标服务查询能力。比如我们推出了 DCD 指标观星台,提供了可视化的查询、分析和编排能力。还有很多 B 端、C 端线上数据服务应用,都是建立在统一的指标服务能力基础上,来确保业务使用数据的一致性和准确性。

1.5 指标元数据管理规范

   在指标体系建设中,首先要关注指标元数据管理规范、包括指标命名规范、指标业务定义、指标等级管理、指标目录管理,指标版本管理和指标业务命名管理等。

  指标命名规范,标准化指标中英文命名,通过指标的词根拆解来定义没有歧义、标准一致的数据指标体系,同时通过对词根进行规范管理,避免同名不同义、同义不同名等问题。

  指标业务定义,要结合业务场景,保证指标完善、准确、易懂、精要。

  指标等级管理,制定指标优先级,重点关注高级别指标。具体分级为:

  • 一级指标:衡量业务结果的北极星指标,OKR 指标;
  • 二级指标:业务重点关注的指标,能够反映当前业务效果的指标;
  • 三级指标:衡量过程效率,辅助推动结果达成的指标;
  • 四级指标:临时性指标,适用于小范围的指标。

   指标命名规范是元数据管理规范中的重点,命名不规范会带来歧义,增加使用的成本。接下来具体介绍如何进行指标命名。

    标准的指标中英文命名通过词根拆解来实现,拆解过程总体包括基础词根信息配置和指标拆解定义。通过规范约束词根,来实现指标组合拼接达到统一标准。

   词根包括五种:数据域、业务过程、度量、修饰词、时间周期。通过这五种词根可以组合拼接出原子指标、衍生指标、复合指标的规范名称。

为了高效实现词根拆解,我们开发提供了线上化工具,将词根拆解过程自动化执行。

以成交量为例,词根拆解过程为:

  • 分析业务过程,对应词根为“成交”;

  • 分析度量,对应词根为“量”;

  • 分析业务描述,对应词根为:“CPS”;

  • 分析时间周期,对应词根为:“双月”;

   依次,可以得到原子指标“成交_量”与衍生指标“双月_CPS_成交_量”。进一步,如果和其他指标结合,如“双月_CPS_商家_数量”,进行四则运算得到复合指标,复合指标名称为“双月_CPS_平均_商家_成交_量”。

  目前懂车帝词根管理已维护的包括:34 个数据域、700 个业务过程、220 个度量词、1080 个修饰词和 77 个时间周期

   词根拆解之后,指标元数据创建流程也会遵循指定的SOP 约束。

   指标元数据创建过程中,参与角色除了需求方、 数据产品团队、数仓开发团队、还有数仓指标评审组。数仓指标评审组是一个虚拟小组,有专项数仓同事参与指标评审。

指标元数据创建 SOP 包括:

  • 需求方提出需求

  • 数据产品团队确定业务指标集合

  • 数仓指标审核组进行指标评审

  • 确定业务指标口径

  • 给出初版指标中文名称

  • 在观星台拆解工具中进行中文名词根拆解

  • 词根工具根据词根中文名自动进行英文名称翻译

  • 明确指标中英文名称后,数据产品团队补齐其他基础元数据

  • 录入 DataLeap 指标平台

   在词根拆解过程中,会通过拆解工具确定词根是否已经录入或存在同义词根。如果词根库中词根已满足需求,就可直接使用。词根库中需要词根补录时,数仓指标评审组先进行评审,通过后再加入词根库。通过数仓指标评审组的校验,可以有效保证词根库的规范和质量。

  指标元数据创建后,就会由数据开发同学进行模型的开发以及指标绑定。

二、指标模型建设在数仓工作中的收敛

2.1 指标模型建设存在的问题

  在介绍指标模型建设之前,先来看一下数仓同学在过往工作中存在的问题。

  整体上,指标模型建设的情况可以总结为:“散、乱、差”。具体表现在:

  • 维度表建设不足:缺少一致性维度层,维度表和事实表没有严格区分,有些维度表也放在了DWD层。
  • 汇总层严重缺失:未沉淀通用的指标逻辑,复用性差,存在同名不同义和同义不同名的问题,血缘链路也不清晰,加大了维护和问题排查成本。
  • 明细层建设混乱:直接使用明细数据进行简单加工,没有进行过程抽象,造成大量耦合信息,数据产出的质量和时效越来越没有保障。
  • 应用层重复建设:随着需求的增加,应用层快速膨胀,通用逻辑未下沉,造成大量重复建设,导致了资源的浪费;

2.2 指标模型数仓层级建设标准

   为了解决指标模型建设的问题,需要结合业务特性制定规范标准。

    懂车帝的业务场景包括:媒体&商业化业务场景、二手车&交易业务场景。

   媒体&商业化业务场景中业务发展相对稳定,指标体系变化相对低频。这种业务稳定的情况,依据主题数据域、业务过程等,沉淀公共层数据模型,优先推进规范化执行。

   二手车&交易业务场景中业务快速迭代,指标体系变动大,实时数据场景多,时效响应要求高,并且线上Saas场景应用居多。对应这种快速变化的情况,优先满足业务需求快速迭代,允许从明细层灵活加工产出指标数据,但指标口径和业务定义需要做强保障。

   为了兼顾两大类场景,对数仓各层提出了如下一些规范要求:

  • 明细层(DWD 层):基于业务过程抽象,沉淀通用逻辑,达到规范统一、稳定易用;
  • 轻度汇总层(DWA 层):遵循数据域--业务过程--原子指标--衍生指标--复合指标的建设规范,拆解指标体系,建设数据域+粒度视角的数据模型。

  • 数据集市层(DM 层):处理跨数据域交叉场景,指标大宽表模型建设、支持复合指标建设。

2.3 从指标拆解到模型实现

    数仓同学拿到一个指标或者在进行指标评审中,需要非常清楚指标拆解的过程,明确涉及到的数据域、业务过程、度量、修饰词等关键词根,进而判断、设计指标模型应该在哪一层做,做到什么粒度。

   在实际的模型开发中可能遇到的问题包括:

  • 模型重复建设

  • 模型建设层级不合理
  • 模型数据结果产出不一致

   如何解决这些问题?这就用到了我们整理建设的数仓资产地图,这里包含了数仓已经建设的各个主题的数据模型,明确描述了覆盖的业务过程、数据粒度以及核心满足的业务场景。

  在指标模型开发前,数仓同学会通过数据资产地图搜索关键业务过程、词根查找模型。存在已有模型满足需求,可以直接使用避免重复建设。存在已有模型满足需求,可以直接使用避免重复建设。已有模型不满足需求时,如新增维度拆解,可以原有模型上进行迭代,并将迭代信息维护在资产地图中。通过这样过程,可以避免模型的重复建设。

2.4 从指标模型到指标实现的绑定

    指标模型建设完成后,将指标模型与指标绑定。在懂车帝业务场景中,有离线场景、准实时场景、纯实时场景,这些场景中具体的指标实现过程不一样,但是都会通过DataLeap指标平台进行挂载。

   一个指标可能会绑定多个指标模型。因为在具体工作中,同一个指标在不同场景会有不同效果的查询需求,比如 A 场景需要查询快速响应得到具体数据,B 场景需要进行多维度数据分析,这样同一个指标的不同的模型产出,可以满足不同维度分析与产出时效、查询效率的平衡

三、指标体系质量监控策略

   指标查询中会遇到各种问题,如:查询失败,慢查询、指标产出时间延迟、不同业务找同一个指标或查询结果不一致,指标生产资源浪费等问题,因此需要建立指标体系质量监控来及时发现和解决问题。

指标体系监控策略整体上包括三大部分:指标体系规范监控、指标查询服务监控和指标治理监控。

3.1 指标体系规范监控

  指标体系规范监控内容:词根管理监控、指标业务定义监控、指标等级监控和指标版本监控四大方面。具体内容如上图所示。

3.2 指标查询服务监控

指标查询服务监控包括:

  • 多模型绑定查询一致性监控:支持多模型的指标体系,最担心的就是指标不一致。我们通过定时巡检指标查询服务,发现指标结果不一致,发送报警消息到指标模型 Owner。此类问题需要在开发阶段就将问题处理。

  • 指标慢查询/异常查询监控:对慢查询同样采取定时巡检,事前处理。对于查询异常,通过服务接口的查询日志、用户访问平台的埋点日志,实时监控线上指标服务请求异常信息。发现异常时,按照指标服务登记场景的重要程度,分级发送报警消息。

  • 指标 SLA 监控:对每个指标登记 SLA 信息,进行基线预警监控,还要根据需要进行专项优化治理。

  • 指标数据波动监控:数据波动不一定是存在问题,但需要去分析其原因。

3.3 指标治理监控

    为了更直观的看到指标体系服务的质量效果,我们构建了可视化监控平台。该平台包括指标访问热度统计、监控信息统计和治理复盘,以及指标治理收益的统计。

四、构建全方位的指标应用场景

  有了清晰的指标定义、稳定的指标模型生产、完备的指标监控体系以及统一的指标查询服务,我们整体为懂车帝内部分析业务和外部线上业务提供了多样化的应用场景。

4.1 全场景的指标服务应用能力建设

4.2 全链路指标血缘管理

   结合实际的业务使用场景,我们还建设了全链路指标血缘应用管理。血缘管理可以方便可视化地体现指标上游链路异动对下游应用的影响,方便 SLA 治理,也方便量化数仓工作价值。

   其中血缘管理包括前向链路和后向链路两个过程。所有指标服务接口的调用都要在使用前做好接口调用场景的登记。即使某个指标服务跳过 SOP 没有进行登记,我们也可以通过调用日志监控发现遗漏,然后反向推动服务登记。通过这样的措施,保证了数仓能够对所有指标服务应用场景进行全面的掌控,以做好服务质量的管理。

五、未来展望

 指标体系是一个持续建设过程,还会继续完善。未来,我们会结合 BSC(平衡计分卡),将指标体系与业务管理结合

 另外,要建设更加完整、统一的数据服务查询层。现在借助 DataLeap 提供的数据服务接口,基本实现了指标粒度的统一服务查询。未来要应对更复杂的查询场景,提供不限于指标粒度的统一接口服务,实现一体化数据查询服务。

  最后还将考虑指标体系与大模型的结合,提供数据智能的问答交互能力。通过自然语言交互模式为业务人员提供自主取数、快速找数、理解数据的能力。

六、疑问

  Q1:拆解好的指标体系是按照原子指标、修饰词、时间、维度,那么实际存储中是如何处理?

  A1:会区分原子指标、复合指标、衍生指标这几种场景。对于原子指标,直接从业务到度量,存储层面可以存在明细层。原子指标不存在跨域场景、不需要聚合。对于衍生指标、复合指标可能会涉及跨域的场景,在这种情况下需要考虑聚合到何种粒度。可以使用大宽表,也可以还在聚合层跨域查询。在存储层面,衍生指标、复合指标存储在 DM 层。对外服务中,指标在查询层面提供统一接口,原子指标直接查询明细层,衍生指标、复合指标通过路由调用最优的模型来处理。

   Q2:如何保证语义相同的词根不重复录入?

   A2:平台中有一些算法库,提供智能算法识别词根的近义词相似度。对于近似度高的词根,进行人工排查。发现近义词后,进行复盘,核实为近义词后进行词根剔出。

  Q3:对于同一个指标来自于不同的业务域、数据源、商品范围,数据应该如何处理?是先进行异构数据融合,还是分开建设。若是分开建设,如何保证这两个口径一致。

  A3:如果是同一个指标,数据源、业务域都不一样,首先需要判断是否真的是同一个指标。如果是同一个指标,需要明确指标的业务定义,涉及指标口径概念。比如,不同的商品范围会对应商品范围修饰词,在不同修饰词限定下是不同的衍生指标。指标开发中,结合不同的修饰词在实际业务范围中开发指标模型。可能在原子指标上是同一个概念、同一个过程、同一个度量词,在不同修饰词的背景下是不同的衍生指标,用不同的开发逻辑来处理。

Q4:多模型绑定查询具体是什么?一个指标可以绑定多个模型吗?

  A4:参考从指标模型到指标实现的绑定这页 ppt。多模型绑定以 DAU 指标为例:可以通过每日活跃用户的明细表来处理,可以按照省份、渠道聚合后来处理。在模型层面上是不同粒度、不同维度的模型,但是都是 DAU 指标。不同模型的输出结果是一致的。不同维度分析的时候,可以更快的实现支持查询。在查询某个城市的 DAU 指标时,直接使用聚合后的模型更快速,不需要从明细表计算结果。路由查询通过查询维度选择最优的模型来实现查询。

Q5:请再介绍一下指标血缘分析的方法。

   A5:血缘分析是一个全链路管理,包括生产链路和应用链路。生产链路中可以拿到数据的生产过程。不同的模型会有不同的数据生产上游。在 SLA 治理场景下,如果要提前数据产出时间,可以通过链路来分析上游各任务的生产时间,识别慢任务、卡点任务。发现上级任务中瓶颈点后,可以通过优化对应模型来改善。对于下游应用链路,主要是应用场景登记。通过应用场景登记,可以管控指标服务。比如,通过调用热度统计,发现下游调用方不再使用的指标服务,进行降级处理或者联系服务调用方后进行指标下线处理。

Q6:指标绑定模型,还是模型绑定指标?

  A6:先有业务需求,先定指标,然后根据指标设计模型。指标模型做到一定程度,可以考虑数据进一步发挥价值。这种情况先有模型然后来生成指标。

Q7维度和修饰词划分的边界是什么?

  A7:维度是模型中的字段。修饰词是维度中的枚举值。比如:维度是省份,修饰词是山东省。

参考文章:

懂车帝数据指标体系建设和应用实践

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

stm32f103zet6笔记1-led工程

1、选择串口调试 2、LED0连接到PB5,PB5设置为推挽输出。PE5同理。 3、生成成对的.c,.h文件。 4、debugger选择j-link。 5、connection选择SWD。 6、编写bsp_led.c,bsp_led.h文件。 7、下载调试,可以看到LED0 500ms闪烁一次,LED1 1000ms闪烁一…

Node.js与Webpack笔记(一)

这里使用的16.19.0版本,官网和github没找到,去黑马2023年课程里找 篇幅较大会卡,此篇幅不写Webpack部分,留着下一篇 初识 1.什么是Node.js? Node.js 是一个独立的 JavaScript 运行环境,能独立执行 JS 代码&#xff…

基于机器学习的曲面拟合方法

随着科技的不断发展,机器学习成为了最近最热门的技术之一,也被广泛应用于各个领域。其中,基于机器学习的曲面拟合方法也备受研究者们的关注。曲面拟合是三维模型处理中的重要技术,其目的是用一组数据点拟合出平滑的曲面&#xff0…

STM32启动过程及反汇编

STM32从Flash启动的过程,主要是从上电复位到main函数的过程,主要有以下步骤: 1.初始化堆栈指针 SP_initial_sp,初始化 PC 指针Reset_Handler 2.初始化中断向量表 3.配置系统时钟 4.调用 C 库函数_main 初始化用户堆栈&#xf…

【软件测试】Postman中变量的使用

Postman中可设置的变量类型有全局变量,环境变量,集合变量,数据变量及局部变量。区别则是各变量作用域不同,全局变量适用于所有集合,环境变量适用于当前所选环境(所有集合中均可使用不同环境变量&#xff09…

常用通讯协议的理解

一、通讯的一些基本认知 1、什么是异步或同步通信 异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以…

通义千问1.5(Qwen1.5)大语言模型在PAI-QuickStart的微调与部署实践

作者:汪诚愚(熊兮)、高一鸿(子洪)、黄俊(临在) Qwen1.5(通义千问1.5)是阿里云最近推出的开源大型语言模型系列。作为“通义千问”1.0系列的进阶版,该模型推出…

为什么 Java 中只有值传递?

为什么 Java 中只有值传递? 开始之前,我们先来搞懂下面这两个概念: 形参&实参值传递&引用传递 形参&实参 方法的定义可能会用到 参数(有参的方法),参数在程序语言中分为: 实参…

TCP和UDP可以使用同一个端口号吗?

TCP和UDP可以使用同一个端口号吗? 首先说答案:可以。怎么理解呢? 我想这个问题要从计算机网络通信谈起,学过计算机网络的同学,可能都还记得7层或者4层网络模型,TCP/UDP属于其中的传输层协议,在…

一个完整的Flutter项目的基本构成

目录 1.页面跳转2.本地数据库和读取2.1 在pubspec.yaml中添加数据库框架依赖2.2 创建db.dart 初始化数据库并创建表2.3 安装JsonToDart插件2.4 创建实体类 user_bean.dart2.5 增删改查: 3.网络请求数据解析UI渲染 本篇主要总结下一个完整的Flutter项目有哪些基本构成…

STM32基础--初识 STM32

什么是 STM32 对于STM32,从字面意思上来理解,ST是意法半导体,M是Microelectronics的缩写,其中32表示的是32位,那么整合起来理解就是:STM32就是指的ST公司开发的32位微控制器。在如今的32位控制器中&#x…

mq基础类设计

消息队列就是把阻塞队列这样的数据结构单独提取成一个程序独立进行部署。——>实现生产者消费者模型。 但是阻塞队列是在一个进程内部进行的; 消息队列是在进程与进程之间进行实现的, 解耦合:就是在分布式系统中,A服务器调用B…

Window系统搭建feishu-chatgpt企业AI机器人并实现无公网ip远程连接

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话,在下面操作步骤中…

偶现bug如何分析和处理?

测试中比较郁闷的一件事就是遇到偶现bug。测个10次~20次才难得出来一次,甚至有时几天才会出现一次,真的去复现的时候又不记得自己执行了哪些步骤。所以遇到这样的问题都是比较头疼的。 举个例子: 打开一个论坛,有一个在线人数的信…

在Mac上安装nginx+rtmp 本地服务器

需要使用终端命令,如果没有Homebrew,要安装Homebrew,执行: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 一、安装Nginx 1、先clone Nginx项目到本地: brew tap de…

云计算,用价格让利换创新空间?

文 | 智能相对论 作者 | 李源 ECS(云服务器)最高降36%、OSS(对象存储)最高降55%、RDS(云数据库)最高降40%…… 阿里云惊人的降幅,一次性把国内云计算厂商的价格战推到了白热化阶段。 这次能…

【C语言】linux内核napi_gro_receive

一、注释 // napi_gro_receive是网络设备接口的一个函数,它被NAPI(New API)网络轮询机制使用,用于接收和处理接收到的数据包。 // 这个函数通过通用接收分组(GRO,Generic Receive Offload)技术…

java数据结构与算法刷题-----LeetCode687. 最长同值路径

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 深度优先,用下面的儿子判断2. 深度优先&#xff0…

UE4 Niagara 关卡3.4官方案例解析

Texture sampling is only supported on the GPU at the moment.(纹理采样目前仅在GPU上受支持) 效果:textures can be referenced within GPU particle systems。this demo maps a texture to a grid of particles(纹理可以在GPU粒子系统中被引用这个演…

【3GPP】【核心网】【5G】5G核心网协议解析(二)(超详细)

5G UE 附着过程 UE AMF ----------------- 注册请求(Registration Request) ----------------------> <--------------- 鉴权请求(Authentication Request) ------…