Tra*_*vis 3 substring tableau-api
我有一列字符串,如下所示:
目标主机:dcmxxxxxxc032.erc.nam.fm.com目标名称:dxxxxxxgsc047.erc.nam.fm.com文件系统/ u01具有4.98%的可用空间 - 低于警告(20)或严重(5)阈值.
列名是[描述]
我要返回的子字符串是(dxxxxxxgsc047.erc.nam.fm.com)
此数据中唯一的一致性是所需的字符串出现在字符串中第5和第6次出现的空格""之间,并且在短语"Target Name:"之后,子字符串的长度发生变化,但它始终以另一个""结尾因此我试图抓住第5和第6空间之间的子串.
我试过了
MID([Description],((FIND([Description],"Target Name: "))+13),FIND([Description]," ",((FIND([Description],"Target Name"))+14)))
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
(编辑:我们使用Tableau 8.2,Tableau 9只有功能不能成为解决方案的一部分,谢谢!)
预先感谢您的帮助.
在Tableau 9中,您可以在公式中使用正则表达式,这使任务更简单:
REGEXP_EXTRACT([Description], "Target Name: (.*?) ")
Run Code Online (Sandbox Code Playgroud)
或者在Tableau 9中,您可以使用新的FINDNTH函数:
MID(
[Description],
FINDNTH([Description]," ", 5) + 1,
FINDNTH([Description]," ", 6) - FINDNTH([Description]," ", 5) - 1
)
Run Code Online (Sandbox Code Playgroud)
在Tableau 9之前,你必须使用类似于你所尝试的字符串操作方法,只需要非常小心算术并提供正确的参数(第三个参数MID是长度,而不是结束字符的索引,所以我们需要减去起始字符的索引):
MID(
[Description]
, FIND([Description], "Target Name:") + 13
, FIND([Description], " ", FIND([Description], "Target Name:") + 15)
- (FIND([Description], "Target Name:") + 13)
)
Run Code Online (Sandbox Code Playgroud)