在 PowerBI 中将 json 列表记录转换为 Table 值

Convert json List Record to Table value in PowerBI

我是 Power BI 的新手,所以我尝试了不同的方法将我的 JSON 文件转换为 table 但到目前为止没有成功。

{
    "Family": [
        {
            "Father": "F1",
            "Age": 50,
            "Mother": "M1",
            "MAge": 49,
            "Children": [
                {
                    "Name": "C1"
                },
                {
                    "Name": "C2"
                }
            ]
        },
        {
            "Father": "F2",
            "Age": 55,
            "Mother": "M2",
            "MAge": 53,
            "Children": [
                {
                    "Name": "Cc1"
                },
                {
                    "Name": "Cc2"
                }
            ]
        }
    ]
}

我正在尝试将其转换为下面的 table

Father    Age      Mother    MAge
F1         50        M1        49

F2         55        M2        53

我试过像转换 table 和转置一样不起作用我总是得到像

这样的错误

Expression.Error: We cannot convert a value of type Record to type

我缺少 ExpandRecordColumn 函数的步骤。在我把它放在我的查询中之后。成功了。

let
    Source = Json.Document(File.Contents("C:\Users\hp\Desktop\File.JSON")),
    Family = Source[Family],
    #"Converted to Table" = Table.FromList(Family, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"Father", "Age", "Mother", "MAge", "Children"}, {"Father", "Age", "Mother", "MAge", "Children"})
in
    #"Expanded Column1"

让我为那些不想编写 Power Query 而只是使用 Power BI 用户界面 (Desktop/Web) 的人分享一个分步指南。

  1. 打开 Power BI Desktop

  2. 获取数据更多...→SelectJSON 从列表中单击“连接”(您也可以使用 WEB API 或其他为您提供 JSON 数据的来源)

  3. 选择 JSON 文件并打开它。

  4. 在数据面板中,您会看到 Family|List。单击 列表 link 添加导航步骤。

  5. 从转换选项卡中,单击 到 Table,然后从对话框中单击 确定

  6. 在“Column1”的 header 中,单击 Expand columns 按钮 以展开列,然后从菜单中,取消选中 使用原始列名称作为前缀 并选中所需的列,然后单击“确定”。

  7. 您将看到 table 格式的列和数据。您可以通过单击数据类型按钮 .

    来更改列的数据类型

最后你会得到这样的东西:

最后,如果您想查看生成的查询,请单击 高级编辑器 按钮并查看代码:

let
    Source = Json.Document(File.Contents("C:\Users\rag\Desktop\data.json")),
    Family = Source[Family],
    #"Converted to Table" = Table.FromList(Family, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"Father", "Age", "Mother", "MAge"}, {"Father", "Age", "Mother", "MAge"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Expanded Column1",{{"Age", type number}, {"MAge", type number}})
in
    #"Changed Type"

更多信息: