AWS QuickSight如何构建计算字段实现两字符串列互相包含匹配
AWS QuickSight 实现两字符串双向包含匹配的计算字段方法
QuickSight 中自带的 locate() 函数完全可以实现和 Power BI CONTAINSSTRING 等价的包含判断逻辑:该函数会返回待查找子串在目标字符串中首次出现的起始位置,未找到子串时返回0,只要判断返回值大于0,就能确认存在包含关系。
等价于提供的Power BI逻辑的计算字段表达式
直接在QuickSight新建计算字段时粘贴以下代码即可,返回结果和原Power BI逻辑完全一致,匹配时返回Yes,不匹配返回No:
ifelse( locate({Registered Owner}, {Alias_AKA.1}) > 0 OR locate({Alias_AKA.1}, {Registered Owner}) > 0, "Yes", "No" )
逻辑说明
locate(检索目标字符串, 待查找子串):注意两个参数的顺序,第一个参数是被搜索的文本,第二个是要匹配的子串- 两个
locate判断用OR连接,刚好覆盖双向包含场景:既检查Registered Owner是否包含Alias_AKA.1,也反向检查Alias_AKA.1是否包含Registered Owner - QuickSight 条件分支使用
ifelse()函数,参数顺序为「判断条件, 条件成立返回值, 条件不成立返回值」,和Power BI的IF()参数逻辑一致,只是函数名不同
常用变体
- 如果需要返回整数值(1=匹配,0=不匹配)代替Yes/No文本,直接替换返回值即可:
ifelse( locate({Registered Owner}, {Alias_AKA.1}) > 0 OR locate({Alias_AKA.1}, {Registered Owner}) > 0, 1, 0 )
- 如果需要忽略大小写做匹配,可以先用
tolower()/toupper()统一两个字段的大小写后再判断:
ifelse( locate(tolower({Registered Owner}), tolower({Alias_AKA.1})) > 0 OR locate(tolower({Alias_AKA.1}), tolower({Registered Owner})) > 0, "Yes", "No" )
之前尝试的locate({Registered Owner},{Alias_AKA.1})只做了单方向的包含检索,既没有加反向匹配判断,也没有通过返回值>0的条件输出布尔结果,所以无法直接得到预期的匹配输出。
内容的提问来源于stack exchange,提问作者Mark k
相关产品推荐
相关产品推荐

