【问题标题】:Converting JSON into Table (PowerQuery)将 JSON 转换为表格 (PowerQuery)
【发布时间】:2021-02-16 09:09:29
【问题描述】:

从这个 Web JSON 中提取信息到表中的正确 PowerQuery 语法是什么: 我对 PowerQuery 不是很熟悉,这可能是我唯一需要它的时候,所以如果有人能在不参考文档的情况下帮助我,我将不胜感激。谢谢

[{"time_entry_group": {"minutes": 301,"time_entries_params": {"locked": "0","from": "2021-02-01","to": "2021-02-28","customer_id": "11223344","project_id": "223388","service_id": "435248"},"revenue": 57691.6666666667,"project_id": 223388,"project_name": "Scrb","service_id": 435248,"service_name": "Meetings","month": "202102"}}
, {"time_entry_group": {"minutes": 1175,"time_entries_params": {"locked": "1","from": "2021-01-01","to": "2021-01-31","customer_id": "11223344","project_id": "223388","service_id": "421393"},"revenue": 225208.333333333,"project_id": 223388,"project_name": "Scrb","service_id": 421393,"service_name": "Design","month": "202101"}}
, {"time_entry_group": {"minutes": 24,"time_entries_params": {"locked": "1","from": "2021-01-01","to": "2021-01-31","customer_id": "11223344","project_id": "3168911","service_id": "95033"},"revenue": 4600.0,"project_id": 3168911,"project_name": "youkn Dev","service_id": 95033,"service_name": "Reviews","month": "202101"}}]

【问题讨论】:

    标签: powerbi powerquery


    【解决方案1】:

    为了将来参考,如果您有需要展开的列,您可以改为单击列名称右侧的此箭头图标。单击它应显示一个菜单,然后该菜单应允许您指定要扩展或到达的嵌套列。需要明确的是,它将为该表中的所有行扩展该列,而不仅仅是一个。


    您包含的 JSON 基本上是一个对象数组,因此可以使用:

    1. Json.Document 解析 JSON,它应该会给你一个记录列表
    2. Table.FromRecords 将记录列表转换为表格。
    3. Table.ExpandRecordColumn 展开嵌套记录列。

    示例实现:

    let
        json = "[{""time_entry_group"":{""minutes"":301,""time_entries_params"":{""locked"":""0"",""from"":""2021-02-01"",""to"":""2021-02-28"",""customer_id"":""11223344"",""project_id"":""223388"",""service_id"":""435248""},""revenue"":57691.6666666667,""project_id"":223388,""project_name"":""Scrb"",""service_id"":435248,""service_name"":""Meetings"",""month"":""202102""}},{""time_entry_group"":{""minutes"":1175,""time_entries_params"":{""locked"":""1"",""from"":""2021-01-01"",""to"":""2021-01-31"",""customer_id"":""11223344"",""project_id"":""223388"",""service_id"":""421393""},""revenue"":225208.333333333,""project_id"":223388,""project_name"":""Scrb"",""service_id"":421393,""service_name"":""Design"",""month"":""202101""}},{""time_entry_group"":{""minutes"":24,""time_entries_params"":{""locked"":""1"",""from"":""2021-01-01"",""to"":""2021-01-31"",""customer_id"":""11223344"",""project_id"":""3168911"",""service_id"":""95033""},""revenue"":4600,""project_id"":3168911,""project_name"":""youkn Dev"",""service_id"":95033,""service_name"":""Reviews"",""month"":""202101""}}]",
        parsed = Json.Document(json),
        initialTable = Table.FromRecords(List.Transform(parsed, each [time_entry_group])),
        expanded = Table.ExpandRecordColumn(initialTable, "time_entries_params", {"locked", "from", "to", "customer_id"})
    in
        expanded
    

    关于上述代码的一件事是它不会扩展嵌套字段project_idservice_id(存在于time_entries_params 中)。这是因为这些列已经存在于表中(并且列名重复会导致错误)。我假设这不是问题,因为嵌套值没有什么不同。

    【讨论】:

    • 恐怕这是我缺少的部分。我有一个产生 3 条记录的查询,我可以单击(向下钻取)这些记录,每次向下钻取时,我都会获得一个新的应用步骤,但仅限于一条记录。但是如何让所有东西(两个杠杆)都显示为 2D 表格?我完全是这方面的初学者。
    • @Mara,已编辑我的答案,以提供扩展嵌套列的示例。
    • 完美,你拯救了我的一天!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 2015-09-02
    • 2013-07-02
    • 2019-12-12
    相关资源
    最近更新 更多