使用DAX查找从一个表生成的两个表之间的差异

时间:2019-07-02 22:14:18

标签: powerbi dax

我想找到2个表之间所有公共元素的和之差。

我们有一张大桌子(表A)

enter image description here

您会发现ID和日期都不能单独用作唯一标识符。

基于某些过滤器(其中之一是日期),我们必须创建2个表: enter image description here

然后,我们必须找到所有常见元素之和之间的差。

表1和表2可能不是真实表,而可能只是为了创建度量而声明的虚拟表(使用VAR定义)。

我尝试了以下代码:

差异= VAR Table1 = ADDCOLUMNS('TableA',“ id”,CALCULATE(VALUES('TableA'[Id]),ALL('Date'),ALL('TableA'),USERELATIONSHIP('Date'[截至日期],Previous_Date [Previous_Date]),USERELATIONSHIP('Date'[As of Date],'TableA'[Date])),“ Value”,'TableA'[Value])

VAR Table2 = ADDCOLUMNS('TableA',“ id”,CALCULATE(VALUES('TableA'[Id]),ALL('TableA'),USERELATIONSHIP('Date'[截至日期],'TableA'[Date])) ,“ Value”,'TableA'[Value])

VAR abc = CALCULATE(SUMX(Table1,IF(VALUES('TableA'[Id])in Table1 && VALUES('TableA'[Id])in Table2,Table1 [Value])))

VAR pqr = CALCULATE(SUMX(Table2,IF(Table1中的VALUES('TableA'[Id])&& VALUES(Table2,Table2 [Value]中的'TableA'[Id])))

返回 abc-pqr

1 个答案:

答案 0 :(得分:0)

前提条件:-将两个表中id列的数据类型都更改为Text。

然后,在表1中创建此计算列:-

Common_NotCommon_Table1 = 
         Var out1 = LOOKUPVALUE(Table2[id],Table2[id],Table1[id])
         Var out2 = IF(out1 <> "", "Common","Not-Common")
return out2

然后在表2中同样创建此计算列:-

Common_NotCommon_Table2 = 
         Var out1 = LOOKUPVALUE(Table1[id],Table1[id],Table2[id])
         Var out2 = IF(out1 <> "", "Common","Not-Common")
return out2

然后创建两个度量以查找总和-可以在任何表中创建。

Sum_Common_Table1 = CALCULATE(SUM(Table1[corresponding value]), FILTER(Table1, Table1[Common_NotCommon_Table1] = "Common")) 

Sum_Common_Table2 = CALCULATE(SUM(Table2[corresponding value]), FILTER(Table2, Table2[Common_NotCommon_Table2] = "Common")) 

然后在任何一个表中创建差异度量:-

Common_Diff = [Sum_Common_Table2] - [Sum_Common_Table1]

“预期输出”如下所示,

enter image description here

如果有帮助,请接受答案,让我知道它如何为您服务。