Power Query嵌套函数与IF语句问题:为嵌套表添加带条件的自定义列
Power Query嵌套函数与IF语句问题:为嵌套表添加带条件的自定义列
兄弟我懂你这种嵌套表变量搞不清的痛苦!Power Query的上下文和作用域确实容易绕晕,尤其是嵌套处理的时候。咱们一步步来搞定这个需求:给嵌套表加个「Hybrid Value」列,当ID等于「Meyuadot」时就取「AlutMufchetetColumn」的值对吧?
先帮你梳理下问题根源:你之前的代码里错误引用了外层表的字段名,而且没明确嵌套表的行上下文,导致变量和作用域混乱。下面直接给你修正后的代码,再拆解每部分的逻辑:
ShoviHibrid = let X = Table.FromRecords(Table.TransformRows(IDandKvutsa, (outerRow) => Record.TransformFields(outerRow, {{"CSV Table With ID and Kvutsa", (nestedTable) => Table.AddColumn(nestedTable, "Hybrid Value", each if [ID] = "Meyuadot" then [AlutMufchetetColumn] else null) }})) in X
代码逻辑拆解:
(outerRow):给外层表的每一行起个明确的名字,避免和嵌套表的行上下文混淆(nestedTable):把当前外层行里的嵌套表单独赋值,清晰指明我们要处理的是这个子表Table.AddColumn(nestedTable, "Hybrid Value", ...):针对每个嵌套表添加新列,each代表嵌套表的当前行,所以[ID]和[AlutMufchetetColumn]都是嵌套表行内的字段if [ID] = "Meyuadot" then [AlutMufchetetColumn] else null:完全贴合你的需求,不符合条件的行我默认设为null,你可以根据实际需要改成空字符串或其他默认值
另外补充:如果你的实际需求是ID包含某个字符串(比如你提到的"AlutMuf"),只需要把判断条件改成Text.Contains([ID], "AlutMuf")就行,灵活调整很方便。
备注:内容来源于stack exchange,提问作者POL
相关产品推荐
相关产品推荐

