我有三个表,一个称为“ ISO_ccy”的暗表仅显示货币的ISO缩写,一个暗表显示一个实体(“实体”)的“本国货币”,另一个(事实)表(“交易”) )显示外汇(FX)交易。外汇交易的事情是,它们总是涉及两种货币(ccy),因此后者的表中有两列带有货币ISO代码(和相应金额)的列。两个暗表都只有一列带有ISO ccy代码(表“ ISO_ccy”仅具有不同的值)。
我现在在“ ISO_ccy”和“交易”表之间对货币1(ccy1)具有一种(活动)关系,对于货币2(ccy2)具有一种非活动关系。 “ ISO_ccy”表和“实体”表之间也存在活动关系。
我需要计算每种货币和每种货币不等于该实体“本国货币”的实体的总和。
对于具有活跃关系(ccy1)的ccy来说似乎很简单:
Sum_Hedges_activeRelation:=
CALCULATE(
SUM([Amount_ccy1]);
FILTER(trades;trades[ccy1]>LOOKUPVALUE(entities[ccy];entities[name];trades[name]))
)
过滤器表达式可确保仅显示交易的ccy不等于实体的“本国” 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(trades)”添加到CALCULATE函数。那里也没有结果。
因此,我现在有点茫然如何进行这项工作。你能帮忙吗?
答案 0 :(得分:0)
更新2019年4月8日并提供解决方案:
我在这里找到了解决问题的方法:
sqlbi: USERELATIONSHIP in a Measure
现在我的臀部看起来像这样:
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()指令。不过我无法解释...