从 Tableau 中的复杂字符串中解析名称
Parsing a name from a complex string in Tableau
我在 Tableau 中有一系列值,它们是混合了字母和数字的长字符串。我无法控制数据输出,但想从这些字符串中解析名称。它们遵循以下格式:
- 土豆 1TByte 4.5 NFA
- 主板 256GByte 553 NCA
- 启动 4 512GByte 4.5 NFA
- 启动 4S 512GByte 4.5 NCA
从每一个中,我试图捕捉以下内容:
- "Potato"
- "Board"
- "Launch 4"
- "Launch 4S"
每个字符串都遵循相同的格式:名称,然后是大小,然后是一些我们并不真正关心的额外信息。
我已经尝试将一些文本解析字符串放在一起,但效果不佳,而且我仍在努力学习正则表达式。
我尝试使用的 Tableau 计算字段如下所示:
LEFT([String], FIND([String], "Byte") - 2)
问题是 Byte 前面的文本和数字可以是 4 到 2 个字符,我需要一种方法来识别它的长度。
如有任何帮助,我们将不胜感激!
一个使用正则表达式替换的选项:
REGEXP_REPLACE('Launch 4 512GByte 4.5 NFA', ' \d+[A-Z]Byte .*$', '')
这会去掉 Byte
项到右边的所有内容,只留下产品名称。
您可以尝试以下方法 - 这似乎有效 - Screenshot of Tableau output。在下面找到您在屏幕截图中看到的各种派生列的公式(您的源列称为 [Name])
- 步骤 1 =
LEFT([Name],FIND([Name],"Byte")-1)
- 步骤 2 =
LEN([Step1])-LEN(REPLACE([Step1]," ",""))
- 步骤 3 =
FINDNTH([Step1]," ",[Step2])
- Step4 =
LEFT([Step1],[Step3]-1)
当然,您可以将所有这些嵌套在一个计算字段中 - 将它们保留为单独的列以便于理解
我在 Tableau 中有一系列值,它们是混合了字母和数字的长字符串。我无法控制数据输出,但想从这些字符串中解析名称。它们遵循以下格式:
- 土豆 1TByte 4.5 NFA
- 主板 256GByte 553 NCA
- 启动 4 512GByte 4.5 NFA
- 启动 4S 512GByte 4.5 NCA
从每一个中,我试图捕捉以下内容:
- "Potato"
- "Board"
- "Launch 4"
- "Launch 4S"
每个字符串都遵循相同的格式:名称,然后是大小,然后是一些我们并不真正关心的额外信息。
我已经尝试将一些文本解析字符串放在一起,但效果不佳,而且我仍在努力学习正则表达式。
我尝试使用的 Tableau 计算字段如下所示:
LEFT([String], FIND([String], "Byte") - 2)
问题是 Byte 前面的文本和数字可以是 4 到 2 个字符,我需要一种方法来识别它的长度。
如有任何帮助,我们将不胜感激!
一个使用正则表达式替换的选项:
REGEXP_REPLACE('Launch 4 512GByte 4.5 NFA', ' \d+[A-Z]Byte .*$', '')
这会去掉 Byte
项到右边的所有内容,只留下产品名称。
您可以尝试以下方法 - 这似乎有效 - Screenshot of Tableau output。在下面找到您在屏幕截图中看到的各种派生列的公式(您的源列称为 [Name])
- 步骤 1 =
LEFT([Name],FIND([Name],"Byte")-1)
- 步骤 2 =
LEN([Step1])-LEN(REPLACE([Step1]," ",""))
- 步骤 3 =
FINDNTH([Step1]," ",[Step2])
- Step4 =
LEFT([Step1],[Step3]-1)
当然,您可以将所有这些嵌套在一个计算字段中 - 将它们保留为单独的列以便于理解