如何将JSON文件中数据类型为“list”的列转换为Excel表?

km0tfn4u  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(145)

我有一堆JSON文件,我需要将它们转换为Excel表格。
我可以完成所有需要的步骤,但我在最后一步遇到了一个错误,即将具有“列表”数据类型的“标签”列转换为逗号分隔的值。


的数据



让我分享一个类似的JSON文件和屏幕截图的样本,以使大家都清楚这个问题:

{
    "color":"DEFAULT","isTrashed":false,
    "isPinned":false,
    "isArchived":false,
    "textContent":"Note's sample text",
    "title":"Note's Title",
    "userEditedTimestampUsec":1633783789813000,
    "createdTimestampUsec":1619811485384000,
    "labels":
    [
        {"name":"REF"},
        {"name":"2021"}
    ]
}

字符串
注意,我在YouTube上遵循许多教程,例如下面的链接[从3:35到5:10],但它以我的错误结束,而它与导师的工作正常。
https://youtu.be/C9rOUvWO7cM?t=216
我所期望的是将上述文件的所有列都放在一条记录中,并且对于嵌套变量,在同一条记录中以逗号分隔。

0sgqnhkj

0sgqnhkj1#

感谢您提供了一个示例来演示这个问题,并且是文本格式的,可以很容易地复制粘贴。
“标签”是RecordsList,其中标签本身具有name的字段名称。
但是您展示的用于提取值的代码假定List是一个文本字符串列表。
您可以通过直接在高级编辑器中编写M-Code来轻松地将标签提取为逗号分隔的字符串。
您应该能够使下面的代码适应您的数据。我做的唯一一件不是来自UI的事情是**in**语句之前的最后一行代码:

let
    Source = Json.Document(File.Contents("C:\Users\ron\Desktop\new.json")),
    #"Converted to Table" = Record.ToTable(Source),
    #"Transposed Table" = Table.Transpose(#"Converted to Table"),
    #"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{
        {"color", type text}, {"isTrashed", type logical}, {"isPinned", type logical}, 
        {"isArchived", type logical}, {"textContent", type text}, {"title", type text}, 
        {"userEditedTimestampUsec", Int64.Type}, {"createdTimestampUsec", Int64.Type}, {"labels", type any}}),

    #"Extract Labels" = Table.TransformColumns(#"Changed Type",{
        {"labels", each Text.Combine(List.Accumulate(_,{},(x,y)=> x & {y[name]}),","), type text}
    })
    
in
    #"Extract Labels"

字符串
x1c 0d1x的数据

相关问题