使用PowerQuery从列表内JSON记录提取逗号分隔值
解决PowerQuery中提取嵌套JSON记录列表为逗号分隔文本的问题
嘿,我之前在处理内部API返回的嵌套JSON时也碰到过一模一样的问题,给你分享几个直接能用的PowerQuery解法,专门搞定把driver_codes这个记录列表转成逗号分隔的列:
方法一:自定义列直接转换(最高效)
假设你已经把JSON数据加载到PowerQuery编辑器,并且有一列名为driver_codes,里面是包含code字段的记录列表(比如[{code: "HAM"}, {code: "VER"}]这种结构),按以下步骤操作:
- 点击添加列选项卡,选择自定义列
- 在弹出的公式编辑器里输入这段M语言代码:
if List.IsEmpty([driver_codes]) then null else Text.Combine(List.Transform([driver_codes], each [code]), ", ")
- 点击确定,新列就会自动把每个记录里的
code提取出来,合并成逗号分隔的文本
代码解释:
List.Transform([driver_codes], each [code]):遍历driver_codes列表里的每一条记录,提取出code字段的值,得到一个纯字符串列表(比如{"HAM", "VER"})Text.Combine(..., ", "):把字符串列表用逗号加空格连接成单个文本- 开头的
if List.IsEmpty判断是为了处理空列表的情况,避免报错
方法二:先展开再分组(适合需要查看中间步骤的场景)
如果你想先确认每个code的具体内容,也可以用展开+分组的方式:
- 选中
driver_codes列,点击转换选项卡的展开到新行,把每个记录拆成单独的行 - 再展开记录里的
code字段,得到一列单独的code值 - 选中
race_id列(或者你用来分组的唯一标识列),点击转换选项卡的分组依据,设置:- 分组依据:
race_id - 新列名:比如
driver_codes_combined - 操作:所有行,然后在自定义公式里用
Text.Combine([code], ", ")
- 分组依据:
这种方法更直观,但数据量大的时候效率不如第一种方法。
举个实际效果的例子:
原始
driver_codes列内容:[{code: "LEC"}, {code: "SAI"}, {code: "NOR"}]
处理后得到的文本:"LEC, SAI, NOR"
内容的提问来源于stack exchange,提问作者Grobsrop
相关产品推荐
相关产品推荐

