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

Power Query动态列按参考日期列条件转0-1值的语法问题求助

错误定位

你遇到的报错是Table.TransformColumns的执行上下文限制导致的:该函数的列转换逻辑仅能获取当前列的单个单元格值,无法直接访问同一行的其他字段。你在转换函数中使用[Start Date]/[End Date]属于行字段访问操作,而当前上下文的_是单个日期/数值,对非记录类型的值执行字段访问自然会抛出类型不匹配错误。

正确实现方案

推荐使用List.Accumulate遍历动态列结合Table.ReplaceValue完成转换,该方案可以直接访问行上下文,代码简洁且适配动态列数量的需求:

// 获取所有需要转换的动态日期列名
DynamicDateColumns = FunctionToReturnListOfColumnNames(),
// 逐列完成0/1转换
Transformation = List.Accumulate(
    DynamicDateColumns,
    #"Previous step",
    (state, currentCol) => Table.ReplaceValue(
        state,
        each Record.Field(_, currentCol),
        each if [Start Date] <= _ and ([End Date] = null or [End Date] > _) then 1 else 0,
        Replacer.ReplaceValue,
        {currentCol}
    )
)

额外说明

如果你的动态日期列目前还是dd.MM.yyyy格式的文本,没有转换为日期类型,需要先加一步批量类型转换,避免比较逻辑出错:

// 批量将动态文本日期列转为date类型,指定de-DE区域适配dd.MM.yyyy格式
ConvertDateType = Table.TransformColumns(
    #"Previous step",
    List.Transform(FunctionToReturnListOfColumnNames(), each {_, (v) => Date.From(v, "de-DE"), type date})
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:27:05