如何在Web Intelligence报表中支持相对日期参数
我们有许多Crystal Reports 2011报表,这些报表当前由自定义的.Net Winforms调度应用程序自动执行并导出。这些报告都使用SQL命令和手工SQL来针对我们无法修改的第三方架构获得最佳性能。如何在Web Intelligence报表中支持相对日期参数
许多报告包括日期参数,这些日期参数通常设置为类似上一个工作日或上个月的开始时间等,并且执行报告时要应用于这些参数的值通过调度计算在当前日期之前申请。这些参数是SQL级别参数,用于减少从DB返回的结果集。
我们现在必须将Crystal Reports报告迁移到Business Objects。为了保持报表SQL的性能,我们希望从Web Intelligence报表中的Crystal Reports或最小Universe中的派生表中重用Freehand SQL - 我们不希望针对目标创建Universe架构。
我们需要能够自动计划Webi报告每天,并计算并传入基于日期的参数,结果以Excel和PDF格式导出,就像今天一样(用户将不能通过网络界面访问 - 他们只会从网络驱动器获取输出)。理想情况下,我们希望保留参数,以便报告可以在不同的日期范围内独立运行。
我想知道的是,如何在BI技术中最好地支持该参数化和自动默认值计算?我似乎无法获得使用@Prompt()函数的默认值,并且每天刷新报表时,无论如何都不会有用户响应提示。这里最好的方法是什么?
我最终设法确定了一种做我所需要的方式。
使用BO4.2信息设计工具,我执行以下步骤来支持开始上个月结束上个月的动态报告参数的:
1)在数据基础,创建一个名为StartOfLastMonth新参数,勾选“提示用户”复选框(如果需要,这可以手动覆盖默认值)。
2)勾选参数选项标签底部的“设置默认值”复选框,然后点击“公式”单选按钮。
3)单击省略号公式栏的右侧,并进入表达:
RelativeDate(RelativeDate(RelativeDate(CurrentDate();-DayNumberOfMonth(CurrentDate()));1);-1;MonthPeriod)
4)创建基于我的水晶报表命令SQL派生表,并参考这个参数在哪里子句:
where l.datetime >= @Prompt(StartOfLastMonth)
5)将我的报表的派生表添加到业务层并将业务层发布到存储库。
6)根据发布的Universe创建Webi中的新报告,并在报告Query中使用派生表。执行报告时,会弹出“开始日期”提示,其中动态计算的日期等于上个月的开始日期。这可以手动更改为任何其他日期,或保持原样。在安排报告时,默认使用此动态日期值。
您需要重新创建整个相对日期部分,因为它在WEBI报告中。您可以使用@PROMPT函数向用户显示相对日期,并在WEBI中编写将根据用户选择准备查询的代码。例如,如果相对日期是YESTERDAY,那么你应该在WEBI中编写代码,如果选择YESTERDAY,则查询需要在查询中的前一个日期附加 – Siva