如何查找一个表中存在而另一个表中缺失的值的总和

时间:2019-06-27 15:20:16

标签: powerbi dax

我试图找到与表1中存在但表2中没有的键对应的值的总和。

enter image description here

这些表是根据某些过滤器创建的,代表2个不同日期的值。

这两个不同的日期是从2个不同的日期表中选择的,它们具有非活动的关系,是为此专门创建的。

我想创建一个找出总和的度量。

以下是我使用的语法:

 Difference = 
VAR 
Table1 = CALCULATETABLE(VALUES('TableA'[Id]), 'TableA'[Type] = "ABC", ALL('Date'), USERELATIONSHIP('Date'[As of Date], Previous_Date[Previous_Date]),USERELATIONSHIP('Date'[As of Date], 'TableA'[As of Date]))
VAR
Table2 = CALCULATETABLE(VALUES('TableA'[Id]), 'TableA'[Type] = "ABC", USERELATIONSHIP('Date'[As of Date], 'TableA'[As of Date]))
RETURN
IF(AND(VALUES('TableA'[Id]) IN Table1 , NOT(VALUES('TableA'[Id])) IN Table2), 
CALCULATE(SUM('TableA'[Values])),0)

它没有错误。但是,当我将度量放置在KPI视觉上时,我收到以下消息:

enter image description here

请告诉我语法有什么问题。另外,请告诉我是否可以编写更好的代码。

请帮助。

1 个答案:

答案 0 :(得分:0)

出现错误的原因是在编写x时期望x IN Table1有一个单一值,但是使用VALUES函数可以返回一个列表,而不是一个单一值。

RETURN之后,我会尝试类似的方法:

SUMX (
    'TableA',
    IF ( 'TableA'[Id] IN Table1 && NOT ( 'TableA'[Id] IN Table2 ), 'TableA'[Value] )
)

这将遍历TableA的每一行,并检查每一行中的Id值是否在您计算的表中。如果满足条件,它将添加Value。否则,由于没有第三个参数,IF返回一个空白(总和与0相同)。