如何在 CALCULATE() 中执行列计算

How to perform a column calculation in a CALCULATE()

我的 table 看起来像这样:

Doc  Code 
A    61
A    61X  
B    62
B    61
C    61
C    62
C    62X    

我正在尝试在 DAX 中创建一个列,该列仅检查代码是否包含 Doc 的 X。所以结果应该是这样的:

Doc  Code DAXColumn
A    61   TRUE
A    61X  TRUE
B    62   FALSE
B    61   FALSE
C    61   TRUE
C    62   TRUE
C    62X  TRUE  

我想这样做:

DAXColumn = 
VAR currentDoc = Doc
RETURN
CALCULATE(IF(ISERROR(SEARCH("X",Doc)) = TRUE, FALSE, TRUE),
FILTER(myTable,Doc = currentDoc))

看来我无法将列传递给 CALCULATE 参数。我怎样才能得到我想要的结果?提前致谢。

Column =
VAR _1 =
    SUMMARIZE (
        FILTER ( _fact, CONTAINSSTRING ( _fact[Code], "X" ) ),
        [Doc],
        [Code]
    )
VAR _2 =
    CALCULATE ( MAXX ( FILTER ( _1, [Doc] = MAX ( _fact[Doc] ) ), [Code] ) )
VAR _3 =
    SWITCH ( TRUE (), ISBLANK ( _2 ) = TRUE (), FALSE (), TRUE () )
RETURN
    _3

这是我的建议 - 我发现这段代码更具可读性,因此更容易一目了然地理解正在发生的事情。

Contains X := 
VAR _codes = 
    CALCULATETABLE ( 
        VALUES ( 'Table'[Code] ),
        ALLEXCEPT ( 'Table' , 'Table'[Doc] ) 
    )
VAR _filter = 
    FILTER ( 
        _codes ,
        CONTAINSSTRING ( [Code] , "X" )
    )
VAR _count = COUNTROWS ( _filter )
RETURN IF ( _count > 0 , TRUE , FALSE )

逻辑:

  1. 使用 Code 的所有值计算单列 table,当前(行上下文)值 Doc
  2. 对代码应用过滤器 table 寻找所需的字符串
  3. 计算剩余的行数table

如果计数为零,_count 变量将计算为空白。对于非零计数,我们希望 return TRUE.