DAX使用IF计算列以评估另一个表中的值

时间:2018-06-25 19:29:15

标签: ssas ssas-tabular

我正在使用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 Position [Type] =“ A” AND Position [Source] <> 1 THEN交易[金额] * -1 ELSE交易[金额] * -1

我尝试在DAX中使用RELATED函数,但未检测到相关的Position表;当我手动输入时,它返回错误“找不到表”:

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

在1:n关系的1边的表上没有重复项。我应该尝试其他DAX功能吗?

1 个答案:

答案 0 :(得分:0)

我尝试使用LOOKUPVALUE,到目前为止看起来还不错。

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