我正在尝试根据数据表中的日期列以编程方式过滤SpotFire可视化。更具体地说,我正在尝试过滤可视化,以使其仅显示最近完成的月份与该月份之前的月份之间的时间段(逐月比较)。例如,如果当前是六月,则可视化效果应仅显示四月至五月。
我尝试使用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是包含日期值的数据列
答案 0 :(得分:0)
我不确定为什么要通过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)
答案 1 :(得分:0)
我应该提到我已经解决了我的问题,并将解决方案作为对原始问题的修改。