在Power BI Desktop中为数据集中的每一行导入CSV

时间:2020-01-03 10:14:07

标签: powerbi-desktop

我有一个带有地址的数据集。对于每种地址,我都会向地理编码服务发出网络请求。服务的响应是带有一行的CSV文件。如何将CSV中的数据添加到原始表中,并对每个地址重复此操作?

这是我的Power BI查询(包括使用地址创建数据集):

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("LY9ba4NAEIX/yuCzD3G9YB6VQKRNoFB6QcnD6E50m81YZldK/311m8c53+E7TNdFrx6ekJ3zgughi+EoMxseiaNL3EXlPkmeW8hVuD7IeZJeDN8giWGf7XII4LR4T9yTjKsIFLQ/s7UU0Bnl5iFJoBKe6B6yd+NQiPUmKVWqXho4kf11HnXglQyTuZMmZxEZihjSvMyg/oQ3LzRMPrQOQnSFFBpEsQ9zuxgNzTqOrL8tGd4mDsRbaQyNWrBH9kH8YPXshinAZAeFUns4Vv9/Vb02X1DA2WhNtl9kdVz+AA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [adres = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"adres", type text}}),
    #"Build URL" = Table.AddColumn(#"Changed Type", "URL", each "https://geodata.nationaalgeoregister.nl/locatieserver/v3/free?fq=type:adres&fl=*&rows=1&wt=csv&q=" & [adres]),
    #"Get Attributes" = Table.AddColumn(#"Build URL", "attrs", each Web.Contents([URL]))
in
    #"Get Attributes"

我设法使它可以切换到Web服务的JSON响应: https://gist.githubusercontent.com/FrieseWoudloper/68de3449287c9ed43ac4f140d3991e4c/raw/9be21d051e2645ee581d1b9567410b2e49b3c4b5/provinciehuis.txt

但是我很想知道CSV响应的解决方案,也出于学习目的。

1 个答案:

答案 0 :(得分:1)

我添加了自定义列,该列将二进制文件转换为带有提升标题的表,然后您可以根据需要访问所有列 我得到了通过钻入二进制文件之一来转换二进制文件的代码,它自动创建了我在自定义列上使用的Csv.Document语法

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("LY9ba4NAEIX/yuCzD3G9YB6VQKRNoFB6QcnD6E50m81YZldK/311m8c53+E7TNdFrx6ekJ3zgughi+EoMxseiaNL3EXlPkmeW8hVuD7IeZJeDN8giWGf7XII4LR4T9yTjKsIFLQ/s7UU0Bnl5iFJoBKe6B6yd+NQiPUmKVWqXho4kf11HnXglQyTuZMmZxEZihjSvMyg/oQ3LzRMPrQOQnSFFBpEsQ9zuxgNzTqOrL8tGd4mDsRbaQyNWrBH9kH8YPXshinAZAeFUns4Vv9/Vb02X1DA2WhNtl9kdVz+AA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [adres = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"adres", type text}}),
    #"Build URL" = Table.AddColumn(#"Changed Type", "URL", each "https://geodata.nationaalgeoregister.nl/locatieserver/v3/free?fq=type:adres&fl=*&rows=1&wt=csv&q=" & [adres]),
    #"Get Attributes" = Table.AddColumn(#"Build URL", "attrs", each Web.Contents([URL])),
    #"Added Custom" = Table.AddColumn(#"Get Attributes", "Custom", each Table.PromoteHeaders(Csv.Document([attrs],[Delimiter=",", Encoding=65001, QuoteStyle=QuoteStyle.None]))),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"attrs"}),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Removed Columns", "Custom", {"bron", "woonplaatscode", "type", "woonplaatsnaam", "wijkcode", "huis_nlt", "openbareruimtetype", "buurtnaam", "gemeentecode", "rdf_seealso", "weergavenaam", "suggest", "straatnaam_verkort", "id", "gekoppeld_perceel", "gemeentenaam", "buurtcode", "wijknaam", "identificatie", "openbareruimte_id", "waterschapsnaam", "provinciecode", "postcode", "provincienaam", "centroide_ll", "geometrie_ll", "nummeraanduiding_id", "waterschapscode", "adresseerbaarobject_id", "huisnummer", "provincieafkorting", "geometrie_rd", "centroide_rd", "straatnaam"}, {"Custom.bron", "Custom.woonplaatscode", "Custom.type", "Custom.woonplaatsnaam", "Custom.wijkcode", "Custom.huis_nlt", "Custom.openbareruimtetype", "Custom.buurtnaam", "Custom.gemeentecode", "Custom.rdf_seealso", "Custom.weergavenaam", "Custom.suggest", "Custom.straatnaam_verkort", "Custom.id", "Custom.gekoppeld_perceel", "Custom.gemeentenaam", "Custom.buurtcode", "Custom.wijknaam", "Custom.identificatie", "Custom.openbareruimte_id", "Custom.waterschapsnaam", "Custom.provinciecode", "Custom.postcode", "Custom.provincienaam", "Custom.centroide_ll", "Custom.geometrie_ll", "Custom.nummeraanduiding_id", "Custom.waterschapscode", "Custom.adresseerbaarobject_id", "Custom.huisnummer", "Custom.provincieafkorting", "Custom.geometrie_rd", "Custom.centroide_rd", "Custom.straatnaam"})
in
    #"Expanded Custom"