隐藏Customer字段时,如何用DAX计算对应客户的总Quantity?
解决DAX度量值在透视表隐藏Customer时的计算问题
你的问题出在ALLEXCEPT的参数逻辑搞反了:
你写的ALLEXCEPT(Table5;Table5[Customer])是保留Customer列的筛选,移除其他所有列的筛选。所以当透视表隐藏Customer时,没有Customer的筛选上下文,函数会直接移除Category/Product/Color的筛选条件,导致SUM计算的是全表所有数据的总和(也就是你看到的750)。
根据你的需求——不管是否显示Customer,每个Category/Product/Color分组都显示对应所有客户的Quantity总和(比如Alpha/CC/Blue对应550),可以用以下两种方案:
方案1:固定计算分组总Quantity
如果不需要在显示Customer时单独展示该客户的数值,直接用这个公式移除Customer的筛选即可:
Quantity_Customer = CALCULATE(SUM(Table5[Quantity]), ALL(Table5[Customer]))
这个公式会始终基于当前Category/Product/Color的筛选,计算所有对应客户的Quantity总和,不管透视表是否显示Customer列。
方案2:根据是否显示Customer自动切换
如果需要显示Customer时展示该客户的Quantity,隐藏时展示分组总Quantity,用带判断的公式:
Quantity_Customer = IF( HASONEVALUE(Table5[Customer]), SUM(Table5[Quantity]), CALCULATE(SUM(Table5[Quantity]), ALL(Table5[Customer])) )
HASONEVALUE会判断当前行是否有唯一的Customer筛选,从而切换计算逻辑。
内容的提问来源于stack exchange,提问作者LordRA
相关产品推荐
相关产品推荐

