最近使用Tableau在做一个人才标签可视化的项目,过程中需实现多标签联合搜索人才信息,
标签数据类似以下:执行力强;注册会计师认证CPA;高绩效,见下图个性标签列
需实现搜索: ”注册会计师 高绩效“ 将同时包含这两个标签的人才信息筛选出来,个性化标签列中标签是顺序是随机的,例如可能出现 高绩效;有耐心;注册会计师 等数据,在搜索时也要筛选出来,熟悉Tableau的朋友可能清楚,直接使用通配符类型的筛选器是无法满足该需求的。
最终实现效果如下图:
接下来将介绍实现过程和原理:
- 首先需创建一个用于搜索输入的参数如下图:
2.第二步将个性化标签字段拖拽到筛选器中,切换到条件页签,并进行如下设置:
公式代码见下方:
REGEXP_MATCH([个性化标签],'^(?=.*'
+SPLIT([人才标签参数],' ',1)+')(?=.*'+
SPLIT([人才标签参数],' ',2)+')(?=.*'+
SPLIT([人才标签参数],' ',3)+')(?=.*'+
SPLIT([人才标签参数],' ',4)+')'
+'.*$')
3.勾选显示人才标签参数控件:
至此功能已经实现;
回顾原理:主要考虑通过Tableau支持的完整正则匹配函数进行多字符匹配, 结合拆分函数对参数中输入的多词(标签)进行拆词,目前是放置了支持4个标签联合搜索,可根据需求进行增减,同时目前拆分是根据空格 进行的,也可根据需求自定义为顿号等其它字符,只需修改SPLIT函数的第二个参数。
如果帮助到您,欢迎点赞哦