打开分析时如何自动更新过滤器?

How can I automatically update a filter when my analysis is opened?

我有一列日期列表:

2015-01-01
2015-02-01
2015-03-01
2015-04-01
2015-05-01

我们现在是 2 月 1 日,所以我保存仪表板并设置筛选以仅保留日期介于 2 月 1 日和 4 月 1 日之间的行。下个月,我需要将过滤器更新到 3 月 1 日到 5 月 1 日之间(将日期过滤器的底部和顶部范围增加一个月)。

是否可以自动进行这种过滤,而无需手动调整过滤器?

不确定您的要求是什么,但您可以通过右键单击过滤器面板并 select 组织过滤器来访问过滤器选项。

https://docs.tibco.com/pub/spotfire/5.5.0-march-2013/UsersGuide/filter/filter_filtering_schemes.htm

有几个选项:

  1. 您可以创建一个计算列,如果日期在使用 DateDiff() 的给定范围内,则 returns 为布尔值 TRUE 或 FALSE。然后,只需将此列的过滤器设置为 TRUE,就只会显示该数据。 这是最简单的方法!

  2. 根据您想要的结果,您可以限制首先进入分析的数据。如果您的数据源是信息 link 或数据库连接,则可以执行此操作,但如果您使用 Excel 或 CSV 数据,则可能无法执行此操作。只需将 WHERE 子句附加到信息设计器中的查询,将语句限制为 select 您需要的日期范围。

  3. 您可以通过 IronPython 脚本调整过滤器,但是 Spotfire 没有在打开文档时使用 运行 脚本的内置机制*。由于您使用的是 Range filter,因此您可以使用如下代码。

我会把 Python 日期数学的奥秘留给你,但这应该让你开始。 注意您需要将此代码附加到按钮或其他一些用户操作;同样,它不是自动的。

from Spotfire.Dxp.Application.Filters import ValueRange, RangeFilter
from datetime import datetime, timedelta

#these are both CaSeSeNsItIvE
data_table_name = "Compliance Items"
column_name = "EventTimestamp"
days_ahead = 60

start = datetime.now().strftime('%Y-%m-%d') # today's date
end = (datetime.now() + timedelta(days = days_ahead)).strftime('%Y-%m-%d') # days_ahead in the future

filter_range = ValueRange(start, end) # create a ValueRange to set the filter

dt = Document.Data.Tables[data_table_name] # get data table reference by name

# get filter reference by column name
filter = Document.FilteringSchemes.DefaultFilteringSchemeReference[dt][column_name].As[RangeFilter]()

filter.ValueRange = filter_range

* 有一种方法可以将 Javascript 和 IronPython 脚本结合起来,以便在打开文档时自动执行脚本,但我认为对于这个用例来说,它有点过分了。