如何将嵌套 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 有效负载转换为域对象

如何将 JSON 属性值转换为键和值数组

如何使用 Jersey 将嵌套列表编组为 JSON?我得到一个空数组或一个包含数组的单元素字典数组

将 Data.ByteString.Lazy 转换为 CStringLen 的最有效方法