在正式开始讨论原子指标、派生指标、复合指标的拆解前,先铺垫两个指标的基本知识 


四、两种常见的统计指标类型

为了使大家更好地理解,先上一个示意图:

构建数仓指标体系4:理解原子、派生、复合指标(2/3)_数据治理

(图一)

其实指标有两种,一种是统计记录个数,一种是统计某个字段的聚合后累加数(比例类,即复合指标除外)。

统计记录个数:指通过筛选条件,在某个数据表中,统计某个实体的记录数量。如统计会员等级是A的会员数量、统计注册时间大于2020年的会员数量等。如果是技术上表示,就是:select count(*) from users where 会员等级='A'。这句查询语句,如果翻译为业务能看得懂的指标,应该可以叫作:A级会员数。

统计某个字段的聚合总数:在统计记录个数的基础上,统计某个字段的聚合后总量。如统计会员等级是A的会员余额、统计注册时间大于2020年的会员余额。如果是技术上表示,就是:select sum(账户余额) from users where 会员等级='A'。这句查询语句,如果翻译为业务能看得懂的指标,应该可以叫作:A级会员账户余额。

如果是懂技术的话,看查询语句的颜色,已经能大概猜到原子指标是啥,大概知道怎么拆解和使用了...


五、识别指标的粒度

首先看看我在真实的项目过程中,业务部门的一些输出,下面是业务部门需要我们实现的内容:

构建数仓指标体系4:理解原子、派生、复合指标(2/3)_指标_02

(图二)

回想一下,前面文章我们提到指标的定义,从业务和技术视角,是怎么说的:

业务上:指标是对业务上度量,可以是度量绩效、可以是度量经营过程,也可以度量其它;

技术上:指标是统计数值,第一是要统计,第二是要数值(比例也算,如同比)。


上述两个业务部门需要实现的指标内容,在业务上均是一种度量,而且在技术上都是累加的统计数值,但这两个需要实现的内容,真的是一样的指标吗?

从真实的ADS报表看上面两个业务需求,其最终输出形式应该是类似下面的状况:

人工开方数报表:

构建数仓指标体系4:理解原子、派生、复合指标(2/3)_DAMA_03

(图三)


新增备案营销员项目数量报表:

构建数仓指标体系4:理解原子、派生、复合指标(2/3)_数据治理_04

(图四)


大家有没有看到两个报表的差别?一个报表第一列是医生ID,一个报表第一列是日期,这代表什么?

  • 人工开方数指标:统计实体下的每天开方数量,粒度已经具体到某个实体,一般用于绩效考核与标签画像绘画
  • 新增备案营销员项目数量指标:一个群体的统计分析,粒度是整个企业,用于反映整体的经营状况等的指标

可以看得出来,两个报表是没办法合并为一个报表做展示的,因为大家的粒度不一致。再回想前面的文章,造成粒度不一致的原因,是因为度量的维度有差异所致。所以,指标的粒度,受维度(粒度)约束,当维度一致时,相关指标可以放在同一个报表,当维度不一致时,相关指标无法放在同一个报表。如现在业务部门要求新增一个指标,叫“项目数量”,我们可以在图四中进行扩充,但却没办法在图三中进行扩充,如下图:

构建数仓指标体系4:理解原子、派生、复合指标(2/3)_数据仓库_05


那维度粒度不一致时,报表可以合并吗?答案也是否定的。

如有两个报表,一个是统计城市的项目数量,一个是统计省的项目数量,由于维度的粒度不一致,也无法将两个报表进行合并。

因此,我们可以得出一个结论,当维度及维度的粒度一致时,指标可以放在同一个报表中,即指标的粒度也是一致的,这也是维度建模中一个重要的理论:一致性维度(Conformed Dimensions)


经过这么多铺垫,相信同学们都已经有个初步的概念了:

  • 指标用于度量业务
  • 指标是一个统计数值,而这个统计值与维度(粒度)相关

如上面的例子:select count(*) from users where 会员等级='A'

count(*)就是统计值,会员等级就是维度(希望大家不会看不明白这个SQL语句...)


给一个思考题:上面的语句,黄色的部分及橙红色的部分,与原子指标、派生指标有何关系?