You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Power BI中读取深层JSON层级:GeoJSON数据转换问题

解决Power Query提取GeoJSON所有Feature属性的问题

我明白你现在的困扰啦——原来的代码只处理了GeoJSON里的第一条Feature,没法批量提取所有记录的properties。问题其实出在你硬指定了取第一条记录(#"Converted to Table"{0}[Column1]),咱们只需要调整逻辑,让Power Query遍历所有Feature并提取它们的properties就行。

修改后的完整M代码

let
    Source = Json.Document(File.Contents(".\projekter.api.geojson")),
    features = Source[features],
    #"Converted to Table" = Table.FromList(features, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    // 遍历每一行的Feature,提取对应的properties记录
    #"Extracted Properties" = Table.TransformColumns(#"Converted to Table", {
        {"Column1", each _[properties], type record}
    }),
    // 展开所有properties字段为数据表列
    #"Expanded Properties" = Table.ExpandRecordColumn(#"Extracted Properties", "Column1", 
        {"ProjectNr", "ProjectName", "ProjektNavn", "ProjektBeskrivelse", "AnlaegsBeloeb", "BudgetUdgift", "BudgetIndtaegt", "BudgetAar", "ProjektlederNavn", "ForventetAnlaegStart", "ForventetAnlaegSlut", "ForventetProjekteringStart", "ForventetProjekteringSlut", "ProjektfaseBetegnelse", "ProjektkategoriBetegnelse", "ProjekttypeBetegnelse", "StrategiBetegnelse", "HjemmesideLink"},
        {"ProjectNr", "ProjectName", "ProjektNavn", "ProjektBeskrivelse", "AnlaegsBeloeb", "BudgetUdgift", "BudgetIndtaegt", "BudgetAar", "ProjektlederNavn", "ForventetAnlaegStart", "ForventetAnlaegSlut", "ForventetProjekteringStart", "ForventetProjekteringSlut", "ProjektfaseBetegnelse", "ProjektkategoriBetegnelse", "ProjekttypeBetegnelse", "StrategiBetegnelse", "HjemmesideLink"}),
    // 保留你原来的列类型转换逻辑
    #"Changed Type" = Table.TransformColumnTypes(#"Expanded Properties",{{"ProjektNr", type text}, {"ProjektNavn", type text}, {"ProjektBeskrivelse", type text}, {"AnlaegsBeloeb", Int64.Type}, {"BudgetUdgift", Int64.Type}, {"BudgetIndtaegt", Int64.Type}, {"BudgetAar", Int64.Type}, {"ProjektlederNavn", type text}, {"ForventetAnlaegStart", type datetime}, {"ForventetAnlaegSlut", type datetime}, {"ForventetProjekteringStart", type datetime}, {"ForventetProjekteringSlut", type datetime}, {"ProjektfaseBetegnelse", type text}, {"ProjektkategoriBetegnelse", type text}, {"ProjekttypeBetegnelse", type text}, {"StrategiBetegnelse", type text}, {"HjemmesideLink", type text}})
in
    #"Changed Type"

关键调整说明

  • 去掉了原来硬取第一条记录的步骤,改用Table.TransformColumns遍历每一行的Feature,自动提取每个Feature的properties记录。
  • 用Table.ExpandRecordColumn把所有properties里的字段展开成数据表的列(如果你的GeoJSON有新增属性,记得在这个步骤里补充对应的字段名)。
  • 最后保留了你原来的类型转换逻辑,保证数据格式符合需求。

这样处理后,所有Feature的properties都会被提取成数据表的一行,完美解决你只能生成单行的问题~

内容的提问来源于stack exchange,提问作者Pengman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:03:33