基于多筛选条件计算员工月度时段平均值(DAX公式求助)
解决方案:按员工&月份计算数值平均值
根据你的需求,这里提供几种可行的DAX方案,同时说明原公式的问题:
方案1:直接使用度量值(推荐用于报表动态展示)
如果是在Power BI报表中配合姓名、月份维度使用,直接创建度量值即可:
月度平均值 = AVERAGE('Table'[Values])
当你把Name和Month拖入矩阵/表格视觉对象时,Power BI会自动按这两个维度分组,计算每组的数值平均值,完全符合你要的John九月(13+29)/2=21、十月(42+32)/2=37的结果。
方案2:创建计算列(用于在原表中直接显示每行对应的月度平均值)
如果需要在原数据表中新增一列,显示当前行所属员工&月份的平均值,用以下DAX:
月度平均值_计算列 = CALCULATE( AVERAGE('Table'[Values]), ALLEXCEPT('Table', 'Table'[Name], 'Table'[Month]) )
ALLEXCEPT函数会保留Name和Month的筛选上下文,只移除其他无关筛选,确保计算的是当前员工当月所有数值的平均。
方案3:生成独立的汇总表
如果需要生成一个仅包含员工、月份、对应平均值的汇总表,使用SUMMARIZE:
月度平均汇总表 = SUMMARIZE( 'Table', 'Table'[Name], 'Table'[Month], "月度平均值", AVERAGE('Table'[Values]) )
原公式问题说明
你原公式CALCULATE(AVERAGE('Table'[Values]), CONTAINSSTRING('Table'[Month]) && 'Table'[Name])存在两个关键问题:
CONTAINSSTRING函数需要两个参数(待检查字符串、要匹配的子串),你只写了第一个参数,语法无效;'Table'[Name]没有逻辑判断条件,无法作为筛选器使用,导致筛选上下文不成立,所以得不到正确结果。
内容的提问来源于stack exchange,提问作者DorottyaB.H.
相关产品推荐
相关产品推荐

