小编Gro*_*rop的帖子

使用 PowerQuery 从列表中的 JSON 记录中提取逗号分隔值

作为我为团队创建的工具的一部分,我通过 PowerQuery 连接到内部 Web 服务。

Web 服务返回嵌套的 JSON,但我无法将 JSON 数据解析为我正在寻找的格式。具体来说,我在将列中的记录内容提取到逗号分隔列表时遇到问题。

数据

在此输入图像描述

正如您所看到的,数据包含与特定“种族”相关的详细信息 ( race_id)。driver_codes我想关注的是记录列表中的信息。记录数量从 0 到 4 不等,每条记录的结构为id: 50000(50000 可以是任何 5 位数字)。所以它可能是:

id: 10000 id: 20000 id: 30000

根据要求,原始 JSON 的示例片段:

<race>
    <race_id>ABC123445</race_id>
    <begin_time>2018-03-23T00:00:00Z</begin_time>
    <vehicle_id>gokart_11</vehicle_id>
    <driver_code>
        <id>90200</id>
    </driver_code> 
    <driver_code>
        <id>90500</id>
    </driver_code>
</race>
Run Code Online (Sandbox Code Playgroud)

我希望它的结构如下:

10000,20000,30000
Run Code Online (Sandbox Code Playgroud)

问题

当我在列表列上选择“提取值”时,我收到以下消息:

Expression.Error:我们无法将 Record 类型的值转换为 Text 类型。

如果我选择“扩展到新行”,则会为每个唯一的驱动程序代码创建重复的行。我现在每个唯一的race_id 有几行,但我想要的是每个唯一的race_id 一行和驱动程序代码的串联列表。

我尝试过的

我尝试过按race_id 对数据进行分组,但分组数据时允许的操作不包括连接行。

我也尝试过取消旋转该列,但这给我带来了同样的问题:我仍然得到多行。

我已经用谷歌搜索了(并且堆栈溢出)这个问题,但没有运气。然而,我可能使用了错误的关键字,所以如果存在重复的关键字,我深表歉意。

更新:到目前为止我根据答案尝试过的内容

我尝试了 Alexis Olson 的出色且非常详细的方法,但最终出现以下错误:

Expression.Error:我们无法将值“id”转换为 Number 类型。细节:

值=id 类型=类型

该错误来自于使用以下任一 M 代码行(一行带有 List.Transform,另一行不带):

= Table.Group(#"Renamed …
Run Code Online (Sandbox Code Playgroud)

json list record powerquery

2
推荐指数
1
解决办法
6421
查看次数

标签 统计

json ×1

list ×1

powerquery ×1

record ×1