轉摘:解決動態列固定行月季年組合式報表

來源:互聯網
上載者:User

簡述以Cognos開發視角說資料倉儲設計

Cognos8.3 Report Studio設計企業級分析報表已經滿足大部分企業報表需求,但不能真正滿足中國式特殊財務報表。基於工具本身特點,資料邏輯規劃來看,對不符合資料結構性的手工報表很難一次性整合大的指令碼實現。很多設計過類似報表的開發人員,會用一貫的設計思路,在資料集市層整合所有資料來源,利用Cognos工具簡單取數,這種方式很好,但不靈活,每次需求變更就會改動過程與視圖。對於高度集中企業資料嚴格保密的環境下,不是你想去資料庫改改過程,調整程式。我的建議是根據現有開發設計環境思考一個問題,哪種解決辦法最有效,最快捷能體現需求變更,前端應用調整相應及時。

商業BI系統中,設計的目標不是為核心業務系統的做業務報表,也不是給其他系統提供即時資料查詢平台。如果理解成報表系統、資料大集中系統,或者類似於運營資料共用平台(ODS),這對設計EDW思路相違背,導致系統設計走上末路,不到兩三年系統運營支撐相當難。合理的設計規劃,有利二次開發與升級,降低IT運營成本,對往後系統二期、三期改造降低風險與開發週期。而這些設計跟前端報表有什麼關係,我明確指出一點:需求調研、系統設計、模型規劃、ETL倒換等後台設計處處都影響前端開發,前端是使用者最直接最快捷反映系統運行能力與資料準確性。對設計前端人員需要瞭解更多需求,配合需求人員調研,結合當前系統使用的工具,以及應用開發架構等因素,規範報表格式,統一各業務部門需求指標,針對特殊報表或者財務上報資料另行討論。

實施動態列固定行月季年組合式報表方案

什麼是動態列固定行報表,動態列固定行報表是我自己提出的一種新說法,相信大家對平面報表的列表很清楚吧,列表就簡單的固定列動態行報表。動態列是不固定的列成員,在一段時間裡,列是根據業務資料動態響應,聯動關聯基礎維度資訊。固定行是橫向觀察,每行對應動態多個列,展現一個完整的記錄資訊。讓我們瞭解一下動態列固定行年月季組合報表樣式:

報表展現要求:日期列必須全部顯示,沒有值預設是“0”或者“/ ”,按日期月份選擇,如:選擇5月份,除6~12月份、三四季度、下半年為空白,,其他月份、季度、年必須有值。

邏輯設計思路

方法一:在資料集市層整合報表格式的資料,季度、年、全年在表資料體系,定義一個月季年維度,識別欄位包含12月、四個季度、上下半年、全年。在資料執行個體層,統計日期與剛剛定義的月季年維度存在一個N:1的關係。

方法二:利用Cognos工具的特點,利用多個子查詢UNION、JOIN組合實現,單獨對季度、年、全年計算。而資料集市層不需要對事實表做處理,但做一個月季年維度視圖。

 

利用方法二執行個體操作:

我比較贊成第二種方法,後台資料處理少,視圖調整方便。子查詢處理容易理解,圖形介面友好,查錯糾正易定位。

報表用的查詢有:日期查詢,客戶統計分析_ALL。

詳細設計圖如下,各查詢事先定義好,約束條件都捆綁在事實資料中。

日期查詢與客戶分析查詢是通過外關聯組合,運算式如下:

[客戶分析查詢].[CAL_MON_NUM] = [日期_查詢].[CAL_MON_NUM]

客戶分析查詢中,關聯欄位CAL_MON_NUM是從自訂的月季年維度資料表取12個月編碼,季度、上下半年、全年是基於12個月組合判斷得到。

如下:

--季度

[客戶分析查詢].[CAL_MON_NUM]

case

when ([客服報表分析].[V_D_CAL_MON_ALL].[CAL_MON_NUM] in (1,2,3) ) then (13)

     when ([客服報表分析].[V_D_CAL_MON_ALL].[CAL_MON_NUM] in (4,5,6) ) then (14)

     when ([客服報表分析].[V_D_CAL_MON_ALL].[CAL_MON_NUM] in (7,8,9) ) then (15)

     when ([客服報表分析].[V_D_CAL_MON_ALL].[CAL_MON_NUM] in (10,11,12) ) then (16)

end

[客戶分析查詢].[CAL_MON_NM_1]

case when ([CAL_MON_NUM]=13) then ('一季度')

     when ([CAL_MON_NUM]=14) then ('二季度')

     when ([CAL_MON_NUM]=15) then ('三季度')

     when ([CAL_MON_NUM]=16) then ('四季度')

end

上下半年、全年方式同季度查詢,並集月份、季度、半年、全年四個字查詢。

日期查詢也類似方法,得到的結果如下:

頁面設計就根據自己報表的樣式調整,但這類報表必須選擇“交叉表”控制項,因為列是動態,以後資料庫存在就顯示,不存在就不顯示。對於管理機構層,不確定因素,以後會發展潛在地區的分公司,就給予動態產生。

設計後,大概結果如下,因資料庫只有12月測試資料。

總結:報表開發沒有固定設計模式,不同需求,根據需求確定。雖然樣式基本相似,在設計模型上要考慮前後端,報表控制項選擇,子查詢組合等。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.