Предположим, у меня есть TableA
и TableB
, которые не имеют отношения.
Вкл. TableA
Я создаю вычисляемый столбец, который вычисляет минимальное значение в соответствии со сложным выражением, включающим несколько столбцов из обоихтаблицы (например, см. мой ответ здесь ).
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))
Теперь я хотел бы найти ID
из TableB
, который соответствуетближайшая точка.То есть мне нужна следующая таблица:
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]))
, но в идеале я бы хотел более элегантный / эффективный метод, гдеМне не нужно использовать одно и то же сложное выражение дважды.