做了快十年的数据仓库,我越来越觉得指标体系是很多团队从“有数”到“好用”的一道分水岭。简单说,指标体系就是把散落在各张报表、各条SQL里的业务口径,用一套统一、结构化、可复用的方式管理起来。它解决的是最让人头疼的问题:同一个“支付金额”,财务口径和运营口径常常对不上;一张新报表上线前,产品经理和数据开发要为口径来回拉扯好几个版本;领导要一个跨部门汇总数,底下人各报各的,最后谁也不敢拍板。这些场景我相信每个数仓从业者都经历过。
这篇文章我想分享的是我在多个数仓项目里做指标体系建设的完整思路,从顶层设计到落地实现,从数据模型到底层质量保障,以及那些只有踩过坑才知道的细节。适合正在搭数仓、或者已经被报表口径折腾到怀疑人生的数据工程师、数据产品经理和数据分析师参考。我会把每个阶段最容易翻车的地方单独讲清楚,尽量让你看完之后能直接拿这套方法来审视自己当前的数据架构。
1. 为什么指标体系总在“建设一半就烂尾”
1.1 三种非常典型的烂尾现场
第一种烂尾叫“报表越建越多,口径越理越乱”。团队一开始没有统一的指标管理意识,每个业务方都提出自己的取数需求,开发同学就各自写各自的逻辑。同样一个“活跃用户”,A报表用“登录一次就算活跃”,B报表用“启动APP才算活跃”,C报表用了“有页面浏览行为才算活跃”。等到年底复盘一拉数据,三个数差出几十万,谁都说不清哪个是对的。这时候再回头想建指标体系,发现需要改的地方遍布几十张报表和上百个调度任务,改动成本高到没人愿意接。
第二种烂尾叫“字典建了,但没人维护”。很多团队也意识到口径混乱的问题,于是建了一张指标字典表,把指标名称、定义、责任人填进去。刚建完那一阵子还算规范,但过两个月业务调整,新增了几个指标,开发按照自己理解直接上线,根本没走字典登记流程;再往后,字典里的字段定义和线上实际SQL逻辑已经对不上了。指标字典慢慢沦为一个“只读不写”的静态文档,连维护它的人都觉得是个笑话。
第三种烂尾叫“模型建了,但指标不可复用”。这种团队通常有比较好的建模基础,做了DWD明细层、DWS汇总层,也沉淀了一些公共表。但问题在于,公共表是根据业务团队的临时需求“攒”出来的,而不是按照指标体系的规划去设计的。今天业务要“按城市看销售额”,就加一个城市维度;明天要“按品类看销售额”,就又加一个品类字段。字段越加越多,表越来越宽,而真正想回答“近30天某渠道来自新客的支付金额”这种组合问题时,还是得重新写一堆逻辑。公共层形同虚设,指标依然散落在各人电脑里的临时SQL中。
1.2 烂尾的根子:指标没有被当成一等公民来治理
上面三种现场看着原因各不相同,但根子是同一个:团队把指标当作报表的附属品,而不是独立的数据资产来治理。报表是面向具体问题的,指标是面向长期复用的;报表可以因为某个会议临时建一张,指标却必须经过统一的定义、评审、建模和生命周期的全流程管理。只要这个观念没转过来,哪怕建了字典表、搞了分层模型,最后还是会被需求牵着走,逐渐腐化。
我这些年最大的感受是,指标体系建设的本质不是技术问题,而是治理问题。技术上无非就是建表、写SQL、配调度,难度并不高;真正难的是让所有相关方认可一套统一的“业务语言”,并且愿意在很长的时间里持续维护它。这一步迈不过去,后面所有的模型设计、血缘管理、质量监控都只是在沙子上盖楼。
1.3 指标体系建设究竟解决了什么
把这个问题想清楚,你才知道该投入多少资源去推进。指标体系的直接收益可以拆成三层:
- 对业务方来说,任何一个指标都只有一个权威口径。你看“支付金额”这个数,无论从报表看、从自助取数看、还是从BI里拉,结果都是一样的,不用再为对数花时间。
- 对数据开发来说,新需求来了先查指标字典,能复用的直接复用,不能复用的先定义新指标再开发。公共层的模型是稳定且单一的,不用每次从明细层重新加工。
- 对管理层来说,跨部门、跨业务线的核心经营数据具备可比性。做同比环比、做目标拆解、做绩效考核时,大家用的是同一套数字,不会出现“一季度业绩到底完成没有”这种尴尬的争论。
这三层收益不是画饼,而是在体系真正落地之后能稳定兑现的。不过也要提前打预防针:指标体系从建立到产生明显效果,通常需要三到六个月的持续投入,中途很可能看不到立竿见影的反馈。如果没有这个耐心,很容易在刚搭完字典、还没沉淀出几个标准模型的时候就放弃了。
2. 顶层设计:不能上来就写SQL,要先梳理业务过程
2.1 从业务过程而非报表出发
很多团队建指标体系时容易犯一个方向性错误:让各业务线把自己常用的报表指标提上来,然后数据团队照着合并归类。这么做看着省事,实则后患无穷。因为报表指标是已经发生过的取数逻辑,里面往往会带上各个业务团队自己的口径偏好,甚至有些历史遗留的实现是有问题的;把它们直接收编成标准指标,等于把混乱给制度化。
正确的起点不是报表,而是业务过程。所谓业务过程,就是业务真实发生的动作:用户注册、用户下单、订单支付、商品发货、用户退款、用户投诉、内容浏览、广告曝光等等。指标体系中的所有核心指标,都应该能追溯到某一个或某几个业务过程上。先把这个基础打牢,后面定义指标才站得住脚。
我习惯的做法是画一张“业务过程清单”,把每个业务过程的责任部门、发生频率、关键结果物(比如订单、支付流水、物流单)列出来。这张清单不需要很复杂,但必须跟业务方逐条确认过,确保业务过程的定义彼此独立、没有遗漏。以订单类业务为例,至少能拆出“提交订单”“订单支付”“订单发货”“订单完成”“订单退款”这几个过程,同一个订单在不同状态下对应不同过程,不能混在一起。
2.2 把业务过程拆成事实与维度
业务过程清单理完后,接下来要做的事情是把每个业务过程拆成“事实”和“维度”两个部分。事实就是这个过程产生了什么可度量的数值,维度就是这些数值可以从哪些角度去切片观察。
拿“订单支付”这个业务过程来举例:
- 事实:支付金额、支付商品件数、支付运费、优惠金额。
- 维度:支付时间、订单所属用户、商品、店铺/门店、支付渠道、订单来源(App/小程序/H5)、用户会员等级。
这一步做得越细,后面定义原子指标就越轻松。因为原子指标的“原子”二字,本质上就是指在业务过程的事件级别上,选择一个事实度量加上一种聚合逻辑,得到的不可再拆分的度量。比如“支付金额”就是“订单支付”过程上的一个事实,按求和汇总,它就是原子指标。而“支付转化率”需要把“下单人数”和“支付人数”两个不同过程的人数放在一起算,这就不是原子指标能搞定的,它属于复合指标。
拆事实和维度时有一个容易忽略的点:同一个实体在不同业务过程里的角色不一样。例如用户在下单过程叫“下单用户”,在支付过程叫“支付用户”,在退款过程叫“退款用户”。命名上不要为了图省事全部叫“用户”,否则后面做指标血缘和口径对齐时很容易混淆。我见过不少团队的宽表把所有过程的用户字段都叫做user_id,结果连“支付用户数”和“下单用户数”的定义都必须在指标描述里额外解释半天。
2.3 明确指标的三层语义:原子、派生、复合
在真正写指标定义文档之前,先把指标按语义分成三个层级,这是整个指标体系结构化程度高低的关键:
- 原子指标:基于单个业务过程的事实度量。它只表达一个基本事实,不附加任何业务限定条件。例如“支付金额”“支付件数”“退款金额”。原子指标的汇总逻辑通常很单纯,就是sum、count、max、min这几种。
- 派生指标:在原子指标的基础上,叠加时间周期和一个或多个修饰词得到的指标。例如“近30天App渠道支付金额”,这里“支付金额”是原子指标,“近30天”是时间周期,“App渠道”是修饰词。
- 复合指标:通过两个或以上指标计算得到的比率、比例、差值类指标。例如“支付转化率=支付用户数/下单用户数”、“客单价=支付金额/支付用户数”。
这个三层语义模型看起来简单,但绝大多数团队在建设时都会出问题。最常见的是把复合指标和原子指标混在一起管理,导致指标字典里既有“支付金额”又有“客单价”,完全看不出它们之间的关系,后面做分析时也没法自动推导。正确的做法是在字典里把复合指标的计算逻辑显式写出来,依赖哪些底层指标要一目了然,这样任何一个复合指标出问题,都能快速定位到是哪个原始口径出了问题。
3. 指标定义的三层模型与规范:从口径到命名的完整设计
3.1 原子指标怎么定义才算“到位”
原子指标的定义不能只写一句“支付金额=sum(支付金额)”,这样写等于什么都没说。一个合格的原子指标定义至少要回答这几个问题:
- 它来自哪个业务过程?
- 它的统计粒度是什么?也就是一条记录代表什么?
- 它对事实字段的聚合逻辑是什么?
- 涉及去重时,去重键是什么?
下面用一个具体的原子指标示例来说明:
- 指标名称:支付金额
- 指标编码:dws_trade_pay_sum_amt
- 所属过程:订单支付
- 统计粒度:支付订单明细,一行代表一笔支付成功且未全额退款的订单记录
- 事实字段:pay_amount(支付成功金额)
- 聚合逻辑:sum(pay_amount)
- 不可累加说明:在订单维度可累加,在用户维度只能对同一用户的多笔订单求和得到该用户的支付金额,不能把多个用户的支付金额做“去重后相加”,否则会重复计算。
- 来源表:dwd_trade_pay_detail_df
你可能会觉得一个指标定义做到这个程度太繁琐,但真正出问题的时候,往往就是这些细节没说清。比如“支付成功”本身就需要定义:支付成功的标准是什么?支付回调成功就算,还是必须支付单状态为final?退款订单算不算支付金额?这些问题不定清楚,数据开发就会按自己的理解写逻辑,最后数对不上时再回头一条一条抠,成本高得多。
3.2 修饰词与时间周期:派生指标的两个“变量”
修饰词本质上是针对原子指标所在业务过程中某个维度或属性的限定条件。它不是指标的一部分,而是指标的约束条件。例如渠道维度上的“App渠道”“微信小程序渠道”“H5渠道”,会员维度的“新客”“老客”,商品维度的“自营商品”“第三方商品”,这些都是修饰词。
在指标体系里,修饰词建议单独建字典管理,每个修饰词都要有明确的过滤逻辑定义。比如“新客”的定义是什么?很多团队会有争议:是第一次下单的用户,还是第一次注册的用户?还是近365天无支付记录的用户?没有统一标准的话,光“新客”这一个词就能让两个部门对不上数。
时间周期则相对简单,但也有一些边界要约定清楚。自然日、自然周、自然月、近7天、近30天、累计至今、年初至今,这些是最常见的周期。要注意的是时间周期的起点和终点如何计算:比如“近30天”是否包含今天?在指标字典里最好统一约定为“截止到业务日当天(不含当天)往前推30个自然日”。别小看这种定义,哪怕只差一天,月底拉数时也能差出明显的量级。
3.3 派生指标的组合规则与命名编码
派生指标一旦有了原子指标、修饰词、时间周期这三个组件,就可以规则化地生成。这里我强烈建议建立一套可解析的命名编码规则,而不是让每个开发者自己想名字。
我实践下来比较好用的派生指标编码格式是:
{cube_name}_{metric_name}_{dim_constraint}_{time_period}- cube_name:维度组合名,比如user_item这块用user来代表用户粒度。
- metric_name:原子指标名,比如pay_amount。
- dim_constraint:修饰词组合,比如channel_app。
- time_period:时间周期,比如30d、td(累计至今)。
按这个规则,“近30天App渠道支付金额”的指标编码就是:
user_pay_amount_channel_app_30d这样编码有一个很实际的好处:数据开发拿到一个派生指标需求时,能自动解析出它的组成部分,然后去字典里找对应的原子指标和修饰词定义,不需要再手工解读需求文档。同时,当某个原子指标口径调整时,所有依赖它的派生指标能通过编码中的metric_name字段快速定位出来。
3.4 指标命名规范里必须写明白的几件事
命名规范这事,很多团队有自己的口味,我不打算规定一套“标准答案”,但有几个底线建议:
第一,指标名称不要用业务黑话,用户等级消费额、复购周期这种都要能让人一眼看懂。第二,同一个指标只能有一个中文名称和英文编码,任何地方引用都用编码,不使用别名。第三,涉及差异口径的指标,必须把差异点体现在名称里,比如“支付金额(含退款)”和“支付金额(不含退款)”,不能只叫“支付金额”,否则迟早会混。第四,不要在指标名称里挂某个业务团队的名字,指标一旦冠上“某某中心支付金额”,其他团队就不会再信任它了。
命名规范这件事,做的时候越严格,后面用的时候越省心。我自己见过最惨痛的一次教训是,某团队早期为了赶上线,把两个口径完全不同的指标都起名叫“销售金额”,上线后用了大半年,直到一次季度会议把数据投到大屏上才发现两个数据对不上,整整花了三周时间做数据回溯,最后发现是其中一张报表里把“含税销售额”和“不含税销售额”混在一起了。如果当初命名时就把“含税”“不含税”写进去,这个事故完全可以避免。
4. 指标落库与模型落地:从字典表到数仓逻辑模型的实现
4.1 指标字典表的结构设计
定义规范讲完,最终要把这些规范落到物理表里,否则就只是纸面文章。我推荐的第一张表是指标元数据表,名字可以叫dim_indicator_def,核心字段如下:
create table dim_indicator_def ( indicator_id bigint comment '指标ID', indicator_code string comment '指标编码', indicator_name string comment '指标中文名', indicator_type string comment '指标类型:atomic/derived/composite', biz_process string comment '所属业务过程', biz_domain string comment '所属业务域', statistic_granularity string comment '统计粒度描述', fact_field string comment '事实字段', agg_logic string comment '聚合逻辑:sum/count/count_distinct/max/min', time_period string comment '时间周期', modifier_code string comment '修饰词组合编码', composite_expression string comment '复合指标计算表达式', caliber_description string comment '详细口径说明', source_table string comment '来源数据表', owner string comment '指标责任人', status string comment '状态:draft/online/offline', create_time string, update_time string ) comment '指标定义表';如果你的体系已经运行一段时间,我建议再加两个辅助表:修饰词维表dim_modifier_def,以及指标版变更记录表indicator_change_log。修饰词维表单独维护的好处是,修饰词可以在多个指标间复用,改一次定义就能联动所有派生指标;变更记录表则是为了保留指标口径的演进历史,以便日后做数据回溯和审计时能回答“这个数字当时是怎么算的”这个问题。
很多人建字典表时容易忽略一个字段:指标归属的业务过程。这个字段看起来只是分类,实际上意义很大。指标在后续出现问题或者做横评对比时,第一件事就是看它属于哪个业务过程;如果业务过程分类是清晰的,跨域的指标对比自然就顺畅。我见过有的团队把指标按“经营指标”“用户指标”“商品指标”这种主题来分,虽然看着直观,但真正做数据血缘追踪时反而不如按业务过程分类好用。
4.2 如何从指标反推数仓模型而不是反过来
指标定义完备之后,接下来要做的是让这些指标在数仓模型中“有家可归”。很多团队的建模习惯是先看源系统有什么数据,然后建明细表、宽表、汇总表,最后让指标去适配表。这个逻辑是反的。
正确的顺序应该是指标先行:指标需要什么统计粒度,我们就建什么粒度的模型;指标需要什么维度,我们就在模型里设计那些维度的外键。用前面“近30天App渠道支付金额”这个派生指标举例,它需要的原子指标是“支付金额”,统计粒度是支付订单明细,修饰词限定App渠道。那么对应的物理模型至少应该满足:
- 有支付成功的明细记录,或者有基于支付明细粒度的汇总结果。
- 包含渠道字段,能筛选出App渠道。
- 包含支付时间字段,能筛选出近30天。
如果团队用的是经典的分层架构,通常会在DWD层做一笔支付成功明细事实表dwd_trade_pay_detail_df,然后在DWS层按主题做汇总。指标字典里记录的source_table字段,就可以直接指向DWD的明细表或DWS的汇总表。
这里我想特别强调一点:指标体系建设不需要推翻已有的数仓分层,它更像是给数仓模型补上一张“地图”,把业务指标和物理模型之间的关系显式记录下来。如果你们已经有DWD、DWS了,不要因为要做指标体系就推倒重来,绝大多数情况下在现有分层基础上补一张指标映射关系表就够了。
4.3 指标加工管道的实现要点
指标字典落库之后,指标的物理加工有两种常见的落地方式:一种是用定时调度任务把指标算好、写入指标结果表;另一种是只做逻辑视图或者语义层,指标计算逻辑写在BI或者查询引擎里,由下游在查询时实时计算。两种方式各有适用场景,我建议混合使用:
- 高频访问、口径稳定、数据量大的核心指标,预计算好,写入DWS指标表。
- 低频访问、口径还在试错期、涉及灵活组合的派生指标,做成语义层或者视图,不要急于物化。
这样做的理由很简单:预计算指标虽然快,但指标一旦要改口径,重新刷数成本很高;实时计算则灵活,但查询延迟和资源消耗都不可控。把高频核心指标和低频探索指标分开,能兼顾稳定性和灵活性。
物化调度时,推荐在任务命名中带上指标编码。比如指标user_pay_amount_channel_app_30d对应的调度任务,命名就是dws_user_pay_amount_channel_app_30d。任务输出表和指标编码一一对应,这样运维时看到任务名就能知道它在算什么指标,排查问题效率会高很多。
在调度设计上还有两个容易被忽视的点。第一,指标任务的调度时间要跟上游源表就绪时间对齐,通过检查上游分区存在性再做依赖触发,不要盲等固定时间;第二,核心指标任务要设置数据量校验,比如今天的记录数跟昨天相差超过50%就自动告警暂停,避免因为上游脏数据把指标结果污染掉,等下游已经用了半天才发现。
5. 指标口径与血缘的治理:让指标体系真正“活”起来
5.1 指标上线和下线都要有流程
很多团队的指标字典里躺着大量“已上线”指标,但其实业务早就不用了。这些僵尸指标白白占着模型和调度资源,更危险的是,新来的同学看到字典里有这个指标,会以为它还在被业务使用,从而在汇报时引用过时的数字。
要解决这个问题,必须给指标定义生命周期管理流程。我建议至少包含三类状态:
- draft:草稿状态,指标刚提出,还没完成评审。
- online:正式状态,口径经过评审,可以用于报表和取数。
- offline:下线状态,业务不再使用,保留历史定义供追溯。
每个指标从online状态进入offline状态时,必须有一个责任人确认并写明下线原因。状态变更动作在indicator_change_log表里留下记录,防止有人偷偷把在用指标下线了导致报表跑不出数。
很多人觉得指标下线是小事,但实际上这是最容易被忽略、影响又最大的环节。一次典型的翻车场景是:某团队有个老指标“累计注册用户数”,后来业务方觉得口径有问题,决定改用“累计有效注册用户数”,新指标上线后老指标没有下线。结果半年后的一次融资数据核对中,财务用了含无效用户的老指标,投资方那边用了不含无效用户的新指标,两边数字差了近百万,足足解释了一个多星期才平息。这个教训让我从此把指标下线流程的重要性提到了和上线流程同等的高度。
5.2 指标血缘:把口径变更的影响范围管起来
指标血缘是让指标体系可持续演进的关键,核心目标是回答“如果这个指标改了,会影响哪些报表、哪些下游应用”。血缘分为两层:一是指标与指标之间的逻辑血缘,二是指标与物理表、字段之间的物理血缘。
指标级血缘可以通过复合指标的计算表达式自动推导。比如“客单价=支付金额/支付用户数”,系统可以解析出客单价依赖支付金额和支付用户数这两个原子指标。当“支付用户数”的口径从“去重用户数”改为“支付成功且未退款的去重用户数”时,系统自动提示“客单价”指标受影响,需要评估是否同步调整。
物理血缘则需要依靠数据开发在写SQL时登记表与字段的依赖关系。这个环节如果纯靠人工登记,往往做不长久;我建议利用调度系统里SQL解析的能力做自动解析,把每一步加工任务的输入表和输出表、关键字段的映射关系自动抽取出来,再和指标字典里的source_table字段做关联。这样一来,从指标一路追溯到ODS原始表,中间经过哪些加工步骤、哪些字段做了汇总,全部链路都能拉通。
5.3 指标质量监控:校验规则和告警配置的实战组合
指标上线后最怕的是“算错了没人知道”。一个核心经营指标如果在晨会上被领导发现异常,背后的代价往往比数据本身的问题更大。所以指标质量监控是体系建设中不能省的一环。
我常用的监控方式有四种,组合起来基本能覆盖绝大多数异常场景:
- 波动监控:按天比较指标值的变化率,超过阈值触发告警。阈值要根据不同指标的波动特征单独设置,不能一张规则走天下。比如核心稳定指标阈值设±5%,活动期指标可能设±30%。
- 同环比监控:对比去年同期和上个周期的值,适用于有季节性的指标。
- 上下游校验:取数口径最怕明细和汇总对不上。我的习惯是,每天跑完DWS指标任务后,抽查几个维度的汇总值和DWD层分维度汇总值对比,一旦发现差异超过设定阈值就告警。这个校验的SQL写起来不复杂,但收效极大,很多数据质量问题都是在明细和汇总比对时暴露出来的。
- 空值与零值监控:检测关键指标字段是否出现不该有的null或0值,比如支付金额出现NULL,大概率是上游数据没推过来。
校验规则落地的载体可以是一张监控规则表,也可以直接用任务编排系统的节点功能。我推荐用规则表的方式,因为它能把“指标编码、校验逻辑、告警阈值、通知人”集中管理,日后调整规则时不用改代码。下面是一个简化版的结构:
监控规则表: - indicator_code: 指标编码 - rule_type: wave / yoy / compare_detail / null_zero - compare_logic: 比较方式 - threshold: 阈值 - weak_time: 生效时段 - owner: 告警通知人 - status: online/offline告警渠道上我个人的经验是,不要只发到企业聊天群里,那样容易被刷掉。核心指标要配置电话或者短信级别的高优告警,至少保证值班同学在半小时内能被找到。数据质量监控不怕误报,就怕漏报;误报可以通过规则参数收敛,漏报则是事故。
6. 建完体系之后:最容易踩的三个坑和我的应对方案
6.1 指标膨胀:没有评审机制早晚会失控
指标体系跑起来之后,最大的敌人是膨胀。业务同学每天都会提新指标需求,如果每个需求都直接受理,半年后指标字典里会堆出上千个指标,其中有一半是口径几乎相同的变体。到时候找个数比不用指标体系还难。
我的应对方式是建立指标评审机制,任何新指标必须过一道评审会。评审会上只需要回答三个问题:
- 这个指标的原子指标是不是已经存在?
- 如果存在,可不可以直接用原有原子指标加修饰词组合出来?
- 如果必须新增,理由是什么,跟旧指标的口径差异在哪里?
这几个问题问完,大概能挡掉六成以上的“伪新指标”。被挡掉的需求最后往往发现就是换个修饰词而已,用已有指标组合一下就能满足。
6.2 口径分裂:同一指标在公共层和业务层各算各的
口径分裂是比命名混乱更隐蔽的问题。有时候公共层已经定义好了标准的“支付金额”,但某个业务团队觉得公共层的处理逻辑太重,在自己的项目里自己写了一个简化版。刚开始两个数差别不大,可随着业务规则调整,简化版逐渐偏离标准版,等到某天两个数对不上时,已经没人说得清业务团队那个口径是怎么演变的。
要根治这个问题,光靠宣贯不够。我会在数据权限和代码规范上做约束:核心原子指标的逻辑只允许在DWD层出现一次,DWS层做汇总时只能引用DWD层的标准结果,不允许业务团队自己从ODS拉数据重算。同时在全链路质量校验里加入一条规则:抽查业务团队汇报用的关键指标值,和标准指标值做对比,一旦出现偏差就告警。这种方式虽然有点暴力,但确实能很快把问题暴露出来。
6.3 让指标体系“长”在业务流程里,而不是文档里
最后一个经验,也是我想特别强调的:指标体系不能只是数仓团队内部的一套技术规范,它必须“长”在业务流程里。具体来说,业务方在提任何数据需求时,都应该先被要求查看指标字典,确认这个指标是否存在;报表开发在新建一个数据卡片时,必须关联字典里的指标编码;产品经理在评审数据产品时,要确认当前展示的指标口径和字典是否一致。
一开始做这种绑定会有点繁琐,业务方也会抱怨“看个数据还要先查字典”。但坚持几个迭代之后,大家会发现口径分歧明显变少,找历史指标做同比也快了很多。这时指标体系的收益就不再只是数据团队的自我感动,而是实打实地让业务方感受到“数好对了、数好找了、数能信了”。
我在最近一次项目中,还做了一件让团队尝到甜头的小事:把指标字典做成了只读的数据门户页面,同时把每个指标的历史版本记录挂上去。业务方在选中任何一个指标时,都能看到它历史上口径做过哪些调整,以及调整前后的数据差异说明。这本来是给内部审计用的功能,结果业务方反而最喜欢,说“终于知道之前看的数和现在的数为什么不一样了,不用每次都要去问数据团队了”。这也让我更笃定一点:指标体系的价值,只有在被业务真正使用起来之后才算兑现。你建得再漂亮,如果业务不用,它就只是一张自我安慰的Excel表而已。