仅过滤画面中的字母值

Posted

技术标签:

【中文标题】仅过滤画面中的字母值【英文标题】:Filter only alphabetic values in tableau 【发布时间】:2021-03-30 08:36:16 【问题描述】:

我在 tableau 中有具有以下值的列: 1234 3456 6789 营地-1 营地-2 3号营地

我只想显示带有值的过滤器 营地-1 营地-2 3号营地

如何在 tableau 的过滤器中只选择字母值?

【问题讨论】:

你的意思是除了这三个之外,其他值对过滤器隐藏了吗? 【参考方案1】:

您的示例不清楚要包含什么以及要排除什么。为了更好地解释,我举了一个详细的例子

Case-1如果您想搜索/过滤digits at start,请使用此计算字段

REGEXP_MATCH([Field1], '^[0-9]')

Case-2如果你想搜索numbers anywhere,使用这个

REGEXP_MATCH([Field1], '(.*)[0-9]')

案例3如果需要digits only

REGEXP_MATCH([Field1], '^[0-9]+$')

case-4 for alphabet at start 使用这个

REGEXP_MATCH([Field1], '^[:alpha:]')

所有比赛的结果如下所示

注意结合numbers anywhere AND alphabet at start 可以只过滤掉case1、case2和case3。

祝你好运

【讨论】:

您好,谢谢。它帮助我找到了我想要的输出 很高兴得到帮助。请随时接受和投票,这通常在 Stack Overflow 上需要。【参考方案2】:

如果 Tableau 列包含数字和文本的混合,则该列将是文本列,并且所有内容都将被视为文本。这将问题减少为识别包含非数字值的特定行的问题。

这需要一些字符串操作和比较。如果您知道这些行中的内容结构是可预测的(例如,当行中有非数字字符时,第一个字符始终是字母),那么一个简单的等式将过滤这些行:

if ascii(left([Text And Numbers],1) )>57 then 'text' else 'number' END

这利用了数字 9 的 ASCII 十进制代码是 57 并且大多数具有更高代码的 ASCII 字符是字母或标点符号的观察结果(如果您的代码中除了数字、字母或标点符号之外什么都没有,这是一个公平的假设数据)。

显然,如果字母和数字可能出现在字符串中的任何位置,您需要一个更复杂的函数,但 Tableau 提供了使用 正则表达式 的选项,它可以像任何字母字符一样编码更复杂的文本分析存在于字符串中(有关适当的正则表达式的一些想法,请参阅this)。

【讨论】:

以上是关于仅过滤画面中的字母值的主要内容,如果未能解决你的问题,请参考以下文章

Libre Office 电子表格 - 如何在列中的多个重复值中仅保留一个值?

从数组值中过滤字典

如何根据键进行过滤以选择两个值中的任何一个

通过(例如:标题或描述)值中的关键字过滤多维数组(PHP)

仅存储多个用户生成值中的第一个的动态分配数组

ACF 默认值中的简码仅在保存帖子后才有效