在DAX或Power BI中,如何筛选各分类最大值行以创建新表?
在Power BI/DAX中按分类最大值生成新表的方法
方法一:用SUMMARIZE直接生成聚合表
这是最简洁高效的方式,直接按分类分组并计算最大值:
新表 = SUMMARIZE( '原表', '原表'[Categories], "New_Values", MAX('原表'[Values]) )
执行后会直接得到你想要的结果:每个分类对应一行,New_Values列是该分类的最大值。
方法二:用FILTER筛选原表中的最大值行
如果你需要保留原表中所有等于分类最大值的行(比如某个分类有多个行都是最大值),可以结合你已经写的逻辑来筛选:
新表 = FILTER( '原表', '原表'[Values] = CALCULATE(MAX('原表'[Values]), ALLEXCEPT('原表', '原表'[Categories])) )
这个表达式会遍历原表每一行,判断当前行的Values是否等于其所属分类的最大值,符合条件的行将被保留到新表中。
注意事项
- 如果只需要每个分类一行的聚合结果,优先用方法一,性能更优;
- 如果要保留所有等于最大值的原始行,选择方法二。
内容的提问来源于stack exchange,提问作者p00ki
相关产品推荐
相关产品推荐

