【问题标题】:Convert json List Record to Table value in PowerBI将 json 列表记录转换为 PowerBI 中的表值
【发布时间】:2020-12-28 14:57:31
【问题描述】:

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

{
    "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"
                }
            ]
        }
    ]
}

我正在尝试将其转换为下表

Father    Age      Mother    MAge
F1         50        M1        49

F2         55        M2        53

我尝试过转换表和转置,但它不起作用我总是收到类似的错误

Expression.Error: 我们无法将 Record 类型的值转换为类型

【问题讨论】:

    标签: json powerbi powerbi-desktop


    【解决方案1】:

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

    1. 打开 Power BI Desktop

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

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

    4. 在数据面板中,您会看到家庭|列表。点击列表链接添加导航步骤。

    5. 在转换选项卡中,点击To Table,然后在对话框中点击OK

    6. 从“Column1”的标题中,单击展开列按钮以展开列,然后从菜单中取消选中使用原始列名作为前缀并选中您想要的列,然后单击“确定”。

    7. 您将看到表格格式的列和数据。您可以通过点击数据类型按钮更改列的数据类型。

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

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

    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"
    

    更多信息:

    【讨论】:

      【解决方案2】:

      我错过了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"
      

      【讨论】:

      • 我添加了一个答案来展示如何在 UI 中逐步完成。 +1
      猜你喜欢
      • 2019-11-10
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 2019-09-21
      相关资源
      最近更新 更多