数据治理实践——YY 直播业务指标治理实践

目录

一、问题背景

1.1 问题场景

1.2 问题小结

二、治理方案

2.1 治理目标

2.2 团队协同,共建规范

2.3 指标管理的定位

2.4 指标管理的目标及思路

2.5 指标管理,规范内容落地

2.6 数仓设计-关联指标维度

2.7 数据报表开发-配置口径说明

2.8 业务用户检索数据资产

2.9 指标自主分析

2.10 业务指标治理全流程回顾

三、治理成效

四、未来演进


原文大佬的这篇指标治理实践有借鉴意义,这里摘抄下来用作学习和知识沉淀。

一、问题背景

1.1 问题场景

   第一部分,我们先来还原一下问题的场景:这几个场景是我们数据需求方,比如产品、运营、数据分析师及技术开发工程等角色给我们反馈的主要问题:

  • 场景一,报表数据口径差异:我们的需求方经常会跟我们咨询,“为什么a报表和bb报表命名和描述是差不多的,但是出来的数据不一样,那到底哪一个报表的口径才是准确的?”
  • 场景二,找不到想要的数据:我们在对接需求方的需求时,经常会发现报表系统中已经有了现成的报表或者数据看板,但是类似的需求还是会被重复地提过来,沟通下来发现是因为需求方无法快速找到自己想要的数据。
  • 场景三,新增报表的需求排期太长:从业务方的体感来讲,一个新增的报表需求通常需要排期短则数天,长则要一两周才能交付。

1.2 问题小结

 带着这些问题,从我们数据产品的视角深入分析,得到以下几个总结:

  • 指标管理层面:因为没有对指标进行统一管理,必然会存在同名不同义或同义不同名;指标口径描述基本分散在报表的备注信息里,没有一个统一功能页面来检索查找指标,更谈不上指标的统一分类层级。
  • 数据报表层面:因为互联网业务发展特别快,我们大量的报表都是由业务方根据他们当时的取数需求驱动来构建的,这些报表从来不考虑生命周期管理,时间一长就造成了线上的大量报表无序堆积,用户在检索存量报表时很难找到目标数据。
  • 数据模型的层面:普通存在同样的指标,但计算口径不一致的现象;部分核心模型对应计算任务的依赖关系极其复杂;这导致要迭代模型中的指标或维度时会相当困难。

   总结以上问题,我们的理解是:业务在高速发展阶段,其快速地响应业务方需求的优先级是最高的,而指标体系的总体规划和体系化建设则放在比较低的优先级

  我们要做就是规划并重构一套相对规范的业务指标管理体系,做到既能适业发展节奏、高效地满足需求;同时也能减少重复建设,提高产研效率。

二、治理方案

2.1 治理目标

  在展开具体方案之前,先说一下我们的治理目标

  • 在用数体验方面:希望给用户提供“规范统一”的指标体系,并且具备“快速检索”的能力;
  • 在产研效率方面:希望能显著的提升交付效率;
  • 在资源消耗方面:希望能降低计算及存储资源的无序增长。

     用数体验的提升能够最明显地提升业务方的感知。其次提高产研效率也能改善业务方的实际体验。虽然资源消耗降低这一目标的实施难度最大,但在当前行业环境下里,我们需要做到既增效,又降本。

2.2 团队协同,共建规范

 要完成上述的目标,需要多团队进行协作投入,这里列举一些主要的角色及实施内容:

  •  数据产品,毫无疑问是整个工作的牵头者,指标管理这个环节的 owner,负责梳理迭代指标、构建指标体系、同时还要推动其他团队形成统一的认知,统一管理思路。
  • 数据研发,是整个数据生产和报表开发交付环节的owner,负责将规范化的指标体系应用到数据模型构建发布、数据报表及看板开发迭代的工作中。
  • 业务用户,在数据地图和数据洞察中触达数据资产,包括数据模型和数据报表;需要他们在使用中及时反馈,来帮助产研团队持续迭代优化指标规范。

2.3 指标管理的定位

  下图就是我们 YY 自研大数据平台的产品功能框架简版。

这里主要讲两点:

   从流程管理的角度来看,指标定义及维度定义的管理是放到数据开发及报表开发的环节之前的,是数据开发及报表开发等工作开展的前置条件。

  从数据流向的角度来看,指标管理系统提供统一的指标口径信息服务,对接数据开发、数据治理及数据分析系统:一是用来配置数据模型中的字段定义;二是用来配置数据报表中的口径说明。而数据消费用户群体是在数据地图和数据洞察中接触到这些信息。

    整体来说,我们希望从数据产品的角度,以业务指标管理为治理抓手,将规范化的指标体系贯穿到数据生产及数据消费的环节。下面我们围绕这些主要的角色,讲一下在整个过程中的具体策略、使用的一些工具以及实操步骤。

2.4 指标管理的目标及思路

首先如图所示:首先是数据产品负责的指标管理环节,从管理目标出发:

  • 第一点是如何构建一套指标的命名和描述规范;
  • 第二点是如何能够形成清晰易检索的指标分类;
  • 第三点是如何能够梳理清晰指标间的依赖和继承关系;

  • 最后一点就是如何能让指标的生命周期管理运转起来。

上图右侧是我们具体的数据产品的实施步骤。

具体实施步骤和目标拆解为:

  • 第一步,梳理指标命名及定义,作为规范共识的讨论基础;
  • 第二步,构建指标的分类索引,方便后续用户快速检索指标;
  • 第三步,配置指标间依赖关系,让用户能清晰地了解指标间的来源及继承关系。

这样实施下来,就形成初步的指标说明文档,以这些文档为基础,就可以开展讨论。

而达成共识的推进策略可以拆解成以下步骤:

  • 第一步,数据产品团队内部互评互验,针对命名规范、描述规范、分类规范进行充分讨论和碰撞,形成大家都认可的落地规范;
  • 第二步,数据产品与数据研发进行跨团队评审校验,形成数据产研团队间的共识及规范,使得大家对业务语义的认知是一致的;
  • 第三步,数据产品将规范后的指标体系应用在数据需求对接流程中;

比如说,我们会要求业务用户在提需求前,先检索一下数据地图,看是否能找到想要的指标,当前版本的业务定义是否能满足需求?是否要迭代当前版本的定义?是否要新增全新的指标或维度?

最后还要考虑指标的生命周期管理机制。比如梳理了存量指标,还会有新增的,得把生命周期机制运转起来。按照先登记,然后评审,接下来系统间去引用,出现了口径变化就迭代,如果整个业务场景已经不再用该指标了,就通过一些技术手段或者管理手段让该指标下线。(变更迭代---> 评审上线---> 下线)

以上,我们都会落地相应的产品功能,去把整个管理流程去给固化下来。

2.5 指标管理,规范内容落地

  接下来介绍一下数据产品经理在这一阶段的具体的一些产出结果。

    第一部分是层级分类:指标的分类至少会分成三个层级,第一层先划分相对独立的业务域,在业务域下面再划分业务过程、业务子过程。

   为什么这么划?数据分析师有自己的分类规则,数据研发也有自己的分类规则。从分析师角度来看,一般按OSM原则去建立指标体系,但是从数据研发的角度出发,数据应该基于实体领域去分类,这样大家无法达成共识。由于我们层级分类的目标是服务于指标检索的,那么层级分类要按照大家能够公认的规则划分。如还原实际的用户路径,包括用户怎么观看直播,怎么打赏,主播怎么开播,怎么签约,怎么获得收入,按照客观的业务过程去划分这个指标集。后续用户通过这套层级分类去检索指标时,仅凭非常简单的直播业务常识,就能快速找到对应指标。

  第二部分是关于命名规范或描述规范的撰写。之前做了很多调研,也找了其他团队进行交流。大家的共识是,要非常严谨的描述是很难实施推广的。因此我们定下一些底线的原则,先给出一些参考案例,指标名称,通过业务限定加原子指标的组合方式命名,但是同时要保留一些细节,比如原先指标的常用命名,把它作为别名信息保存下来,后续检索时虽然指标名字可能换了一个相对正式规范的名字,但是用户还是可以通过别名去找到想要的指标。同样,描述也尽可能按照业务场景加业务限定加度量加聚合方式的方式去描写,出来的结果看起来就比较规范,给人感觉是一个团队做的事情,而不是各干各的。同样地,维度名称、维度的描述以及枚举值也要按同样的方式统一规范地管理起来。

     第三部分就是指标血缘,使用可视化的方式去把指标间的依赖关系以及继承关系给表达出来。如图中截图所示,指标 c 就是由指标a和指标b复合生成的。只要把指标 a 和指标 b 的业务定义描述清楚,通过指标血缘追溯下来,那指标 c 也是非常清晰的。

   以上就是第一阶段在指标管理环节的具体产出。

2.6 数仓设计-关联指标维度

  接下来就需要数据研发上场了,他们需要在数据生产环节中规范引用的指标和维度。

  第一个场景中,数据研发在进行数据模型设计时,关联引用规范的指标和维度作为字段的标准定义。第二个场景中,是在规范化工作建设之前有很多存量模型,筛选梳理出来有复用价值的模型,使用数据发布功能,关联规范的指标和维度,然后发布到数据地图上面供用户去检索使用。

2.7 数据报表开发-配置口径说明

   在数据报表开发时,需要写清楚每个指标的定义口径以及说明。原先的功能是使用输入框,开发人员在输入框中输入。现在改变方式,能选的尽量去选。根据这个原则提供弹窗,用户直接规范的指标定义。要迭代某一个指标或者维度的定义,只需要在指标管理系统里进行发版迭代,所有的引用都会同步更新。  

2.8 业务用户检索数据资产

   做了这么多工作,目的都是服务于业务。从业务用户的视角来看,除了可以通过报表和数据模型的字段信息了解到规范的指标体系,还可以通过指标检索的方式查找可用的数据资源。如下图所示,是指标详情页的截图:

    在指标粒度Tab里,可以看到所有引用这个指标的数据模型,结合维度组合进一步筛选,可以找到特定维度组合的模型,进一步自助分析取数。

   在引用报表Tab里,可以看到所有引用这个指标的报表,进一步点击查看报表,就进入报表的详情页。

   通过向用户推广这种数据资产检索的方式,基本上解决了口径不一致的问题以及不容易找到想要的数据的问题。以上这些是关于指标治理的一个基础过程。

2.9 指标自主分析

   为了进一步提升业务用户的用数体验。我们去构建了一个指标自助分析应用。依托可视化分析能力,构建了一个低门槛、可视化的分析应用。

   用户只需要去选指标定维度就完成需求输入了。以前还需要先找报表和数据模型,现在只需要选择想要的指标,确定分析维度,剩下来就可以交给系统,系统会自动匹配数据模型或视图,然后自动地拼接生成查询 SQL,最后进行自助取数和可视化分析来满足用户的需求。从流程来看的话,用户很大一部分场景的需求不再依赖研发排期了,可以自助完成,效率提升是非常明显。用户具体是怎么操作这个功能的?这里放了一些功能截图。

第一步,系统提供了划分层级的指标卡列表,右下角有一个购物车,用户可以通过层级分类查找指标,关键字搜索指标,找到目标指标后,单击指标卡上的加入购物车功能。

第二步,所有想要的指标之后,点击购物车就进入下一级页面,在这个页面里选定分析维度,临时提供不了的分析维度,可以提需求来去添加。

接下来确定数据的时间范围。点击可视化分析按钮,系统就会拉起一个可视化分析的页面,用户可以在这里进行拖拉拽,使用可视化图表组件进行分析,可以把分析图表导出贴到报告上,也可以把数据导出再加工。

相较于其他数据的检索方式来说,这个应用操作上会更加直观简单,效率和体验上也会更优。

2.10 业务指标治理全流程回顾

第一步,由数据产品牵头进行指标统一管理,聚焦在业务语义层面梳理和分类构建,并推进团队间形成统一管理,规范共识;

第二步,由数据研发牵头对存量的数据资产进行盘点,包括数据模型,数据报表的盘点,使用统一指标命名和定义说明关联;

第三步,重构业务指标的管理流程,遵循“先登记后引用”的基本原则,加强生命周期管理,重构数据需求的对接生产流程;

在这个基础上,数据产品牵头对数据报表进行体系化重构,主要整合原有报表,搭建体系化数据分析看板等;

与此同时构建指标自助分析应用,用于满足大部分用户自助取数及可视化分析的需求。整个过程中持续收集数据用户的反馈,形成闭环。

三、治理成效

接下来我们简单叙述一下,这几年的具体工作成效。

  • 用数体验方面,因为有了体系化的指标,可以用帮助用户快速检索以及自助分析取数,效率显著提升;

  • 产研效率方面,通过优化检索的方式,避免了很多重复需求的对接和开发,并且把部分需求的开发交付周期由天级下降到小时级,产研效率的提升也是很明显的;

  • 最后是比较难的目标,得益于整合下线大量的长尾数据报表、数据模型及计算任务,同时辅以其它技术手段也达成了降低资源无序增长的目标。

四、未来演进

大语言模型表现出来的语义理解和输出能力是极其强大的,现在业界有各种方案的,我们的实践就是通过一个行业知识库结合大语言模型来实现。

如图所示:

  知识库数据可以由指标的业务定义、计算口径、呈现方式及分析场景等构成,通过上述的指标治理工作,这些数据已经进行了有效的收集和关联。结合知识库,基于 LLM 的多轮对话能力,系统应该能更好地理解用户的数据分析需求。接下来,使用 LLM 的格式化输出能力对接下游的执行器,比如:计算 SQL 对接 olap 引擎进行数据查询,图表推荐对接可视化引擎进行图表选择及数据渲染,布局推荐对接可视化看板进行图表组件的布局排版。最终生成一个完整的分析报表呈现给用户,还可以进一步收集用户的反馈,去持续迭代知识库的内容。

参考文章:

YY 直播业务指标治理实践

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

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

相关文章

StableDiffusion3 官方blog论文研究

博客源地址:Stable Diffusion 3: Research Paper — Stability AI 论文源地址:https://arxiv.org/pdf/2403.03206.pdf Stability.AI 官方发布了Stable diffusion 3.0的论文研究,不过目前大家都沉浸在SORA带来的震撼中,所以这个水…

将props展平传到DOM上

当我们将展平&#xff08;传播&#xff09;的属性设置子组件时&#xff0c;我们会引入风险&#xff0c;因为我们可能会往 HTML 标签上添加它不支持的属性。 坏实践 下面这个例子会在 DOM 元素上增加一个该元素本身不支持的属性flag。 const Sample () > (<Spread flag…

chrome插件chrome.storage数据写入失败QUOTA_BYTES_PER_ITEM quota exceeded

Unchecked runtime.lastError while running storage.set: QUOTA_BYTES_PER_ITEM quota exceeded at Object.callback 在开发浏览器插件的时候&#xff0c;报错提示&#xff1a;超出存储限制&#xff0c;浏览器插件存储官方文档&#xff1a;https://developer.chrome.com/docs…

Linux篇面试题 2024

目录 Java全技术栈面试题合集地址Linux篇1.绝对路径用什么符号表示&#xff1f;当前目录、上层目录用什么表示&#xff1f;主目录用什么表示? 切换目录用什么命令&#xff1f;2.怎么查看当前进程&#xff1f;怎么执行退出&#xff1f;怎么查看当前路径&#xff1f;3.怎么清屏&…

Keras用tf的Strategy()分布式训练时候报XLA错误

We failed to lift variable creations out of this tf.function, so this tf.function cannot be run on XLA. A possible workaround is to move variable creation outside of the XLA compiled function. 最早用的pip -U 安装的keras没注意版本&#xff0c;直接可用。 之…

国外网站,similarweb统计网站流量的原理是什么? 这个统计数据是准确的吗? 有没有 没统计不到的?

标签&#xff1a; SimilarWeb&#xff1b; 国外网站 SimilarWeb 提供网站流量和其他互联网指标的估计&#xff0c;主要用于网站分析、竞争对手分析和市场研究。它如何工作&#xff0c;以及其数据的准确性&#xff0c;是很多人关心的问题。下面是对SimilarWeb统计网站流量原理的…

Golang-channel合集——源码阅读、工作流程、实现原理、已关闭channel收发操作、优雅的关闭等面试常见问题。

前言 面试被问到好几次“channel是如何实现的”&#xff0c;我只会说“啊&#xff0c;就一块内存空间传递数据呗”…所以这篇文章来深入学习一下Channel相关。从源码开始学习其组成、工作流程及一些常见考点。 NO&#xff01;共享内存 Golang的并发哲学是“要通过共享内存的…

【AI辅助研发】-开端:未来的编程范式

编程的四种范式 面向机器编程范式 面向机器编程范式是最原始的编程方式&#xff0c;它直接针对计算机硬件进行操作。程序员需要了解计算机的内部结构、指令集和内存管理等细节。在这种范式下&#xff0c;编程的主要目标是编写能够直接控制计算机硬件运行的机器代码。面向机器…

数据伦理:当大数据遇见道德

随着科技的飞速发展&#xff0c;大数据已经成为了我们生活中不可或缺的一部分。从智能手机到智能家居&#xff0c;从电子商务到医疗保健&#xff0c;大数据无处不在。然而&#xff0c;随着数据的广泛应用&#xff0c;数据伦理问题也逐渐浮出水面。本文将探讨大数据时代下的数据…

redis使用笔记

redis使用笔记 1、Redis简介1.1 含义1.2 功能1.3 特点 2. 常用的数据结构2.1 HASH 3 redis接口定义3.1 redisReply3.2 redisContext3.3 redisCommand 4 实践操作4.1 遇到问题4.1.1 Get哈希的时候返回error4.1.2 长度一直为0&#xff0c;str没法打印&#xff08;未解决&#xff…

uniapp地图围栏代码

UniApp 是一个使用 Vue.js 开发所有前端应用的框架&#xff0c;可以编译到 iOS、Android、H5、以及各种小程序等多个平台。在 UniApp 中实现地图围栏功能&#xff0c;通常需要使用地图服务API。对于大多数地图服务来说&#xff0c;实现围栏功能通常需要以下几个步骤&#xff1a…

java正则表达式概述及案例

前言&#xff1a; 学习了正则表达式&#xff0c;记录下使用心得。打好基础&#xff0c;daydayup! 正则表达式 什么是正则表达式 正则表达式由一些特定的字符组成&#xff0c;代表一个规则。 正则表达式的功能 1&#xff1a;用来校验数据格式是否合规 2&#xff1a;在一段文本…

Android 二维码相关(一)

Android 二维码相关(一) 本篇文章主要记录下android下使用zxing来创建二维码. 1: 导入依赖 api "com.google.zxing:core:3.5.1"2: 创建二维码 创建QRCodeWriter对象 QRCodeWriter qrCodeWriter new QRCodeWriter(); 将文本内容转换成BitMatrix BitMatrix encode …

2024,互联网打工人最终没能逃得过 AI

时间很快就来到了三月份&#xff0c;回首看过去的一年&#xff0c;如果要选择最令人着迷的新技术&#xff0c;那非 ChatGPT 莫属。 从美国的硅谷、华尔街到中国的后厂村、中关村&#xff0c;几乎所有的科技大厂们都在讨论“AIGC”。 既 ChatGPT 之后&#xff0c;几乎每天都有…

【深度学习笔记】7_2 梯度下降和随机梯度下降

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 7.2 梯度下降和随机梯度下降 在本节中&#xff0c;我们将介绍梯度下降&#xff08;gradient descent&#xff09;的工作原理。虽然梯度…

️网络爬虫与IP代理:双剑合璧,数据采集无障碍️

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

day16_购物车(添加购物车,购物车列表查询,删除购物车商品,更新选中商品状态,完成购物车商品的全选,清空购物车)

文章目录 购物车模块1 需求说明2 环境搭建3 添加购物车3.1 需求说明3.2 远程调用接口开发3.2.1 ProductController3.2.2 ProductService 3.3 openFeign接口定义3.3.1 环境搭建3.3.2 接口定义3.3.3 降级类定义 3.4 业务后端接口开发3.4.1 添加依赖3.4.2 修改启动类3.4.3 CartInf…

关于VS-QT中创建ui文件没有同时创建h和cpp文件的解决方法

以下只提供一种解决方案&#xff0c;只针对我遇到的一种情况&#xff0c;并非对所有人有效。 1.新建一个QWidget Application,项目名称建议取名为所需要的ui类的名字&#xff0c;不过不是也没关系 2.按照提示下一步&#xff0c;基类选择QWidget还是QMainWindow看自己的需要&am…

基于springboot实现摄影网站系统项目【项目源码】

基于springboot实现摄影网站系统演示 摘要 随着时代的进步&#xff0c;社会生产力高速发展&#xff0c;新技术层出不穷信息量急剧膨胀&#xff0c;整个社会已成为信息化的社会人们对信息和数据的利用和处理已经进入自动化、网络化和社会化的阶段。如在查找情报资料、处理银行账…

invoke()到底是个什么方法???

调用jquery的方法返回属性值 1、invoke&#xff08;‘val’&#xff09; 在form的select下&#xff1a; cy.get(.action-select-multiple).select([apples, oranges, bananas])// when getting multiple values, invoke "val" method first jquery中val方法是用于返…