需求描述:
由于业务系统将被升级,现有的Spotfire报表的数据呈现将会收到影响。因此,用户希望能够在Spotfire中选择查看不同时间范围内的数据,即,业务系统升级前的数据和升级后的数据。
解决方法:
用户提出的方法是,创建两份Spotfire报表。我建议用户最好不要这样做,因为以后的维护成本将会翻倍。
目前我提出的解决方案是:创建一个cutoffDate的文档属性(Document Property)(control type为dropdown list),然后,对每个visualization view设置data limitation。已成功创建好一个demo,准备show给客户确认。
data limitation的expression大概如下:
If('${cutoffDate}'='BeforeCutoffDate',[ENG_YN]<>"Y" and [REPORT SUBMIT DATE] is not null and [REPORT SUBMIT DATE] < date(2017,10,18),[ENG_YN]<>"Y" and [REPORT SUBMIT DATE] is not null and [REPORT SUBMIT DATE] >= date(2017,10,18))
看起来可能比较吓人,其实,其结构仅仅是:
if ... else..., 即,如果用户选择的日期范围为“before Cutoff Date”,则使用以下条件进行限定数据:
[ENG_YN]<>"Y" and [REPORT SUBMIT DATE] is not null and [REPORT SUBMIT DATE] < date(2017,10,18)
否则,使用以下条件限定数据:
[ENG_YN]<>"Y" and [REPORT SUBMIT DATE] is not null and [REPORT SUBMIT DATE] >= date(2017,10,18)
所以,用户觉得挺困惑的问题,其解决方法可以简单到只需使用if...else...控制结构即可。
用户为什么会困惑?因为他已超出了用户的职责范围——清楚的表达业务需求,而试图猜想具体的解决方法。具体解决方案的提出,需要对底层实现比较了解,就交给开发人员好了!