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

时间:2015-11-09 14:00:08

标签: ironpython spotfire

我在列中有一个日期列表:

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日之间更新过滤器(将日期过滤器的底部和顶部范围增加一个月)。

是否有可能在不手动调整过滤器的情况下自动进行此类过滤?

2 个答案:

答案 0 :(得分:1)

有几种选择:

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

  2. 根据您所需的结果,您可以限制首先进入分析的数据。如果您的数据源是信息链接或数据库连接,则可以执行此操作,但如果您正在处理Excel或CSV数据,则可能无法执行此操作。只需在信息设计器中将WHERE子句附加到查询中,该子句限制语句以选择所需的日期范围。

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

  4. 我将把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脚本结合起来,在文档打开时自动执行脚本,但我认为对于这个用例来说,它太过分了。

答案 1 :(得分:0)

不确定您的要求,但是您可以通过右键单击过滤器面板并选择整理过滤器来访问过滤器选项。

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