Power Pivot:无需桥接表实现按科目分组计算对应学生基准平均分的度量值问题
解决Power Pivot中科目对应基准平均分的度量值问题
首先,你的核心问题在于:原来的度量值没有将Reports表中的科目筛选上下文传递到Baselines表的计算逻辑里,导致无论透视表选择哪个科目,都只会计算全局范围内Type为"Overall"的基准平均分,而非对应科目有报告的学生的基准平均分。
不用桥接表的话,我们可以通过先锁定当前筛选下的学生集合,再基于这个集合计算基准平均分的方式解决,具体DAX度量值如下:
Av Baseline := VAR SelectedStudents = CALCULATETABLE( VALUES(Pupils[StudentID]), Reports // 继承当前透视表的筛选上下文(比如科目筛选) ) RETURN AVERAGEX( CALCULATETABLE( Baselines, Baselines[StudentID] IN SelectedStudents, Baselines[Type] = "Overall" ), Baselines[Average] )
代码逻辑解释:
- 定义
SelectedStudents变量:- 利用
CALCULATETABLE结合VALUES(Pupils[StudentID]),并传入Reports作为筛选上下文,这样就能精准获取当前科目筛选下有对应报告的学生ID集合。这一步把Reports的科目筛选传递到了Pupils表,锁定了目标学生群体。
- 利用
- 计算基准平均分:
- 在
AVERAGEX中,我们先筛选Baselines表:只保留属于SelectedStudents集合且Type为"Overall"的记录,然后对这些记录的Average字段计算平均值。
- 在
验证要点:
确保Pupils表与Reports、Baselines表之间的StudentID一对多关系是活跃关系(即关系箭头是实心的),这样筛选上下文才能正常传递。
内容的提问来源于stack exchange,提问作者miro_x
相关产品推荐
相关产品推荐

