我是Power BI和DAX的新手,所以我希望你能帮助我。
我有两张没有任何关系的桌子: 表A 包含lat / lng和跟踪位置的日期。 表B 包含所有体育场馆的纬度/经度和名称。
我想在追踪位置附近找到最近的体育场。如果可能的话,我想验证,如果位置在该体育场的特定半径内。
非常感谢任何帮助。
答案 0 :(得分:3)
这是一种可行的方法:
首先,使用Haversine函数计算最小距离。
将此计算列添加到Tracked
表格中。
Nearest =
MINX(Stadiums,
ROUND(2 * 3959 *
ASIN(SQRT(
SIN((Stadiums[Lat] - Tracked[Lat]) * PI()/360)^2 +
COS(Tracked[Lat] * PI()/180) * COS(Stadiums[Lat] * PI()/180) *
SIN((Stadiums[Lon] - Tracked[Lon]) * PI()/360)^2)), 1))
在此公式中,3959
是以英里为单位的地球半径。
我们现在可以匹配距离以找到最近的体育场:
Stadium = CALCULATE(MAX(Stadiums[Stadium]),
FILTER(Stadiums,
ROUND(2 * 3959 *
ASIN(SQRT(
SIN((Stadiums[Lat] - Tracked[Lat]) * PI()/360)^2 +
COS(Tracked[Lat] * PI()/180) * COS(Stadiums[Lat] * PI()/180) *
SIN((Stadiums[Lon] - Tracked[Lon]) * PI()/360)^2)), 1)
= Tracked[Nearest]))
注意:我舍入了值以避免与可能的浮点错误不匹配。这可能是必要的,也可能不是必要的。