Проблемы с диапазоном дат при визуализации Spotfire - PullRequest
0 голосов
/ 04 июня 2019

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

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Я должен упомянуть, что я решил свою проблему и обратился к решению как к редактированию моего исходного вопроса.

0 голосов
/ 12 июня 2019

Я не уверен, почему вы делаете это через 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...