Spotfire 6.5:如何检查 Find 函数中的精确值

Spotfire 6.5: How to check exact value in Find function

我有一份文件 属性,它被用作报告的过滤器。它是一个多 select 列表框。我创建了一个使用此表达式的计算字段(标志):

if(find(Upper(Concatenate([Col1],' | ',[Col2])),Upper('$map("sum([${Property}])", ",")'))>0,"Yes", "No" )

这里的事情是当我 select 来自列表框 属性 的值时,即。 "TV | HDTV" 然后数据 Table 中的所有这些值开始出现,它们正在返回位置即。 "TV | HD" , "TV | HDTV" 这两个值都出现在图表上。值组合在我不想要的行中。有什么方法可以进行精确匹配,或者可以调整此公式。

我无法将此标志更改为任何其他数据类型,因为大约 30 个计算基于此字段。

此致,

副手

您可以尝试使用正则表达式替换比较:

If( RXReplace(Concatenate([Col1], ' | ', [Col2]), Concatenate('^', '$map("sum([${Property}])", ",")', '$'), "", "i") = "", "Yes", "No")

如果 needle 和 haystack 字符串匹配,RXReplace()(我添加了 "i" 以脱敏大小写)将 return 一个空字符串。

可能必须选择管道以外的其他连接字符,或者如果不可能,您可能必须与 "\|" 连接。

这是我自己想出来的。我知道 map 函数就像一个模板。所以我想为什么不修改模板。这是我使用的代码:

If(Upper(Concatenate([Col1],' | ',[Col2])) in ($map("'${Property}'", ",")),"Yes","No")

这很符合我的价值观。我检查了很多场景。同样对于 属性 我使用了一个字段来填充它,在我应用 Upper 的地方所以基本上它已经包含了作为 Upper 出现的值。 @niko:谢谢你的帮助。我相信它也会奏效。为我浪费的时间道歉。

此致,

副手