2016-11-22 28 views
0

我有一個文檔屬性被用作報告的過濾器。這是一個多選列表框。我創建了一個計算字段(標誌),使用這個表達式:Spotfire 6.5:如何檢查查找函數中的確切值

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

的這裏的事情是,當我選擇從列表框中屬性即一個值。 「TV | HDTV」,則來自數據表的所有這些值開始正在返回,即返回位置,即, 「TV | HD」,「TV | HDTV」這兩個值都出現在圖上。值被合併在我不想要的行中。有什麼辦法可以做一個完全匹配或可以調整這個公式。

我不能將此標誌更改爲任何其他數據類型,因爲大約30次計算都基於此字段。

問候,

Subro

回答

2

想象一下,我自己。我明白,地圖功能就像一個模板。所以我想爲什麼不修改模板。這裏是我使用的代碼:

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

這適用於我的價值觀。我檢查了很多場景。此外,對於該屬性,我使用了一個字段來填充它,因爲我已經應用了Upper,所以基本上它已經包含已經以Upper形式出現的值。 @niko:謝謝你的幫助。我相信它也能起作用。爲我浪費的時間道歉。

問候,

Subro

1

你可以嘗試一個正則表達式替換比較:

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

如果針和乾草堆的字符串相匹配,RXReplace()(我加了"i"脫敏情況下)將返回一個空的字符串。

可能必須選擇一個不同的連接字符,或者你可能不得不連接"\\|"如果這是不可能的。

+1

謝謝@niko。我已經知道了。我用了一些更簡單的東西。 – Subro

+0

沒問題!如果您分享您的解決方案作爲答案,那將是非常好的。我沒有看到'$ map()'的很多例子,所以看看你想出了什麼:) – niko

+1

已經完成了兄弟! :) – Subro