DAX - 如果过滤器中使用的度量不为空,则应用过滤器
DAX - Apply Filter If Measure Used In Filter is Not BLANK
我有以下措施,总计 TotalGLDetail
,table 上有许多过滤器,最后一个是问题。这些过滤器所依赖的所有措施永远不会 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])
)
您可以在过滤器中添加多个条件,并且可以对最后一个条件使用 or 条件。
TotalMF :=
CALCULATE([TotalGLDetail],
FILTER(GLDETAIL,
GLDETAIL[concat] = [AnyMFAcct] &&
(GLDETAIL[journalid] = [MFSrc1] || GLDETAIL[journalid] = [MFSrc2]) &&
ABS('GLDETAIL'[postingamount]) > [MFMinABS] &&
(ISBLANK([MFControl]) || GLDETAIL[control] = [MFControl])))
我有以下措施,总计 TotalGLDetail
,table 上有许多过滤器,最后一个是问题。这些过滤器所依赖的所有措施永远不会 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])
)
您可以在过滤器中添加多个条件,并且可以对最后一个条件使用 or 条件。
TotalMF :=
CALCULATE([TotalGLDetail],
FILTER(GLDETAIL,
GLDETAIL[concat] = [AnyMFAcct] &&
(GLDETAIL[journalid] = [MFSrc1] || GLDETAIL[journalid] = [MFSrc2]) &&
ABS('GLDETAIL'[postingamount]) > [MFMinABS] &&
(ISBLANK([MFControl]) || GLDETAIL[control] = [MFControl])))