Power BI/DAX技术求助:按列1-7分组获取最高销售额人员
按列1-7分组获取每组销售额最高人员的Power BI解决方案
方法一:Power Query 分组处理
你之前用GroupBy没成功,大概率是没用到自定义操作匹配人员。按以下步骤操作:
- 选中数据表里的列1到列7,点击「开始」选项卡的「分组依据」
- 切换到「高级」模式:
- 依次添加列1至7作为分组依据
- 添加第一个聚合列:命名为
最高销售额,操作选「最大值」,对应列选「销售额」 - 添加第二个聚合列:命名为
对应人员,操作选「自定义」,输入M代码:Table.SelectRows(_, each [销售额] = [最高销售额])[人员]{0}
- 点击确定后,就能得到每组销售额最高的人员(如果有并列最高,代码里的
{0}会取第一个,要保留所有并列人员就去掉{0})
方法二:DAX 计算列/度量值
计算列(直接在数据表中生成结果)
新建计算列,替换表名为你的实际表名:
销售额最高人员 = VAR 当前分组 = SELECTCOLUMNS( '表名', "列1", '表名'[列1], "列2", '表名'[列2], "列3", '表名'[列3], "列4", '表名'[列4], "列5", '表名'[列5], "列6", '表名'[列6], "列7", '表名'[列7] ) VAR 组内最高销售额 = CALCULATE( MAX('表名'[销售额]), FILTER( ALL('表名'), '表名'[列1] = 当前分组[列1] && '表名'[列2] = 当前分组[列2] && '表名'[列3] = 当前分组[列3] && '表名'[列4] = 当前分组[列4] && '表名'[列5] = 当前分组[列5] && '表名'[列6] = 当前分组[列6] && '表名'[列7] = 当前分组[列7] ) ) VAR 对应人员列表 = CALCULATETABLE( VALUES('表名'[人员]), FILTER( '表名', '表名'[销售额] = 组内最高销售额 && '表名'[列1] = 当前分组[列1] && '表名'[列2] = 当前分组[列2] && '表名'[列3] = 当前分组[列3] && '表名'[列4] = 当前分组[列4] && '表名'[列5] = 当前分组[列5] && '表名'[列6] = 当前分组[列6] && '表名'[列7] = 当前分组[列7] ) ) RETURN CONCATENATEX(对应人员列表, [人员], ", ")
这个计算列会自动把每组并列最高销售额的人员用逗号分隔显示。
度量值(适合可视化场景)
如果需要在矩阵、表格等视觉对象中动态展示,新建度量值:
组内最高销售额人员 = VAR 当前分组 = SUMMARIZE( ALLSELECTED('表名'), '表名'[列1], '表名'[列2], '表名'[列3], '表名'[列4], '表名'[列5], '表名'[列6], '表名'[列7] ) VAR 组内最高销售额 = MAXX(当前分组, CALCULATE(MAX('表名'[销售额]))) VAR 对应人员列表 = CALCULATETABLE( VALUES('表名'[人员]), FILTER( '表名', '表名'[销售额] = 组内最高销售额 ) ) RETURN CONCATENATEX(对应人员列表, [人员], ", ")
使用时把列1-7拖到视觉对象的行区域,再拖入这个度量值即可。
内容的提问来源于stack exchange,提问作者Cutie
相关产品推荐
相关产品推荐

