首页 > 解决方案 > SUMX DISTINCT PowerPivot 未按预期工作

问题描述

我有这样的数据从 SQL 查询返回:

REF   ORDER   R_UNITS   R_STOCK   COMPONENT
-------------------------------------------
TOY1   SP1      500       350      BLISTER
TOY1   SP2      400       350      BLISTER    
TOY1   SP3      100       350      BLISTER    
TOY2   SP1      200       200      BLISTER   
TOY2   SP4      300       200      BLISTER    
TOY3   SP1      600       300      BLISTER     
TOY3   SP1      400       300        BOX

我想像这样将它旋转到 Excel 数据透视表中:

FILTER ORDER: ALL

COMPONENT   R_UNITS   Σ R_STOCK
BLISTER      2100        850  
BOX          400         300    

R_STOCK 应该遍历数据并根据唯一的 REF 值汇总结果。

我尝试了这个 DAX 公式:

Σ R_STOCK:=SUMX(DISTINCT(Table6[REF]),AVERAGE(Table6[REF STOCK]))

但是,它不是汇总 BLISTER 的每个唯一值 (300+350+200=850),而是对所有行的总数求平均值,然后将结果乘以唯一值的数量:(350+350+350+ 200+200+300)/6*3=875

如何修复我的 DAX 公式?

非常感谢

标签: daxpowerpivot

解决方案


我认为我们需要使用 SUMMARIZE 来获得不同的 REF 和 REF STOCK 对,然后添加 REF STOCK。我还将添加一个过滤器修饰符以删除除 COMPONENT 上的过滤器之外的任何可能的过滤器

R_STOCK :=
CALCULATE(
    SUMX( SUMMARIZE( Table6, Table6[REF], Table6[REF STOCK] ), Table6[REF STOCK] ),
    ALLEXCEPT( Table6, Table6[COMPONENT] )
)

推荐阅读