Python 使用spotfire的日期过滤器和相对日期输入框

Python 使用spotfire的日期过滤器和相对日期输入框,python,date,ironpython,spotfire,Python,Date,Ironpython,Spotfire,有人能帮我创建一些东西,让我可以选择相对的时间段(输入框中有最后7天、14天和30天),并能够使用SPOTFIRE中的日期过滤器选择特定的日期范围吗 我有这个想法,但看起来我需要写一个python脚本。没有经验。谢谢你的帮助 我可能想做的是: 编写一个脚本,在输入框更新时更新。首先检查脚本以查看值是0还是null(取决于您选择的值)。如果是,它将删除可视化的数据限制表达式。如果输入框中有有效值,则需要(a)重置日期过滤器以选择所有值,以及(b)将可视化的数据限制表达式设置为[date]>Max(

有人能帮我创建一些东西,让我可以选择相对的时间段(输入框中有最后7天、14天和30天),并能够使用SPOTFIRE中的日期过滤器选择特定的日期范围吗

我有这个想法,但看起来我需要写一个python脚本。没有经验。谢谢你的帮助

我可能想做的是:

编写一个脚本,在输入框更新时更新。首先检查脚本以查看值是0还是null(取决于您选择的值)。如果是,它将删除可视化的数据限制表达式。如果输入框中有有效值,则需要(a)重置日期过滤器以选择所有值,以及(b)将可视化的数据限制表达式设置为
[date]>Max(DateAdd('dd',-${p.NumberOfDays}[date])

提问时要小心,但在你的情况下,你可以在你想受影响的内容框中使用这个表达式

[Date] >= DateAdd('dd', ${p.NumberOfDays} * -1, [Date])
AND
[Date] < DateTimeNow()

我使用了这里详述的技术:

我在文本区域中创建了一个下拉列表控件,名为属性NextNDays,并设置表达式=

For next 30 days:
Display Name = "Next 30 Days"
Expression = "If(DateDiff('day',DateTimeNow(),[MY_DATE_FIELD]) < 31 and [MY_DATE_FIELD] > DateTimeNow(),True)"

For next 60 days:
Display Name = "Next 60 Days"<
Expression = "If(DateDiff('day',DateTimeNow(),[MY_DATE_FIELD]) < 61 and [MY_DATE_FIELD] > DateTimeNow(),True)"
未来30天:
显示名称=“未来30天”
表达式=“如果(DateDiff('day',DateTimeNow(),[MY_DATE_FIELD])<31和[MY_DATE_FIELD]>DateTimeNow(),True)”
未来60天:
显示名称=“下一个60天”<
表达式=“如果(DateDiff('day',DateTimeNow(),[MY_DATE_FIELD])<61和[MY_DATE_FIELD]>DateTimeNow(),True)”

非常感谢您的快速回复。我在“限制数据”部分尝试了你的表达式,但不起作用。我可以使用日期过滤器进行过滤,但当我在输入框中输入值时,结果仍然基于日期过滤器进行过滤,而不是基于输入框中的值。有什么不起作用?表达式是否返回错误?为了使此表达式正常工作,您不希望使用日期筛选器。否则,您将遇到冲突的筛选情况。例如,这就像使用两个日期过滤器并将它们设置为不同的标准。分析人员不知道该用哪个。因此,将日期筛选器设置为包含所有日期,然后根据${p.NumberOfDays}enteredIt的未抛出错误对分析进行筛选。当我在输入框中输入一个值时,viz不会被这个输入框值过滤。这真的是你的文档属性名吗?是的(${p.NumberOfDays}),谢谢分享。这在一定程度上有所帮助。但我希望我的约会过滤器也能工作。在这种情况下,只有下拉菜单起作用,日期过滤器不起作用。当我的下拉列表未被选中时,我希望我的日期过滤器工作。我添加了一个表达式为true的“All”选项,默认情况下它处于选中状态。当选择“全部”时,日期过滤器(我正在使用滑块)工作。我的理解是,过滤器应用于“表达式限制”之后的数据。
For next 30 days:
Display Name = "Next 30 Days"
Expression = "If(DateDiff('day',DateTimeNow(),[MY_DATE_FIELD]) < 31 and [MY_DATE_FIELD] > DateTimeNow(),True)"

For next 60 days:
Display Name = "Next 60 Days"<
Expression = "If(DateDiff('day',DateTimeNow(),[MY_DATE_FIELD]) < 61 and [MY_DATE_FIELD] > DateTimeNow(),True)"