在 Power BI Desktop 中为数据集中的每一行导入 CSV
Import CSV for every row in a dataset in Power BI Desktop
我有一个包含地址的数据集。对于每个地址,我都会向地理编码服务发出网络请求。服务的响应是一个包含一行的 CSV 文件。如何将 CSV 中的数据添加到我的原始 table,并为每个地址重复此操作?
这是我的 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 响应的解决方案,也用于学习目的。
我添加了将二进制转换为 table 的自定义列,并提升了 headers,然后您可以随意访问所有列
我通过钻入其中一个来获得转换二进制文件的代码,它自动创建了我在自定义列
上使用的 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"
我有一个包含地址的数据集。对于每个地址,我都会向地理编码服务发出网络请求。服务的响应是一个包含一行的 CSV 文件。如何将 CSV 中的数据添加到我的原始 table,并为每个地址重复此操作?
这是我的 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 响应的解决方案,也用于学习目的。
我添加了将二进制转换为 table 的自定义列,并提升了 headers,然后您可以随意访问所有列 我通过钻入其中一个来获得转换二进制文件的代码,它自动创建了我在自定义列
上使用的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"