Fixed LOD表达式去重Estimated ARR求和异常,求技术排查
问题描述
- SQL关联两张表后,
Estimated ARR字段出现重复值 - 创建计算字段
Distinct Estimated ARR,使用Fixed LOD表达式:{FIXED [Estimated ARR] : AVG([Estimated ARR]) },用来获取该字段唯一值 - 视图中求和时,4行数据仅2行结果正确:客户细分B、D结果准确,A、C数值偏差数十万
- 关联前各客户细分的ARR正确值参考附图:

问题分析与解决
为什么当前LOD没起作用?
你写的LOD是按Estimated ARR本身分组取平均,这其实只是返回原数值(同一值的平均就是自己),根本没按客户细分这个维度去重。如果同一个客户细分下有多个重复的Estimated ARR,这个表达式不会帮你在客户细分层级去重求和,反而会因为关联后的重复行导致计算出错。
正确的去重求和写法
要按客户细分对Estimated ARR去重后求和,换这两种方式:
直接用去重求和:
SUM(DISTINCT [Estimated ARR])(注意:确保视图的维度是客户细分,否则可能不符合预期)
用LOD按客户细分锁定唯一值:
创建计算字段客户细分唯一ARR:{FIXED [客户细分] : MAX([Estimated ARR])}然后对这个字段求和就行——因为每个客户细分下只会返回唯一的ARR值(前提是每个客户细分对应唯一的ARR)。
额外要查的点
- 检查SQL关联键:确认两张表的关联条件是否正确,是不是因为一对多关联产生了笛卡尔积,导致主表的
Estimated ARR被重复复制了多次 - 看原始数据明细:拉取客户细分A、C的关联后数据,数一下
Estimated ARR重复了多少次,偏差数值是不是刚好是重复次数乘以正确值,这样能快速定位问题
内容的提问来源于stack exchange,提问作者Emily
相关产品推荐
相关产品推荐

