我有一列带有虚线值,例如
project.phase.task
project.task
project.phase.subphase.task
在每个实例中,我想要最后一个值。 我正在使用DAX功能:
lastVal =
var i = FIND(".",'My Table'[wbs],1,-1)
return
if(i>0,mid('My Table'[wbs],i+1,99),"")
没有FindLast函数。我将如何模拟它? 这类似于在文件名或路径中找到文件扩展名。
答案 0 :(得分:3)
答案 1 :(得分:3)
您可以使用DAX进行此操作。
作为计算列:
lastVal =
PATHITEMREVERSE (
SUBSTITUTE (
'My Table'[wbs],
".",
"|"
),
1
)
作为衡量标准:
lastValMeasure =
VAR MyString =
IF (
HASONEVALUE ( 'My Table'[wbs] ),
FIRSTNONBLANK ( 'My Table'[wbs], 1 ),
BLANK()
)
RETURN
PATHITEMREVERSE (
SUBSTITUTE (
MyString,
".",
"|"
),
1
)
答案 2 :(得分:2)
您可以将字符串转换为索引的字符列表,然后在最大索引的.
之后获取字符。
这应该用作计算列:
lastVal =
VAR String = 'My Table'[wbs]
VAR StringLength = LEN ( String )
VAR StringToTable =
ADDCOLUMNS (
GENERATESERIES ( 1, StringLength ),
"Char", MID ( String, [Value], 1 )
)
VAR LastDot = MAXX ( FILTER ( StringToTable, [Char] = "." ), [Value] )
RETURN
RIGHT ( String, StringLength - LastDot )
如果需要使用它作为度量标准,则只需调整String
变量即可采用适当的汇总。例如,MAX('My Table'[wbs])
或FIRSTNONBLANK('My Table'[wbs], 'My Table'[wbs])
。