您好,登錄后才能下訂單哦!
BIRT中如何根據參數實現動態日期分組,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
BIRT一般擅長處理規則一致的數據,若條件不一致的動態運算在報表中是很難實現的。常規辦法是創建scripted data sources, 在該腳本源上自行處理業務邏輯把數據準備好,然后直接傳給BIRT展現。但SQL或scripted data sources的方式,代碼寫起來非常麻煩,而且工作量很大。
比如要處理這么個場景:按照開始日期、結束日期統計一段時間內訂單,但要根據起止日期的跨度長短實現按天、按周、按月、按年動態分組顯示結果。查詢流程如下圖所示:
建議使用集算器,其豐富的集合運算可以方便地完成這類計算和邏輯判斷,比Java寫的代碼要短,比存儲過程寫起來更簡單,比如類似的計算在集算器里可以這樣寫:
A | B | |
1 | =[] | |
2 | =demo.query@x("select ORDERID,ORDERDATE,ORDERAMOUNT from ORDERS where ORDERDATE>=? and ORDERDATE<=?",startDate,endDate) | |
3 | =interval(startDate,endDate) | |
4 | if A3>365 | >A1=startDate|A3.(elapse@y(startDate,~)) |
5 | else if A3>30 | >A1=startDate|A3.(elapse@m(startDate,~)) |
6 | else if A3>15 | >A1=startDate|A3.(elapse(startDate,7*~)) |
7 | else | >A1=startDate|A3.(elapse(startDate,~)) |
8 | =A2.group(A1.pseg(ORDERDATE);~.count(ORDERID):TotalOrder,round(~.sum(ORDERAMOUNT),2):TotalOrderAmount,A1(#):BeginDate) | |
9 | =A8.new(BeginDate:BeginDate,#2:TotalOrder,#3:TotalOrderAmount) | |
10 | return A9 |
其中startDate,endDate為報表起止日期參數。
集算器提供了JDBC驅動,可以很方便的與BIRT等報表工具集成, BIRT調用SPL腳本有使用和獲得它的方法。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。