DAX - 如果过滤器中使用的度量不是BLANK,则应用过滤器

时间:2018-02-11 17:20:28

标签: dax

我有以下措施总计TotalGLDetail,桌面上有许多过滤器,最后一个是问题。这些过滤器所依赖的所有度量都不会BLANK,有时除[MFControl]

TotalMF:=CALCULATE([TotalGLDetail]
    ,FILTER(GLDETAIL,GLDETAIL[concat]=[AnyMFAcct])
    ,FILTER(GLDETAIL,OR(GLDETAIL[journalid]=[MFSrc1],GLDETAIL[journalid]=[MFSrc2]))
    ,FILTER(GLDETAIL,ABS('GLDETAIL'[postingamount])>[MFMinABS])
    ,FILTER('GLDETAIL',GLDETAIL[control]=[MFControl]))

在某些情况下,MFControl指标为BLANK,因为它不适用。因此,如果MFControl的值为NOT BLANK,我只需要应用此过滤器。

除了以下内容之外,是否有简洁的方法来写这个?

TotalMF:=IF(NOT(ISBLANK([MFControl]))
    ,CALCULATE([TotalGLDetail]
        ,FILTER(GLDETAIL,GLDETAIL[concat]=[AnyMFAcct])
        ,FILTER(GLDETAIL,OR(GLDETAIL[journalid]=[MFSrc1],GLDETAIL[journalid]=[MFSrc2]))
        ,FILTER(GLDETAIL,ABS('GLDETAIL'[postingamount])>[MFMinABS])
        ,FILTER('GLDETAIL',GLDETAIL[control]=[MFControl])),CALCULATE([TotalGLDetail]
        ,FILTER(GLDETAIL,GLDETAIL[concat]=[AnyMFAcct])
        ,FILTER(GLDETAIL,OR(GLDETAIL[journalid]=[MFSrc1],GLDETAIL[journalid]=[MFSrc2]))
        ,FILTER(GLDETAIL,ABS('GLDETAIL'[postingamount])>[MFMinABS])
)

1 个答案:

答案 0 :(得分:1)

您可以在过滤器中添加多个条件,并且可以对最后一个条件使用或条件。

TotalMF := 
    CALCULATE([TotalGLDetail],
              FILTER(GLDETAIL,
                     GLDETAIL[concat] = [AnyMFAcct] &&
                     (GLDETAIL[journalid] = [MFSrc1] || GLDETAIL[journalid] = [MFSrc2]) &&
                      ABS('GLDETAIL'[postingamount]) > [MFMinABS] &&
                      (ISBLANK([MFControl]) || GLDETAIL[control] = [MFControl])))