【发布时间】:2018-06-08 16:35:14
【问题描述】:
假设我有 TableA 和 TableB 没有关系。
在TableA 上,我创建了一个计算列,该列根据涉及两个表中多个列的复杂表达式计算最小值(例如,参见my answer here)。
MinValue = MINX(TableA, [ComplexExpression])
这很好用,但我真正要寻找的是出现最小值的行的ID。
为了一个具体的例子,让我们看看以下内容:
TableA:
ID X Y
-------------
1 2.1 -1.3
2 3.5 0.5
3 6.5 5.9
4 3.1 4.2
5 2.8 -2.7
6 5.7 -1.5
TableB:
ID X Y
-------------
A 2.3 2.7
B 2.8 -4.8
C 4.1 1.1
D -0.5 0.9
E -3.7 2.4
我向TableA 添加了一个计算列,它给出了最小欧几里得距离。
MinDist = MINX(TableB, ROUND(SQRT((TableA[X]-TableB[X])^2 + (TableA[Y]-TableB[Y])^2), 2))
现在,我想从TableB 中找到与最近点对应的ID。也就是说,我想要下表:
ID X Y MinDist B-ID
-----------------------------
1 2.1 -1.3 3.12 C
2 3.5 0.5 0.85 C
3 6.5 5.9 5.28 A
4 3.1 4.2 1.70 A
5 2.8 -2.7 2.10 B
6 5.7 -1.5 3.05 C
我已经让它与以下内容一起工作
MinDist = CALCULATE(MAX(TableB[ID]),
FILTER(TableB,
ROUND(SQRT((TableA[X]-TableB[X])^2 + (TableA[Y]-TableB[Y])^2), 2)
= TableA[MinDist]))
但理想情况下,我想要一种更优雅/更高效的方法,我不必两次使用相同的复杂表达式。
【问题讨论】:
-
好吧,如果你不知道答案,那么谁知道,Marco 和 Alberto?