Power Pivot中基于布尔度量计算符合条件的唯一POS数量问题
Power Pivot计算符合条件的POS数量解决方案
问题根源
你之前的公式无效,是因为FILTER('TableName';[measure1]=TRUE())是逐行扫描整张表,但你的布尔度量是基于单个Point of sales(POS)的所有行数据计算的。逐行应用度量时,上下文是单一行而非整个POS组,无法正确判断该POS是否满足条件。
正确度量写法
以下是三种条件对应的度量公式,你可以直接使用,也可以基于已创建的布尔度量调整:
1. 统计至少有一个“1”答案的POS数量
直接通过聚合判断的写法:
Meet cond1 := CALCULATE( DISTINCTCOUNT('TableName'[Point of sales]), FILTER( VALUES('TableName'[Point of sales]), CALCULATE(MAX('TableName'[Answer])) = 1 ) )
基于你已创建的measure1的写法:
Meet cond1 := CALCULATE( DISTINCTCOUNT('TableName'[Point of sales]), FILTER( VALUES('TableName'[Point of sales]), [measure1] = TRUE() ) )
2. 统计无“1”但至少有一个“2”答案的POS数量
直接聚合判断的写法:
Meet cond2 := CALCULATE( DISTINCTCOUNT('TableName'[Point of sales]), FILTER( VALUES('TableName'[Point of sales]), CALCULATE(MAX('TableName'[Answer])) = 2 && CALCULATE(MIN('TableName'[Answer])) <> 1 ) )
基于已创建的measure2的写法:
Meet cond2 := CALCULATE( DISTINCTCOUNT('TableName'[Point of sales]), FILTER( VALUES('TableName'[Point of sales]), [measure2] = TRUE() ) )
3. 统计仅含“0”答案的POS数量
直接聚合判断的写法:
Meet cond3 := CALCULATE( DISTINCTCOUNT('TableName'[Point of sales]), FILTER( VALUES('TableName'[Point of sales]), CALCULATE(MAX('TableName'[Answer])) = 0 ) )
基于已创建的measure3的写法:
Meet cond3 := CALCULATE( DISTINCTCOUNT('TableName'[Point of sales]), FILTER( VALUES('TableName'[Point of sales]), [measure3] = TRUE() ) )
核心逻辑说明
通过VALUES('TableName'[Point of sales])获取所有唯一的POS分组,再对每个分组单独计算条件(无论是直接聚合判断还是调用已有的布尔度量),最后统计符合条件的分组数量,这样就能确保上下文是整个POS组,而非单一行数据。
内容的提问来源于stack exchange,提问作者Stan Stryzh
相关产品推荐
相关产品推荐

