我有三个表,一个名为“ISO_ccy”的昏暗表只显示货币的ISO缩写,一个显示实体(“实体”)的“本国货币”的暗表和显示外国的另一个(事实)表(“交易”)交易所(FX)交易。外汇交易的事情是,它们总是涉及两种货币(ccy),因此后一种表有两列货币ISO代码(和相应的金额)。两个暗淡的表都只有一列具有ISO ccy代码(表“ISO_ccy”仅具有不同的值)。
我现在在“ISO_ccy”和“交易”表之间有货币1(ccy1)的一个(有效)关系和一个对货币2(ccy2)无效的关系。 “ISO_ccy”和“实体”表之间也存在活动关系。
我需要计算每种货币和货币不等于该实体的“本国货币”的每个实体的总和。
对于有积极关系的ccy来说似乎很直接(ccy1):
Sum_Hedges_activeRelation:=
CALCULATE(
SUM([Amount_ccy1]);
FILTER(trades;trades[ccy1]>LOOKUPVALUE(entities[ccy];entities[name];trades[name]))
)
过滤器表达式确保仅显示交易的ccy不等于实体的“home”ccy的金额。
在这里,我得到了理想的结果。
现在我需要对非活动关系(ccy2)做同样的事情。
这是我试过的:
Sum_Hedges_in-activeRelation:=
CALCULATE(
SUM([Amount_ccy2]);
USERELATIONSHIP(trades[ccy2];ISO_ccy[ccy]);
FILTER(trades;trades[ccy2]<>LOOKUPVALUE(entities[ccy];entities[name];trades[name]))
)
但是,我只得到一个“空”的结果。
我还尝试将“ALL(交易)”添加到CALCULATE函数中。那里也没有结果。
所以,我现在有点不知所措,我怎么能做到这一点。你能帮忙吗?
2019年4月8日更新解决方案:
我在这里找到了解决问题的方法:
sqlbi: USERELATIONSHIP in a Measure
现在我的forumlar看起来像这样:
Sum_Hedges_in-activeRelation:=
CALCULATE(
CALCULATE(
SUM([Amount_ccy2]);
FILTER(trades;trades[ccy2]
<>LOOKUPVALUE(entities[ccy];entities[name];trades[name]))
);
USERELATIONSHIP(trades[ccy2];ISO_ccy[ccy])
)
这与引用文章中提供的解决方案(对于列相关的上下文)略有不同,因为我省略了外部CALCULATE()中的ALL()指令。我无法解释,但......