Powerbi 查找DAX中点后的最后一个值,例如,在value1.value2.value3中查找value3
我有一个带点的列,例如Powerbi 查找DAX中点后的最后一个值,例如,在value1.value2.value3中查找value3,powerbi,dax,Powerbi,Dax,我有一个带点的列,例如 project.phase.task project.task project.phase.subphase.task 在每一个实例中,我都想要最后一个doted值。 我正在使用DAX函数: lastVal = var i = FIND(".",'My Table'[wbs],1,-1) return if(i>0,mid('My Table'[wbs],i+1,99),"") 没有FindLast函数。我将如何模拟它? 这将是一个类似于在文件名或路径中查找文
project.phase.task
project.task
project.phase.subphase.task
在每一个实例中,我都想要最后一个doted值。
我正在使用DAX函数:
lastVal =
var i = FIND(".",'My Table'[wbs],1,-1)
return
if(i>0,mid('My Table'[wbs],i+1,99),"")
没有FindLast函数。我将如何模拟它?
这将是一个类似于在文件名或路径中查找文件扩展名的问题。使用DAX不需要这样做。您可以使用查询编辑器的“拆分列”功能来获取文本中位于最右边的点之后的部分
你不需要用DAX来做这件事。您可以使用查询编辑器的“拆分列”功能来获取文本中位于最右边的点之后的部分
你可以用DAX来做这件事 作为计算列:
lastVal =
PATHITEMREVERSE (
SUBSTITUTE (
'My Table'[wbs],
".",
"|"
),
1
)
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 )
作为一项措施:
lastValMeasure =
VAR MyString =
IF (
HASONEVALUE ( 'My Table'[wbs] ),
FIRSTNONBLANK ( 'My Table'[wbs], 1 ),
BLANK()
)
RETURN
PATHITEMREVERSE (
SUBSTITUTE (
MyString,
".",
"|"
),
1
)
你可以用DAX来做这件事 作为计算列:
lastVal =
PATHITEMREVERSE (
SUBSTITUTE (
'My Table'[wbs],
".",
"|"
),
1
)
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 )
作为一项措施:
lastValMeasure =
VAR MyString =
IF (
HASONEVALUE ( 'My Table'[wbs] ),
FIRSTNONBLANK ( 'My Table'[wbs], 1 ),
BLANK()
)
RETURN
PATHITEMREVERSE (
SUBSTITUTE (
MyString,
".",
"|"
),
1
)
您可以将字符串转换为索引的字符列表,然后获取最大索引后的字符 这应作为计算列使用:
lastVal =
PATHITEMREVERSE (
SUBSTITUTE (
'My Table'[wbs],
".",
"|"
),
1
)
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 )
如果您需要它作为度量,那么只需调整字符串变量以获得适当的聚合。例如,MAX'My Table'[wbs]或FIRSTNONBLANK'My Table'[wbs]、'My Table'[wbs]。您可以将字符串转换为索引的字符列表,然后获取最大索引后的字符 这应作为计算列使用:
lastVal =
PATHITEMREVERSE (
SUBSTITUTE (
'My Table'[wbs],
".",
"|"
),
1
)
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 )
如果您需要它作为度量,那么只需调整字符串变量以获得适当的聚合。例如,MAX'My Table'[wbs]或FIRSTNONBLANK'My Table'[wbs]、'My Table'[wbs]。巧妙地使用了路径函数!巧妙地使用了路径函数!谢谢你,亚历克西斯。正是我想要的。答案也迎合了奇怪的边缘情况,我没有定界符,只有最后一个值。关于DAX我还有很多要学的谢谢你Alexis。正是我想要的。答案也迎合了奇怪的边缘情况,我没有定界符,只有最后一个值。关于DAX,我有很多东西要学。答案很棒。我使用了复制列>拆分列>删除列作为拆分答案的第一部分。我使用了复制列>拆分列>删除列拆分的第一部分