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

能否在Power Query M中新增线性插值计算的利率列?

实现步骤

1. 预处理利率基准表(表1)

首先把你已经导入Power Query的表1重命名为利率基准表,按营业日升序排序,M代码参考:

let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    更改类型 = Table.TransformColumnTypes(源,{{"BusinessDays", Int64.Type}, {"InterestRate", type number}}),
    按营业日升序排序 = Table.Sort(更改类型,{{"BusinessDays", Order.Ascending}})
in
    按营业日升序排序

该步骤确保利率基准点按天数从小到大排列,是后续插值计算的前提。

2. 创建线性插值自定义函数

新建空白查询,命名为fx_利率插值,粘贴以下代码:

(待插值天数 as number) as number =>
let
    // 引用已排序的利率基准表
    基准表 = 利率基准表,
    // 提取小于等于待插值天数的最大基准点
    前序点 = Table.Last(Table.SelectRows(基准表, each [BusinessDays] <= 待插值天数)),
    // 提取大于等于待插值天数的最小基准点
    后序点 = Table.First(Table.SelectRows(基准表, each [BusinessDays] >= 待插值天数)),
    // 计算插值结果,同步处理边界情况:待插值天数超出基准范围时取最近端点利率,刚好落在基准点时直接取值
    结果 = if 前序点[BusinessDays] = 后序点[BusinessDays] then 前序点[InterestRate]
           else 前序点[InterestRate] + (后序点[InterestRate] - 前序点[InterestRate]) * (待插值天数 - 前序点[BusinessDays]) / (后序点[BusinessDays] - 前序点[BusinessDays])
in
    结果

3. 为表2添加插值利率列

打开表2对应的查询,调用上述自定义函数生成新列即可,参考代码:

let
    源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
    更改类型 = Table.TransformColumnTypes(源,{{"InstrumentID", type text}, {"BusinessDays", Int64.Type}}),
    添加插值利率列 = Table.AddColumn(更改类型, "InterpolatedInterestRate", each fx_利率插值([BusinessDays]))
in
    添加插值利率列

注意事项

  • 如果基准表存在空值、错误值,可在预处理步骤通过Table.RemoveRowsWithErrors、Table.Fill等函数提前清理,避免插值报错
  • 如需使用三次样条等其他插值逻辑,仅需修改fx_利率插值函数中的结果计算部分即可

内容的提问来源于stack exchange,提问作者rafael ventura

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:36:03