如何在Spotfire中通过文档属性筛选行数据
多预测源数据筛选实现方案
需求说明
通过文档属性SelectFcstStreams(可选值:Core、NonCore、Upgrades、Refurb、DC、KF)筛选数据行,要求显示所有匹配任一选中预测源的行:
- 对应列规则:[core]值为
core或not core,[noncore]值为noncore或not noncore,其余列([refurb]/[upgrade]/[DC]/[KF])逻辑一致,列值为对应类型字符串或否定形式。
筛选表达式优化
推荐简洁写法(适配多数BI工具的Contains函数)
直接检查当前行的有效类型标识是否在用户选中的列表内:
Contains([${SelectFcstStreams}], [core]) OR Contains([${SelectFcstStreams}], [noncore]) OR Contains([${SelectFcstStreams}], [refurb]) OR Contains([${SelectFcstStreams}], [upgrade]) OR Contains([${SelectFcstStreams}], [DC]) OR Contains([${SelectFcstStreams}], [KF])
基于原Find函数的修正写法
若需保留Find函数,调整为如下逻辑(Find返回匹配位置,大于0即表示存在匹配):
Find([core], [${SelectFcstStreams}]) > 0 OR Find([noncore], [${SelectFcstStreams}]) > 0 OR Find([refurb], [${SelectFcstStreams}]) > 0 OR Find([upgrade], [${SelectFcstStreams}]) > 0 OR Find([DC], [${SelectFcstStreams}]) > 0 OR Find([KF], [${SelectFcstStreams}]) > 0
关键注意事项
- 字符串匹配一致性:必须保证文档属性的选项文本和列中的类型字符串完全匹配(例如文档属性选
Upgrades,但列值是upgrade时,需统一两者的大小写或用Lower函数转换,如Find(Lower([core]), Lower([${SelectFcstStreams}])) > 0) - 逻辑验证:
OR逻辑天然满足“选中多个选项时,显示符合任一条件的行”的需求,无需额外调整
内容的提问来源于stack exchange,提问作者mklob
相关产品推荐
相关产品推荐

