Spotfire可视化上的日期范围问题

时间:2019-06-04 15:05:31

标签: ironpython spotfire

我正在尝试根据数据表中的日期列以编程方式过滤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是包含日期值的数据列

2 个答案:

答案 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)

我应该提到我已经解决了我的问题,并将解决方案作为对原始问题的修改。