如何在 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 )
逻辑:
- 使用
Code
的所有值计算单列 table,当前(行上下文)值 Doc
- 对代码应用过滤器 table 寻找所需的字符串
- 计算剩余的行数table
如果计数为零,_count
变量将计算为空白。对于非零计数,我们希望 return TRUE
.
我的 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 )
逻辑:
- 使用
Code
的所有值计算单列 table,当前(行上下文)值Doc
- 对代码应用过滤器 table 寻找所需的字符串
- 计算剩余的行数table
如果计数为零,_count
变量将计算为空白。对于非零计数,我们希望 return TRUE
.