我有以下数据模型:
记录: Id ,...,CreateDate
FactA :RecordId,CreateDate
FactB :RecordId,CreateDate
FactA与Record,FactB to Record之间存在关系。
我已经对此类记录采取了措施,没有任何问题:
FactA's:=CALCULATE(DISTINCTCOUNT(Records[Id]), FactA)
FactB's:=CALCULATE(DISTINCTCOUNT(Records[Id]), FactB)
现在我想要使用FactA计数记录,但没有FactB,在SQL中我做LEFT JOIN WHERE FactB.RecordId
IS 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和背景知之甚少,不知道我在做什么。< / p>
有人可以解释我如何编写计算的度量来计算记录与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)
答案 0 :(得分:0)
这是另一种选择,可能仍然不是最佳方式:
FactA_No_FactB:=CALCULATE(DISTINCTCOUNT(Records[ID]), FILTER(Records,CONTAINS(FactA, FactA[RecordID],Records[ID]) && NOT(CONTAINS(FactB,FactB[RecordID],Records[ID]))))
我的版本和你的版本之间的区别在于,我和其中的所有项目中的那些项目返回值为1但不包括B和BLANK。对于A中的项而不是B,您的版本返回1,对于A和B中的项,您的版本返回0,对于其他所有项,您的版本返回BLANK。根据您的使用情况,一种结果可能优先于另一种结果。