作为我为团队创建的工具的一部分,我通过 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)