我正在尝试计算响应切片器选择的聚合数据(按级别 1)(在级别 2)
具体例子:
数据
Level1 Level2 Level3 Data
A z q 1
A zz q 2
A zzz r 3
A zzzz r 4
B z q 10
B zz q 20
B zzz r 30
B zzzz r 40
按 Level1 聚合数据
选项 1. 使用 GroupBy 创建一个表并使用 Level1(在关系选项卡中)加入它
Table1_agg =
GROUPBY(
Table1,
Table1[Level1],
"AggL1_Data",sumx(CURRENTGROUP(),Table1[Data])
)
选项 2. 在表 1 中使用过滤器
AggL1_Filter =
Calculate(
sum(Table1[Data]),
FILTER(
Table1,
Table1[Level1]= EARLIER(Table1[Level1])
)
)
结果 - 聚合 WORKS
但是,使用 Level2 Slicer 进行过滤不起作用。
聚合数据“AggL1_”仍然显示 10 和 100,因为我希望看到 5(对于 A)和 50(对于 B)
帮助将不胜感激,我已经坚持了很长时间,
提前致谢,
杜西奥德
我认为你只需要使用ALLSELECTED 函数。
AggMeasure = CALCULATE(SUM(Table1[Data]), ALLSELECTED(Table1[Level2]))
编辑:如果您只需要分组Level1
(忽略其他可能级别的过滤器上下文),那么您需要进行调整。
AggMeasure = CALCULATE(SUM(Table1[Data]),
FILTER(ALLSELECTED(Table1),
Table1[Level1] IN VALUES(Table1[Level1])))
这使用ALLSELECTED
以前的函数来保留切片器选择,但添加了一个条件,即我们只考虑与当前Level1
. 对于A
一行中的任何内容,VALUES(Table1[Level1])
只返回,A
因为这是它在过滤器上下文中看到的所有内容。(Total 行删除所有过滤器上下文,因此返回两者的总和。)
而不是IN VALUES(...)
你可以使用= MAX(...)
or= MIN(...)
或= LASTNONBLANK(...)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句