查看: 56|回复: 1

POWER QUERY调用高德地图API解析地址(1)

[复制链接]

2

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2022-9-30 16:14:14 | 显示全部楼层 |阅读模式
现在的任务是将地址解析成省、市、区、镇的形式,如果地址太过详细,有泄露数据的风险,所以需将数字前面的地址提取出来,再调用高德地图API。


在POWER QUERY 中怎么实现呢?其实也很简单:
(1)自定义函数,找到第一个数字出现的位置
= (t) => List.Min(List.Transform(Text.ToList(t),each if Character.ToNumber(_)>=0x4e00 then 555 else Text.PositionOf(t,_)))
对于地址字符串转换为列表,["佛",“山”,“市”......"2",“5”.......]
将列表的每个元素都转换为数字
汉字的unicode范围是:0x4E00~0x9FA5(0x是十六进制的意思),只要是汉字就赋予一个很大的值
否则,返回位置
在求一个最小值,就是第一个数字出现的位置了
(2)添加步骤,提取位置0到第一个数字之间的文本,就是我们想要的地址了
= Table.AddColumn(删除的列, "split_addr", each Text.Range([地址],0,split_addr([地址])))
处理结果如下:


我们发现最后一行地址转换后是Error,因为有些地址本身没有具体到门牌号,却调用了提取数字前的地址的函数,所以会返回Error。我们先将Error替换成null,再将null替换为原先的地址
= Table.ReplaceValue(已替换的错误,null,each [地址],Replacer.ReplaceValue,{"split_addr"})

大功告成!

回复

使用道具 举报

2

主题

6

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 9 小时前 | 显示全部楼层
呵呵。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表