Excel 基于一个表中存在和另一个表中不存在的筛选器

Excel 基于一个表中存在和另一个表中不存在的筛选器,excel,powerpivot,dax,Excel,Powerpivot,Dax,我有以下数据模型: 记录:Id,…,CreateDate 事实:记录ID,创建日期 事实b:记录ID,创建日期 事实与记录、事实与记录之间存在着关系 我在记录上写下了这样的措施,没有任何问题: FactA's:=CALCULATE(DISTINCTCOUNT(Records[Id]), FactA) FactB's:=CALCULATE(DISTINCTCOUNT(Records[Id]), FactB) 现在我想要一个有FactA但没有FactB的记录计数,在SQL中,我会做一个左连接,其中

我有以下数据模型:

记录:Id,…,CreateDate

事实:记录ID,创建日期

事实b:记录ID,创建日期

事实与记录、事实与记录之间存在着关系

我在记录上写下了这样的措施,没有任何问题:

FactA's:=CALCULATE(DISTINCTCOUNT(Records[Id]), FactA)
FactB's:=CALCULATE(DISTINCTCOUNT(Records[Id]), FactB)
现在我想要一个有FactA但没有FactB的记录计数,在SQL中,我会做一个
左连接,其中FactB.RecordId
为NULL,但我不知道如何在DAX中做类似的操作。我试过:

 -- this returns blank, presumably because when there is a FactB then RecordId isn't blank, and when there is no Fact B then RecordId a NULL which isn't blank either
FactA_No_FactB:=CALCULATE(DISTINCTCOUNT(Records[Id]), FactA, FILTER(FactB, ISBLANK([RecordId])))

-- this returns the long "The value for columns "RecordId" in table "FactB" cannot be determined in the current context" error.
FactA_No_FactB:=CALCULATE(DISTINCTCOUNT(Records[Id]), FILTER(FactA, ISBLANK(FactB[RecordId])))
我也尝试过使用
RELATED
RELATEDTABLE
的各种方法,但我对DAX和上下文的了解还不够,不知道我在做什么

有人能解释一下我如何编写计算出的度量来计算有FactA但没有FactB的记录吗

提前谢谢

编辑-变通方法 我已经想到了这个,到目前为止它看起来是正确的,但我不确定它是否是一种通常正确的方法:

-- Take the count with FactA and subtract the count of (FactA and FactB)
FactA_No_FactB:=CALCULATE(DISTINCTCOUNT(Records[Id]), FactA) - CALCULATE(DISTINCTCOUNT(Records[Id]), FactA, FactB)

这里有一个替代方案,可能仍然不是最好的方法:

FactA_No_FactB:=CALCULATE(DISTINCTCOUNT(Records[ID]), FILTER(Records,CONTAINS(FactA, FactA[RecordID],Records[ID]) && NOT(CONTAINS(FactB,FactB[RecordID],Records[ID]))))

我的版本和你的版本之间的区别在于,我的版本对和a中的项目返回值1,而不是B,对其他所有项目返回值为空。您的版本对A中的项目返回1,对B中的项目返回0,对其他项目返回空白。根据您的用例,一种结果可能比另一种结果更可取。

这似乎更正确,因为它不会在不存在的地方创建值。