如何在PowerBI DAX中计算每行平均值及指定行全列平均值?
PowerBI DAX 问题解决方案
1. 各地点下Category 1-5的每行平均值
直接用AVERAGE或AVERAGEA失效的原因是:这两个函数默认对列做纵向聚合,而非行内多列的横向平均。需要用迭代函数处理行内的列值集合:
计算列写法(添加到目标表中)
每行Category平均值 = AVERAGEX( {[Category 1], [Category 2], [Category 3], [Category 4], [Category 5]}, [Value] )
如果需要将空值视为0参与计算,改用AVERAGEA:
每行Category平均值 = AVERAGEA( {[Category 1], [Category 2], [Category 3], [Category 4], [Category 5]} )
关键说明
{[列1], [列2]...}会生成当前行所有Category值的临时数组AVERAGEX遍历数组计算非空值的平均;AVERAGEA会把空值转为0后计算
2. 计算第10行所有列的平均值
PowerBI中“第10行”需明确排序规则,先定位目标行再计算多列平均:
度量值写法(用于报表可视化)
第10行平均值 = VAR TargetRow = TOPN( 1, OFFSET(9, ALL('你的表名'), ORDERBY('你的表名'[Location], ASC)), '你的表名'[Location], ASC ) RETURN AVERAGEX( { MAXX(TargetRow, [Category 1]), MAXX(TargetRow, [Category 2]), MAXX(TargetRow, [Category 3]), MAXX(TargetRow, [Category 4]), MAXX(TargetRow, [Category 5]) }, [Value] )
关键说明
OFFSET(9, ...)跳过前9行(索引从0开始),定位到第10行TOPN(1, ...)提取该行的完整记录MAXX(TargetRow, [列名])获取目标行对应列的值,再通过AVERAGEX计算这些值的平均- 替换
'你的表名'和排序字段[Location]为实际表名和排序依据
内容的提问来源于stack exchange,提问作者Hamza Ijaz
相关产品推荐
相关产品推荐

