返回字符串中第5个和第6个空格之间的字符串

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只有功能不能成为解决方案的一部分,谢谢!)

预先感谢您的帮助.

Max*_*kin 7

在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)