2017-10-20 306 views
0

我們有許多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()函數的默認值,並且每天刷新報表時,無論如何都不會有用戶響應提示。這裏最好的方法是什麼?

+0

您需要重新創建整個相對日期部分,因爲它在WEBI報告中。您可以使用@PROMPT函數向用戶顯示相對日期,並在WEBI中編寫將根據用戶選擇準備查詢的代碼。例如,如果相對日期是YESTERDAY,那麼你應該在WEBI中編寫代碼,如果選擇YESTERDAY,則查詢需要在查詢中的前一個日期附加 – Siva

回答

0

我最終設法確定了一種做我所需要的方式。

使用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中使用派生表。執行報告時,會彈出「開始日期」提示,其中動態計算的日期等於上個月的開始日期。這可以手動更改爲任何其他日期,或保持原樣。在安排報告時,默認使用此動態日期值。