如何在Tableau中实现全名部分字符的掩码隐藏?
在Tableau中实现姓名部分字符隐藏的方法
完全可以实现你要的效果,通过创建计算字段拆分并处理姓名的每个组成部分即可,具体操作如下:
1. 拆分姓名的三个模块
原姓名格式为Surname, FirstName MiddleName,先用SPLIT函数拆分出姓氏、名字、中间名:
- 姓氏:
TRIM(SPLIT([FullName], ",", 1)) - 名字:
TRIM(SPLIT(SPLIT([FullName], ",", 2), " ", 1)) - 中间名:
TRIM(SPLIT(SPLIT([FullName], ",", 2), " ", 2))
2. 单个姓名模块的处理逻辑
对每个模块,保留前2个字符和最后1个字符,中间用X填充(填充数量为原字符串长度减3);如果字符串长度≤3,直接保留原内容(避免不合理截断):
IF LEN([目标字段]) > 3 THEN LEFT([目标字段], 2) + REPEAT("X", LEN([目标字段]) - 3) + RIGHT([目标字段], 1) ELSE [目标字段] END
3. 拼接处理后的完整姓名
把三个处理后的模块按原格式拼接,完整计算字段代码如下:
// 处理姓氏 IF LEN(TRIM(SPLIT([FullName], ",", 1))) > 3 THEN LEFT(TRIM(SPLIT([FullName], ",", 1)), 2) + REPEAT("X", LEN(TRIM(SPLIT([FullName], ",", 1))) - 3) + RIGHT(TRIM(SPLIT([FullName], ",", 1)), 1) ELSE TRIM(SPLIT([FullName], ",", 1)) END + ", " + // 处理名字 IF LEN(TRIM(SPLIT(SPLIT([FullName], ",", 2), " ", 1))) > 3 THEN LEFT(TRIM(SPLIT(SPLIT([FullName], ",", 2), " ", 1)), 2) + REPEAT("X", LEN(TRIM(SPLIT(SPLIT([FullName], ",", 2), " ", 1))) - 3) + RIGHT(TRIM(SPLIT(SPLIT([FullName], ",", 2), " ", 1)), 1) ELSE TRIM(SPLIT(SPLIT([FullName], ",", 2), " ", 1)) END + " " + // 处理中间名 IF ISNULL(TRIM(SPLIT(SPLIT([FullName], ",", 2), " ", 2))) THEN "" ELSEIF LEN(TRIM(SPLIT(SPLIT([FullName], ",", 2), " ", 2))) > 3 THEN LEFT(TRIM(SPLIT(SPLIT([FullName], ",", 2), " ", 2)), 2) + REPEAT("X", LEN(TRIM(SPLIT(SPLIT([FullName], ",", 2), " ", 2))) - 3) + RIGHT(TRIM(SPLIT(SPLIT([FullName], ",", 2), " ", 2)), 1) ELSE TRIM(SPLIT(SPLIT([FullName], ",", 2), " ", 2)) END
4. 应用计算字段
将上述代码创建为新的计算字段(比如命名为隐藏部分字符的姓名),拖到视图中就能看到目标效果。
补充调整
如果需要修改首尾保留的字符数量,只需调整LEFT的第二个参数(比如改成1就是保留首1位),同时对应修改LEN([目标字段]) - 3中的数值(比如保留首1尾1,就改成LEN([目标字段]) - 2)。
内容的提问来源于stack exchange,提问作者user6751695
相关产品推荐
相关产品推荐

