Power Query M构建Final result列的逻辑匹配问题求助
Power Query M 构建Final Result列的解决方案
问题根源
你第一段代码的核心错误是筛选逻辑的上下文引用错误:Table.SelectRows(#"PromotedHeaders", each [ID] = [corr_ID])里的[corr_ID]指的是筛选过程中遍历到的表行的corr_ID,不是当前正在计算Final Result列的那一行的corr_ID,导致筛选条件完全偏离预期,自然匹配不到结果。
正确的M代码实现
添加自定义列时,使用以下代码:
let currentType = [Type], currentCorrID = [corr_ID], currentValue = [Value] in if currentType = "type 2" then currentValue else if currentType = "type 1" then try Table.SelectRows(#"PromotedHeaders", each [ID] = currentCorrID){0}[Value] otherwise null else null
关键修改点
- 先把当前行的
Type、corr_ID、Value存为变量,避免筛选时上下文混淆 - 保留
try...otherwise,防止corr_ID找不到对应ID时触发报错 - 明确用当前行的corr_ID变量(
currentCorrID)作为筛选条件,匹配目标ID行
额外排查步骤
如果还是无法匹配,可做以下验证:
- 检查ID和corr_ID的数据类型:比如一个是数字、一个是文本,即使显示内容一致也无法匹配。可统一转文本后比较,修改筛选条件为
each Text.From([ID]) = Text.From(currentCorrID) - 单条测试:针对某一行的具体corr_ID值,手动写
Table.SelectRows(#"PromotedHeaders", each [ID] = "你的corr_ID值"),看是否能返回正确行
内容的提问来源于stack exchange,提问作者A.carillon
相关产品推荐
相关产品推荐

