DAX рассчитал столбец, используя IF для оценки значения из другой таблицы - PullRequest
0 голосов
/ 25 июня 2018

Я использую Таблицу SSAS, где у меня есть две таблицы с отношением 1: n, Позиция и Транзакция .Для PositionID

существует активное отношение 1: n Позиция

+------------+------+--------+
| PositionID | Type | Source |
+------------+------+--------+
| C1000      | A    | 1      |
+------------+------+--------+
| C1200      | B    | 2      |
+------------+------+--------+
| C1400      | C    | 1      |
+------------+------+--------+

Транзакция

+---------+------------+--------+
| TransID | PositionID | Amount |
+---------+------------+--------+
| 1       | C1000      | 150    |
+---------+------------+--------+
| 2       | C1000      | 200    |
+---------+------------+--------+
| 3       | C1400      | 350    |
+---------+------------+--------+

Я хочусоздать вычисляемый столбец в таблице Транзакция , которая имеет следующую логику: Позиция IF [Тип] = «A» И Позиция [Источник] <> 1 THEN Транзакция [Сумма] * -1 ELSE Транзакция [Сумма]* -1

Я пытался использовать функцию RELATED в DAX, но не обнаружил связанную таблицу Position;когда я набираю его вручную, он возвращает ошибку «не могу найти таблицу»:

=IF(RELATED(Position[Type]) = 'A' && RELATED(Position[Source]) <> 1;-1*Transaction[Amount];Transaction[Amount]) 

У меня нет дубликатов в таблице, которая находится на 1 стороне отношения 1: n.Стоит ли попробовать другую функцию DAX?

1 Ответ

0 голосов
/ 26 июня 2018

Я пытался использовать LOOKUPVALUE, и пока он выглядит хорошо.

=IF(LOOKUPVALUE(Position[Type];Position[PositionID];Transaction[PositionID])="A"&&LOOKUPVALUE(Position[Source];Position[PositionID];Transaction[PositionID])<>"1";-1*Transaction[Amount];Transaction[Amount])
...