Я пытаюсь программно отфильтровать визуализацию 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 года, когда он должен показывать апрель-май 2019 года.
При печати переменной 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 - столбец данных, содержащий значения даты