Power BI中Haversine公式计算结果不符合预期的问题求助
Power BI Haversine距离计算异常问题排查
需求说明
- 核心目标:选择英国邮编区域(如BS10、L20、LS9)和指定英里半径,在地图上可视化该范围内的所有员工
- 限制:因数据保护无法提供示例文件,仅能通过文字描述问题
数据表结构
rv_staff:员工信息表,包含员工完整/部分邮编、对应经纬度字段(Lat、Long)Area Selection:英国邮编区域表,仅存储邮编前半部分、对应经纬度字段(latitude、longitude)及地区(利兹/曼彻斯特/布里斯托尔等)信息- 表关系:通过部分邮编建立
rv_staff到Area Selection的多对一关系(区域表中每个邮编唯一,员工表中对应多条记录)
已完成设置
- 已配置半径滑块控件
- 已设置切片器/下拉列表,可从
Area Selection表中选择目标邮编区域 - 需要实现:生成表格,仅显示所选邮编区域指定半径内的员工,同时展示员工到该区域的距离
问题及尝试过程
尝试1:初始Haversine度量值
使用参考资料中的DAX公式计算距离:
Distance = var Lat1 = MIN('Area Selection'[latitude]) var Lng1 = MIN('Area Selection'[longitude]) var Lat2 = MIN(rv_staff[Lat]) var Lng2 = MIN(rv_staff[Long]) var P = DIVIDE( PI(), 180) var A = 0.5 - COS((Lat2-Lat1) * p)/2 + cos(Lat1 * p) * COS(Lat2 * P) * (1-COS((Lng2 - Lng1) * p)) /2 var final = (3958 * ASIN((SQRT(A)))) return final
异常现象:设置半径为100英里时,康沃尔/德文郡的员工到任意地区(甚至格拉斯哥)的距离均显示为50-100英里,结果明显错误。
尝试2:验证所选区域的经纬度
为排查坐标是否正确,创建两个度量值获取选中邮编区域的经纬度:
Selected Postcode - Lat = LOOKUPVALUE('Area Selection'[latitude], 'Area Selection'[postcode], SELECTEDVALUE('Area Selection'[postcode]))
Selected Postcode - Long = LOOKUPVALUE('Area Selection'[longitude], 'Area Selection'[postcode], SELECTEDVALUE('Area Selection'[postcode]))
验证结果:每次切换邮编区域,坐标都会正确更新,与谷歌地图抽查的地点坐标匹配,排除初始邮编选择的问题。
尝试3:代入验证后的坐标重新计算
将上述验证后的度量值代入Haversine公式(疑问:仅使用一组坐标时为何需要MIN()函数?):
Linguist Distance (Miles) = var Lat1 = [Selected Postcode - Lat] var Lng1 = [Selected Postcode - Long] var Lat2 = MIN(rv_staff[Lat]) var Lng2 = MIN(rv_staff[Long]) var P = DIVIDE( PI(), 180) var A = 0.5 - COS((Lat2-Lat1) * p)/2 + cos(Lat1 * p) * COS(Lat2 * P) * (1-COS((Lng2 - Lng1) * p)) /2 var final = (3958 * ASIN((SQRT(A)))) return final
异常现象:所有员工的距离均显示为0,完全不符合实际。
尝试4:社区建议的列计算方法
尝试使用另一版本的Haversine公式(列计算):
Distance = acos(sin([Selected Postcode - Lat])*sin(rv_staff[Lat])+cos([Selected Postcode - Lat])*cos(rv_staff[Lat])*cos(rv_staff[Long]-[Selected Postcode - Long]))*3958
异常现象:触发错误提示:函数'ACOS'的参数数据类型错误,或结果过大/过小
请求帮助
目前已尝试多种方法均未得到正确的距离计算结果,不清楚问题根源所在,希望能得到解决建议或排查方向。
内容的提问来源于stack exchange,提问作者Sh4dow85
相关产品推荐
相关产品推荐

