现场火灾可视化的日期范围问题



我正在尝试根据数据表中的日期列以编程方式过滤 SpotFire 可视化效果。更具体地说,我正在尝试过滤可视化效果,以便它仅显示最近完成的月份和前一个月之间的时间段(月环比比较)。例如,如果当前为 6 月,则可视化效果应仅显示 4 月至 5 月。

我尝试使用 DateTime 对象来完成此操作,但我遇到了一些问题。

today = DateTime.Today
momEnd = today.AddDays(-today.Day)
momBeg = today.AddMonths(-2).AddDays(-today.Day+1)
for visual in Document.ActivePageReference.Visuals:
if visual.Title == myVis.Title:
newVis = visual.As[Visualization]()
newVis.XAxis.Range = AxisRange(momBeg, momEnd)

此代码确实筛选可视化效果,但它仅显示 2016 年 1 月,而此时应显示 2019 年 4 月至 5 月。

打印 newVis.XAxis.Range 变量将显示以下字符串:

AxisRange[Low=4/1/2019 12:00:00 AM, High=5/31/2019 12:00:00 AM]

这应该是正确的,但正如我提到的,我没有从可视化中看到正确的行为。

任何修复或替代方案将不胜感激。

编辑:我正在使用专有数据,所以我无法提供示例数据。我实际上为此找到了解决方法。我没有使用 XAxis.Range,而是直接过滤可视化数据。基本上我替换了

newVis.XAxis.Range = AxisRange(momBeg, momEnd)

跟:

newVis.Data.WhereClauseExpression = "[" + timeColumn + "] >= Date(Year(DateTimeNow()),Month(DateTimeNow())-2,1) AND [" + timeColumn + "] <= DateAdd("day",-1,date(Year(DateTimeNow()),Month(DateTimeNow()),1))"

其中 timeColumn 是包含日期值的数据列

我不确定你为什么要通过IronPython这样做。您可以直接在可视化效果上使用数据限制。

(DateDiff('month',
Date(DatePart('year', [Timestamp]), DatePart('month', [Timestamp]), 1),
DateTimeNow()) > 1 
And DateDiff('month',
Date(DatePart('year', [Timestamp]), DatePart('month', [Timestamp]), 1),
DateTimeNow()) < 3)

我应该提到我解决了我的问题,并将解决方案作为对我原始问题的编辑。

最新更新