如何将CALCULATE与LOOKUPVALUE和USERELATIONSHIP一起使用

时间:2019-04-07 12:25:49

标签: relationship lookup powerpivot

我有三个表,一个称为“ 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函数。那里也没有结果。

因此,我现在有点茫然如何进行这项工作。你能帮忙吗?

1 个答案:

答案 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()指令。不过我无法解释...