如何将嵌套 JSON 有效负载的最深层元素转换为 Power Query 中的单独行?
Posted
技术标签:
【中文标题】如何将嵌套 JSON 有效负载的最深层元素转换为 Power Query 中的单独行?【英文标题】:How can I turn the deepest elements of nested JSON payload into individual rows in Power Query? 【发布时间】:2016-06-09 01:41:45 【问题描述】:目标: 我有一个 JSON 有效负载,格式如下:
"Values": [
"Details":
"14342":
"2016-06-07T00:00:00":
"Value": 99.62,
"Count": 7186
,
"2016-06-08T00:00:00":
"Value": 99.73,
"Count": 7492
,
"14362":
"2016-06-07T00:00:00":
"Value": 97.55,
"Count": 1879
,
"2016-06-08T00:00:00":
"Value": 92.68,
"Count": 355
,
"Key": "query5570027",
"Total": 0.0
,
"Details":
"14342":
"2016-06-07T00:00:00":
"Value": 0.0,
"Count": 1018
,
"2016-06-08T00:00:00":
"Value": 0.0,
"Count": 1227
,
"Key": "query4004194",
"Total": 0.0
],
"LatencyInMinute": 0.0
我想在 PowerBI 中加载它并生成如下表格:
请注意每个 Value + Count 对都有自己的行,并且一些元素是重复的。
问题:当我尝试在 Power BI 中执行此操作(通过 Power Query)时,我得到三个初始列,其中之一是详细信息。麻烦的是我可以展开详细信息,但我只是得到更多的列,我真正想要的是行。我尝试了转置、旋转列等,但没有任何帮助。 Power Query 将嵌套数据元素视为列名,这加剧了我的麻烦。
问题:有没有办法在 M 中将此嵌套的 JSON 有效负载转换为我上面说明的表格示例?
【问题讨论】:
【参考方案1】:Chris Webb 编写了一个递归函数来扩展所有表类型的列 - 我已经成功地为记录类型的列克隆了它:
https://gist.github.com/Mike-Honey/0a252edf66c3c486b69b
【讨论】:
【参考方案2】:如果您使用 Record.FromList 进行扩展,它应该可以工作。
您可以在此处找到脚本中的示例:https://chris.koester.io/wp-content/uploads/2016/04/TransformJsonArrayWithPowerQueryImkeFeldmann.txt
【讨论】:
以上是关于如何将嵌套 JSON 有效负载的最深层元素转换为 Power Query 中的单独行?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JQ 转换此 JSON 数据以依次将每个嵌套数组元素提取到顶层?
如何使用带有 Kotlin 的 Gson 库访问 JSON 有效负载中的嵌套值
如何在 Spring Boot 和 RabbitMQ 中配置和接收并将 jSON 有效负载转换为域对象