You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query多列批量应用自定义计算函数问题排查

问题分析与解决方案

你的代码核心问题出在参数传递错误和转换逻辑格式不符要求,具体如下:

  • 调用ApplyCalculation时用了_[Column1],这是无效引用,应该取当前要处理的数值列对应的值
  • Record.TransformFields的参数格式错误,它需要的是{字段名, 转换函数}的列表结构,而非[Name=..., Value=...]的格式
  • 最终只生成了嵌套的计算列,没有展开为可见的独立列,导致看起来计算未生效

修正后的完整代码

let
    // 定义计算函数(原逻辑无需修改)
    ApplyCalculation = (value, Percentage1, Percentage2) =>
        if value > 1 then ((value - 1) * Percentage1) + 1
        else 1 - ((1 - value) * Percentage2),
    
    Source = #"Rates Table",
    #"Merged Queries" = Table.NestedJoin(Source, {"MONTH"}, #"Contract Details", {"Month"}, "Contract Details", JoinKind.Inner),
    #"Expanded Contract Details" = Table.ExpandTableColumn(#"Merged Queries", "Contract Details", {"Percentage 1", "Percentage 2"}, {"Percentage 1", "Percentage 2"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Expanded Contract Details",{"DNO", "MONTH", "DATE", "Percentage 1", "Percentage 2", "1", "2", "3"}),
    
    // 批量生成计算列的核心逻辑
    // 1. 定义要处理的数值列名列表(示例为"1"到"3",实际改为"1"到"50"即可)
    ValueColumns = List.Transform({1..3}, each Text.From(_)),
    // 2. 对每行应用计算,生成包含所有计算后字段的记录
    AddCalculatedRecords = Table.AddColumn(#"Reordered Columns", "Calculated", each
        Record.TransformFields(
            _,
            List.Transform(ValueColumns, (colName) => 
                {colName & "_Calculated", (currentValue) => ApplyCalculation(_[colName], [Percentage 1], [Percentage 2])}
            )
        )
    ),
    // 3. 展开所有计算后的列,使其成为独立可见列
    ExpandedCalculated = Table.ExpandRecordColumn(AddCalculatedRecords, "Calculated", List.Transform(ValueColumns, each _ & "_Calculated"))
in
    ExpandedCalculated

关键修正点说明

  1. 参数传递修正:用_[colName]获取当前行对应数值列的值,替代原错误的_[Column1]
  2. Record.TransformFields格式修正:每个转换项改为{新字段名, 转换函数}的格式,确保计算函数能正确接收参数
  3. 展开计算列:新增Table.ExpandRecordColumn步骤,将嵌套在"Calculated"列中的计算结果展开为独立列,直接呈现生效后的数值

如果要处理50列,仅需把代码中的{1..3}修改为{1..50}即可,无需调整其他逻辑。

内容的提问来源于stack exchange,提问作者Benedict Landauer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:55:29