【问题标题】:How to compare and calculate each row to all other rows in the same column and table如何将每一行与同一列和表中的所有其他行进行比较和计算
【发布时间】:2022-11-05 22:23:28
【问题描述】:

我的数据看起来像这样,一个带有坐标详细信息的地方

Place   Latitude    Longitude
A   2.314   97.6110288
B   3.425   98.6925504
C   4.1231  99.774072
D   5.096466667 100.8555936
E   6.001016667 101.9371152
F   6.905566667 103.0186368
G   7.810116667 104.1001584
H   8.714666667 105.18168
I   9.619216667 106.2632016
J   10.52376667 107.3447232
K   11.42831667 108.4262448
L   12.33286667 109.5077664
M   13.23741667 110.589288
N   14.14196667 111.6708096
O   15.04651667 112.7523312
P   15.95106667 113.8338528

所以表格看起来像这样 我想做的是通过计算地方之间的距离来比较这个地方和其他地方。如果它满足条件,我们在输出中添加一个

所以例如

我们比较 Place A 到 , B,C,D,E,F,G 的距离

所以

    for example A-B , distance = 100
A-C, distance = 70
A-D, distance = 50
A-E,distance = 120
A-F,distance = 140      
A-G,distance = 175
A-H, DIstance=80
A-I,Distance =40
A-J,Distance=190
A-K,distance=209
A-L,distance=109
A-M,A-N,A-O,A-P=150

我们去一个有条件的,所以如果我只想取大于 151 的那个,它将为该行返回 3

这将计算表中的所有行

输出示例是这样的

预期产出

Place   Latitude    Longitude   Bigger Than 151
A   2.314   97.6110288  3
B   3.425   98.6925504  5
C   4.1231  99.774072   1
D   5.096466667 100.8555936 3
E   6.001016667 101.9371152 2
F   6.905566667 103.0186368 1
G   7.810116667 104.1001584 5
H   8.714666667 105.18168   2
I   9.619216667 106.2632016 4
J   10.52376667 107.3447232 1
K   11.42831667 108.4262448 0
L   12.33286667 109.5077664 0
M   13.23741667 110.589288  0
N   14.14196667 111.6708096 0
O   15.04651667 112.7523312 0
P   15.95106667 113.8338528 0

我也可以使用 python for power bi,如果 power query/dax power Bi 可能无法解决这个问题。

谢谢

【问题讨论】:

  • 把你的问题分解成更小的部分。我将首先在 Power Query 中添加一个距离 A 的列。然后,您可以根据需要进行排名和过滤。

标签: powerbi powerquery haversine


【解决方案1】:
  1. 首先将您的 Places 表与其自身交叉连接:Cross join

  2. 接下来计算所有地方之间的(haversine)距离:Use Power Query to Calculate Distance

  3. 最后过滤距离列 > 151 和 GroupBy地方,计算行数。

【讨论】:

  • 嗨,谢谢,但我有 100k 行这仍然可行吗?
  • Power BI 专为大数据,从 10M 行开始。
  • 嗨,我似乎无法完成表中的交叉连接。我似乎能够以较小的样本加载它,
  • 而且您似乎并不欣赏我的自愿帮助。毕竟我回答了你最初的问题。
【解决方案2】:

太棒了!太感谢了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多