我刚接触Power BI和DAX,希望你能帮助我。
我有两个没有任何关系的表: 表A包含跟踪位置的纬度/经度和日期。 表B包含所有体育场的名称和纬度/经度。
我想找到距离被跟踪位置最近的体育场。如果可能的话,我还想验证该位置是否在该体育场特定半径内。
非常感谢您的帮助。
我有两个没有任何关系的表: 表A包含跟踪位置的纬度/经度和日期。 表B包含所有体育场的名称和纬度/经度。
我想找到距离被跟踪位置最近的体育场。如果可能的话,我还想验证该位置是否在该体育场特定半径内。
非常感谢您的帮助。
以下是一种可能的方法:
首先,使用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]))
注意:我将值四舍五入以避免由可能的浮点误差导致的不匹配。这可能或可能不必要。