各ユニットの位置が座標によって定義されている 300'000 ユニットのセットを持つテーブルがあります(X,Y)
。各ユニットから特定の距離内にあるユニットを知りたいのですが?
元。
UnitiID X Y
A 10 15
B 10 25
C 25 15
proc sql;
create table work.Test2 as
select distinct
a.UnitID,
a.X,
a.Y,
b.UnitID as CloseUnit label="CloseUnit",
sqrt( (a.X-b.X)**2 + (a.Y-b.Y)**2 ) as distance
from
work.Test as a
left join
work.Test as b
on
0<sqrt( (a.X-b.X)**2 + (a.Y-b.Y)**2 ) <=15
;
quit;
結果:
UnitiID X Y CloseUnit Distance
A 10 15 B 10
A 10 15 C 15
B 10 25 A 10
C 25 15 A 15
300,000^2 の比較を行うため、テーブル全体で多くの CPU 時間を必要とします。このタスクを実行するにはどうすればよいでしょうか?