Power BI中基于列min值回溯对应数据至新列的方案咨询
Power BI 解决方案:基于最小值回溯对应数据
假设你的表格名为Table,用于筛选分组的列叫筛选列,存储待求最小值的列是数值列,你要获取对应值的列是目标列(比如示例中对应66的列)。
方法1:用DAX创建计算列
如果要直接在表格里新增一列存储结果,用以下DAX表达式:
对应最小值的目标列 = VAR 当前分组 = [筛选列] VAR 组内最小值 = CALCULATE(MIN('Table'[数值列]), ALLEXCEPT('Table', 'Table'[筛选列])) RETURN CALCULATE(MAX('Table'[目标列]), FILTER('Table', 'Table'[筛选列] = 当前分组 && 'Table'[数值列] = 组内最小值))
关键逻辑说明:
VAR 当前分组:获取当前行所属的筛选分组值VAR 组内最小值:计算当前分组下数值列的最小值,ALLEXCEPT函数确保只保留筛选列的分组上下文,排除其他筛选干扰- 最后通过
FILTER定位同组内数值等于最小值的行,返回对应的目标列值(用MAX是避免同一组存在多个相同最小值时返回不唯一的结果,若你能确定每组最小值唯一,用MIN也可行)
方法2:用Power Query(查询编辑器)处理
要是想在数据加载阶段完成处理,用Power Query步骤如下:
- 选中目标表格,进入查询编辑器
- 点击开始选项卡的分组依据,按
筛选列分组,操作选择所有行,将分组结果列命名为分组数据 - 添加自定义列,输入以下表达式:
List.Select([分组数据], each [数值列] = List.Min([分组数据][数值列])){0}[目标列]
- 若不需要保留
分组数据列,可右键将其删除,最后点击关闭并应用
关键逻辑说明:
- 先按筛选列分组,找到每组
数值列的最小值 - 用
List.Select筛选出组内数值等于最小值的行,取第一行的目标列值作为结果
替换上述代码里的表格名和列名后,就能得到你示例中期望的66这类对应值。
内容的提问来源于stack exchange,提问作者ABHISHEK KUMAR
相关产品推荐
相关产品推荐

