Power Query:不新增外部列,为嵌套表添加外部字段
解决方案
要直接修改「Content」列中的嵌套表,添加取外部表「Name」值的新列,关键是在Table.TransformColumns的转换逻辑中捕获外部表行的上下文,避免嵌套表层级的上下文覆盖外层字段。
方法一:通过let绑定外层字段
使用let语句先存储当前行的「Name」值,再在嵌套表的新增列逻辑中引用这个变量:
= Table.TransformColumns(Step-1, { {"Content", (nestedTable) => let // 捕获外部表当前行的Name值 outerFileName = [Name] in // 给嵌套表添加新列,值为外层的Name Table.AddColumn(nestedTable, "FileName", each outerFileName) } })
方法二:使用带行参数的转换函数
Table.TransformColumns的转换函数支持第二个参数(代表当前行的完整记录),直接通过这个参数访问「Name」字段:
= Table.TransformColumns(Step-1, { {"Content", (currentNestedTable, currentRow) => Table.AddColumn(currentNestedTable, "FileName", each currentRow[Name]) }, Replacer.ReplaceValue })
原理说明
你之前尝试时无法获取外层「Name」,是因为嵌套表Table.AddColumn中的(x)=>[Name]处于嵌套表行的上下文,访问的是嵌套表自身行的字段。而上面两种写法都是先在外层(外部表行的上下文)捕获「Name」值,再传递给嵌套表的新增列逻辑,从而正确获取外部表的「Name」。
内容的提问来源于stack exchange,提问作者Stefano Verugi
相关产品推荐
相关产品推荐

