PowerQuery导入XML数据:将嵌套表列合并至单个单元格
PowerQuery将XML导入后的Table列转为字符串数组单元格
导入XML数据后,表中guid和toExpand两列是Table类型,需求是把这两个Table列转换成包含字符串数组的单元格(格式如[str, str,..]),而非展开成多行记录。
修改后的完整查询代码
let Source = Xml.Tables(Web.Contents("https://patentscope.wipo.int/search/en/92ec30a9-24ed-4383-b1aa-7b76748f6266/rss.xml")), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Attribute:version", Int64.Type}}), channel = #"Changed Type"{0}[channel], #"Changed Type1" = Table.TransformColumnTypes(channel,{{"title", type text}, {"link", type text}, {"description", type text}, {"language", type text}, {"pubDate", type datetime}, {"lastBuildDate", type datetime}}), item = #"Changed Type1"{0}[item], #"Changed Type2" = Table.TransformColumnTypes(item,{{"title", type text}, {"link", type text}, {"description", type text}, {"pubDate", type datetime}}), // 将guid列的Table转为字符串数组 #"Transform guid to Array" = Table.AddColumn(#"Changed Type2", "guid_Array", each List.Transform([guid], (t) => Table.Column(t, "text")){0}), // 将toExpand列的Table转为字符串数组 #"Transform toExpand to Array" = Table.AddColumn(#"Transform guid to Array", "toExpand_Array", each List.Transform([toExpand], (t) => Table.Column(t, "text")){0}), // 删除原Table类型的列(可选,根据需求保留) #"Remove Original Table Columns" = Table.RemoveColumns(#"Transform toExpand to Array", {"guid", "toExpand"}) in #"Remove Original Table Columns"
关键逻辑说明
- 提取Table中的字符串列表:
List.Transform([guid], (t) => Table.Column(t, "text"))会遍历单元格内的Table,提取其中的text字段(XML解析后的Table通常用text存储实际内容,若你的Table字段名不同,替换成对应名称即可),最终通过{0}取出内层的字符串数组。 - 替换或保留原列:
代码中通过新增列存储数组,你也可以直接用Table.ReplaceValue覆盖原guid/toExpand列;最后删除原Table列是可选操作,按需保留即可。
内容的提问来源于stack exchange,提问作者seaxe
相关产品推荐
相关产品推荐

