在《如何在一分钟内获取最新最全的全国行政区划信息》中,我提到如何在一分钟内获取全国最新最全的行政区划信息。
那个帖子需要访问民政局网站,找到最新的行政区划信息链接,然后放到powerbi中,再刷新获取信息。
这对于终极懒人来说,还不够偷懒。所以又用了另外一种全自动方法来获取区划信息:
直接在powerbi中调用这个fnGetDistrict()函数,就可以获取到最新的全国行政区划信息了。
代码如下所示。使用方法是复制全部代码到powerbi的空查询中,再重命名即可,之后直接调用此函数,就获得了最新的行政区划信息。
= () => let
current_year = Date.Year(DateTime.FixedLocalNow()),
Source = Lines.FromText(Web.BrowserContents("http://www.mca.gov.cn/article/sj/xzqh/"&Text.From(current_year))),
转换为表 = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
筛选的行 = Table.SelectRows(转换为表, each Text.Contains([Column1], "行政区划代码") and Text.Contains([Column1], "<table")),
按分隔符拆分列 = Table.ExpandListColumn(Table.TransformColumns(筛选的行, {{"Column1", Splitter.SplitTextByDelimiter("<td", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Column1"),
筛选的行1 = Table.SelectRows(按分隔符拆分列, each Text.Contains([Column1], "行政区划代码")),
保留的第一行 = Table.FirstN(筛选的行1,1),
自定义1 = Table.TransformColumns(保留的第一行,{"Column1",each "http://www.mca.gov.cn"&Text.BetweenDelimiters(_,"href="," target=")}),
url = Table.RenameColumns(自定义1,{{"Column1", "url"}}),
data = Web.Page(Web.BrowserContents(url[url]{0})),
#"Expand Table" =data{0}[Data],
#"Removed Top Rows" = Table.Skip(#"Expand Table",1),
#"Promoted Headers" = Table.PromoteHeaders(#"Removed Top Rows", [PromoteAllScalars=true]),
#"Removed Other Columns" = Table.SelectColumns(#"Promoted Headers",{"行政区划代码", "单位名称"}),
#"Changed Type" = Table.TransformColumnTypes(#"Removed Other Columns",{{"行政区划代码", Int64.Type}}),
#"Removed Errors" = Table.RemoveRowsWithErrors(#"Changed Type", {"行政区划代码"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Removed Errors",{{"行政区划代码", type text}}),
#"Added Custom" = Table.AddColumn(#"Changed Type1", "省级", each if Text.End([行政区划代码],4)="0000" then [单位名称] else null),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "地级", each if Text.End([行政区划代码],2)="00" then [单位名称] else null),
#"Filled Down" = Table.FillDown(#"Added Custom1",{"省级", "地级"}),
#"Renamed Columns" = Table.RenameColumns(#"Filled Down",{{"单位名称", "县级"}}),
#"Reordered Columns" = Table.ReorderColumns(#"Renamed Columns",{"行政区划代码", "县级", "地级", "省级"})
in
#"Reordered Columns"