Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.
Check it out now!Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more
基本场景:
当我们想要计算两个位置之间的距离时,我们需要知道这两个位置的坐标。
以下是示例数据:
我们现在拥有当前位置和目的地的坐标,使用以下的公式我们可以得到这些位置之间的距离。
距离 (千米) =
12742 -- 地球的直径 (千米).
* ASIN (
-- 返回一个数字的反正弦值.
SQRT (
--返回一个数字的平方根.
POWER (
-- 返回一个数字的幂.
SIN ( -- 返回给定角度的正弦值.
'表'[当前纬度] - '表'[目的地纬度] )
* PI () / 360,
2
) -- PI () 返回π的值, 3.14159265358979, 精确到15位.
+ COS ( -- 返回给定角度的余弦值.
'表'[当前纬度] * PI () / 180 )
* COS ( '表'[目的地纬度] * PI () / 180 )
* POWER ( SIN ( '表'[当前经度] - '表'[目的地经度] ) * PI () / 360, 2 )
)
)
结果如下:
参考文献:
https://learn.microsoft.com/zh-cn/dax/sqrt-function-dax
https://learn.microsoft.com/zh-cn/dax/asin-function-dax
https://learn.microsoft.com/zh-cn/dax/power-function-dax
https://learn.microsoft.com/zh-cn/dax/sin-function-dax
https://learn.microsoft.com/zh-cn/dax/cos-function-dax
https://learn.microsoft.com/zh-cn/dax/pi-function-dax
高级场景:
现在我们有两张表。
客户表包含一些客户的坐标。
商店表包含一些商店的坐标。
通过灵活使用上述计算距离的公式,我们可以得到每个用户最近的商店,也可以得到每个用户到最近商店的距离。
最近的商店 =
CALCULATE (
FIRSTNONBLANK ( '商店'[商店], 0 ),
TOPN (
1,
'商店',
12742
* ASIN (
SQRT (
POWER ( SIN ( '客户'[纬度] - '商店'[纬度] ) * PI () / 360, 2 )
+ COS ( '客户'[纬度] * PI () / 180 )
* COS ( '商店'[纬度] * PI () / 180 )
* POWER ( SIN ( '客户'[经度] - '商店'[经度] ) * PI () / 360, 2 )
)
), ASC
)
)
到最近商店的距离(千米) =
MINX (
'商店',
12742到最近商店的距离(千米) =
MINX (
'商店',
12742
* ASIN (
SQRT (
POWER ( SIN ( '客户'[纬度] - '商店'[纬度] ) * PI () / 360, 2 )
+ COS ( '客户'[纬度] * PI () / 180 )
* COS ( '商店'[纬度] * PI () / 180 )
* POWER ( SIN ( '客户'[经度] - '商店'[经度] ) * PI () / 360, 2 )
)
)
)
* ASIN (
SQRT (
POWER ( SIN ( '客户'[纬度] - '商店'[纬度] ) * PI () / 360, 2 )
+ COS ( '客户'[纬度] * PI () / 180 )
* COS ( '商店'[纬度] * PI () / 180 )
* POWER ( SIN ( '客户'[经度] - '商店'[经度] ) * PI () / 360, 2 )
)
)
)
结果如下:
作者:王杰
审核:Kerry Wang & Ula Huang
翻译:祝心如
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.