代码之家  ›  专栏  ›  技术社区  ›  John Donnelly

DAX-如果筛选器中使用的度量值不为空,则应用筛选器

dax
  •  0
  • John Donnelly  · 技术社区  · 8 年前

    我有以下措施 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 度量值为 空白 因为它不适用。因此,我需要此过滤器仅在 MFControl(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 回复  |  直到 8 年前
        1
  •  1
  •   Alexis Olson    8 年前

    您可以在筛选器中添加多个条件,并且可以对最后一个条件使用or条件。

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