查看原文
其他

如何统一管理混乱的数据指标?

The following article is from SAMshare Author Flora

🚗 目录

  • 指标不统一的坏处
  • 指标混乱问题剖析
  • 规范指标的正确做法
  • 如何构建一个全局的指标字典


    📖 Reference

  • 如何统一管理纷繁杂乱的数据指标 —— 极客时间 · 郭忆
  • 大数据之路:阿里巴巴大数据实践 —— 第9章


一、动机背景


🙊 指标不统一的坏处

这里其实大家会深有体会的,就是当你接触一个指标的时候,如果这个指标本身的口径得不到一个官方规范的解释,那么我们用起来就会很慌。为什么这么说?

首先,不同人对于一个指标口径的理解,会存在偏差的,比如对于“新用户”这个原子指标的定义口径,有的人是理解为当日新注册的用户为新用户,而有些人会理解为当日首次下单的用户为新用户,那么直接导致的结果就是同一个指标,计算出来的结果会天差地别,万一不好彩被大boss看到了这些差异那就GG了。

从学习郭忆老师的课程《数据中台实战课》中了解到了当前我们实际数据开发过程中,指标混乱的情况可以简单概况为以下几大类:


二、问题剖析

🎥 指标混乱问题剖析

01 相同指标名称但口径不一样

这个很好理解就是上面一节描述的问题,不同人对于同一个中文名称的指标有着不一样的理解,会直接导致指标计算逻辑的差异从而导致结果的混乱。

02 相同口径但指标名称不同

这个也很好理解,也就是说我们对于同一个指标,有着不同的中文命名方式,比如说**“性别”这个指标,有的人叫 sex,有的人叫gender**,这个还好分辨,但使用起来就很不方便。如果换了个指标口径复杂一点的,就很难和别人进行解释了,比如“近1个月客户充值金额”和“近30天客户充值金额”,这个时候你就会confuse😯了,究竟他们是一样的呢还是不一样呢?

03 不同限定词(修饰词),描述相同事实过程的两个指标,相同事实部分口径不一致

这句话理解起来还是有点绕的,不过我们可以举一个栗子🌰来看看:(我直接引用郭忆老师的例子)

  • 黑卡会员购买用户数

  • 非会员购买用户数

这两个指标从描述上看属于同一个事实过程,也就是购买用户数的事实,只不过是限定词不同,一个是“黑卡会员”,另一个是“非会员”,按理说很好统一了,但是事实又是什么呢?不同部分对于这两个指标的“购买用户数”这个事实过程的口径不一样,大家可以看看这两个指标的口径:

  • “黑卡会员购买用户数”的口径定义是计算周期内去重的(重复购买的用户只算一个),下单并且支付成功的用户数量;
  • “ 非会员的购买用户数”的口径定义是计算周期内去重的,下单并且支付成功,排除关单(“关单”是指在用户在下单购买成功后,取消订单)的用户数量。

简单理解,就是一个对于“购买用户数”的口径是包含关单的,一个是不包含的,那么这样子就会很奇怪了。。。

04 指标口径描述不清晰的

这个还蛮多开发同事会犯错的,就是有的时候开发任务重,然后这块的文档维护就不怎么上心,当下就是简单的对指标口径进行简单描述,以为自己理解了就行,但事实上描述的准确性就不怎么好理解了,会让人产生歧义,有歧义那就有问题了。

比如,如果我描述指标“寄件金额”的口径为:寄件运单金额。那么不同人理解就会存在偏差了,这到底包括了折扣金额呢?还是折扣后的运单金额呢?所以说呢,描述的越详细越好,最好是引用于源表的哪个字段都标注清楚,下次别人在看的时候就一目了然了。

05 指标口径描述错误

这个错误也很常见啊,比如说一个“7日uv”的指标,被描述为:7 日内日均 uv。那么按照口径描述我们理解的计算逻辑就是把最近7日内的uv求出来再除以7,但是这样子就是错了❌,了解pv、uv的同学也应该知道,因为正确的计算逻辑是需要对于uv进行去重,然后再求和取7日均值。

06 指标命名不规范导致难以理解

比如“发件城市”这个指标,口径描述为:最后一笔运单的发件城市。首先我直接看这个指标其实是很难理解的,究竟这个“发件城市”是什么意思?指的是发货城市,还是收货城市?其次,这个指标直接就叫“发件城市”其实是不准确的,应该加上“最后一次”这类相关的限定词才比较合适,不然会和原子指标“发件城市”进行混淆。

07 数据来源和计算逻辑不清洗

有些比较复杂一点的指标,直接用文字去描述其实是很困难的,这个时候其实我们可以尝试去写一下伪代码以及标明源表来源和对应字段,这样子后续追溯起来也是十分方便的。  


三、指标规范

✅ 规范指标的正确做法

在开始介绍之前,有一些名词术语需要先给大家科普一下:


我也是花了一阵子才理解上面这些抽象的名词,所以这里建议大家也需要花点时间去理解一下,或者结合一下栗子来帮助理解。


好了,那么我们如何规范地去管理我们的指标呢?

Step1:面向主题域管理

为了提高指标管理的效率,你需要按照业务线、主题域和业务过程三级目录方式管理指标。

Step2:划分原子指标和派生指标


Step3:进行指标命名规范

需要遵循两个原则:易懂与统一

  • 易懂,就是看到指标的名称,就可以基本判断这个指标归属于哪个业务过程;
  • 统一,就是要确保派生指标和它继承的原子指标命名是一致的。

对于原子指标,标名称适合用“动作 + 度量”的命名方式(比如注册用户数、购买用户数)

对于派生指标,应该严格遵循“时间周期 + 统计粒度 + 修饰词 + 原子指标”的命名方式。(比如30天内黑卡会员购买用户数)

Step4:分级管理

指标确实是多,如果一视同仁去管理其实很难,所以可以按照下面的原则进行等级划分:

  • 一级指标:数据中台直接产出,核心指标(提供给公司高层看的)、原子指标以及跨部门的派生指标。
  • 二级指标:基于中台提供的原子指标,业务部门创建的派生指标。

四、指标字典

🏆 如何构建一个全局的指标字典

其实最好的就是需要有一个指标系统来支持的,但如果条件有限,在有限的资源下其实也可以建立一个指标管理的小组来管理的。构建全局的指标字典其实需要分2步走的,只有把这两步都走通才算得上构建成功。

  • 一个是面对一个新的指标需求,如何基于指标系统完成指标开发流程;
  • 另外一个是面对已经存在的,混乱的指标现状,如何进行全局梳理。

场景1:面对新指标需求的情况下

其实就是要明确和规范开发流程,每一步都需要进行相关的评审,避免一些不规范开发以及复用历史资产,大致的流程可以参考下图:


场景2:面对杂乱的历史指标情况下

这一部分就很蛋疼了,需要耐心去梳理和总结了,大致操作步骤可分为:

1)成立以数据产品或者分析师为核心的 1~3 人的工作小组,专门负责指标的全局梳理;

2)制定指标梳理计划,明确指标梳理目标,覆盖多少个业务线,与业务方共同制定时间计划;

3)对于每一个业务线,需要对还在使用的数据报表、数据产品进行盘点,这里顺便可以把没用的报表和数据产品应该下线;

4)对于每一个报表和数据产品中涉及的指标,按照以下格式进行收集;

5)对于收集的指标,明确业务口径,对于口径相同的,应该去除重复,关联的应用应该合并,此时以我的经验,可以过滤掉相当一部分;

6)根据指标业务口径,明确指标所属的主题域、业务过程;

7)区分指标类型,对于派生指标,要明确指标的统计粒度、修饰词、时间周期以及关联的原子指标;

8)按照指标系统对指标的规范化定义,把整理好的指标录入指标系统。

—— 05 | 如何统一管理纷繁杂乱的数据指标 —— 极客时间 · 郭忆



欢迎加入中台|数仓技术交流群。戳:数据交流群

进群方式:请加微信(微信号:iom1128),回复:数据,通过审核会自动拉你进群。


(备注:行业-职位-城市)


推荐阅读


热文推荐


1. 饿了么元数据管理实践之路

2. 分层随机抽样巧用窗口函数 | percent_rank()/ntile()over()

3. 使用logstash同步海量MySQL数据到ES

4. 建设实时数仓之前的思考与方案

5. 面试系列 | 大厂数据开发面试经验


▼ 福利时刻 ▼ 


01. 后台回复「经典」,即可领取大数据数仓经典书籍。

02. 后台回复「中台」,即可领取大厂中台架构高清ppt。

03. 后台回复「加群」,或添加小助微信IDiom1128  拉您入群(大数据|数仓|分析|Flink|资源)或领取资料。

Q: 关于数据仓库,你还想了解什么?


欢迎大家扫描下方二维码订阅「数据仓库与Python大数据」内容并推荐给更多数据方向的朋友,希望有更多机会和大家交流。


更多精彩,请戳"阅读原文"到"数仓之路"查看

  

关注不迷路~ 各种福利、资源定期分享

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存