另眼看BI專案報表設計

2021-04-22 01:03:28 字數 3203 閱讀 9384

中小企業的bi專案(或者決策支援專案)一般包括資料倉儲設計、etl的設計與開發、報表的設計與開發和portal的設計與開發。其中,bi報表是交付給客戶最重要的專案成果,bi專案成敗很大程度上取決於報表的設計與開發。本文總結了筆者這幾年來的bi報表設計與開發經驗,請讀者批評指正。

一、 bi專案前端展現架構

當前主流的bi前端展現工具採用b/s結構管理和發布報表,方便使用者可以通過internet/intranet來訪問和瀏覽。通常企業會購買一種或幾種前端工具,通過這些前端工具製作發布報表,然後將這些報表整合到企業的portal上,使用者可以通過登陸portal來訪問和檢視報表。(架構如下圖1所示)。這種架構有以下優點:

(1)採用b/s架構不需要配置客戶端,並且只要是能夠訪問internet/intranet都能訪問,極大的提高了使用者檢視報表的便利性。

(2)解決報表工具licenses問題,通過報表的整合過程的二次開發節約licenses使用者個數 。

(3)解決了報表工具的發布之後訪問風格與客戶企業應用風格不一致的問題。

(4)可以有更靈活的使用者和許可權管理方式(如:一些企業裡使用windows ad認證,而報表工具會有一套自己的使用者認證方式,可以通過portal的方式進行二次開發可以進行統一的ad認證)。

(圖1)

二、 報表的分類

一些bi專案可能最終交付給客戶的有上百張或者幾百張報表,但是這些報表歸納起來分兩種: 普通的報表和分析報表。普通的報表是那種需求比較簡單,格式比較固定,沒有或者比較簡單的查詢條件的報表,一般這一類報表是給業務人員在日常的業務操作中用到的一些報表,這些報表只是簡單的把業務人員需要的資料展現出來。分析報表是需求比較複雜,查詢條件靈活,涉及到切片和鑽取,展現出來的資料不是簡單的從資料庫中得到,而是能根據查詢出來的資料對照業務規則得出一些結論的報表。分析報表一般面對業務人員和企業的管理人員。

例如在乙個通過連鎖店的方式銷售某類產品的公司來說,每個店面的店長可能對每天的銷售的產品和每天的營利情況比較關心,對於他來說,他的需求就是需要一張當天銷售所有產品的清單,這個清單可以包括產品的名稱、數量、單價、顧客、**手段等資訊,另外一張報表就是營利報表,他想知道今天營利多少了,那幾種商品營利最高,那幾種商品賣的最多等。而對於該公司的管理層如區域經理來說,除了知道他所管理轄的店面的這些資訊之外,他還想知道,在他所管轄的店面裡,在乙個時間段內(可能是某幾天、月、季、年)的銷售、營利、有效的**手段的分析,同過去的相同時段銷售的對比分析等分析。這裡需要為這個區域經理設計:銷售分析報表,這個報表可以讓使用者輸入某個時間段或者日期,展示天或月或季或年的所屬店面的銷售資料;同比或環比報表,使用者可以輸入店面、日期等條件,列出時間段內的同比或者環比的分析;**手段的分析,通過使用者輸入日期、店面的等條件,列出前幾名或後幾名的**方式,並且通過鑽取,可以分別看到每一種**方式的明細資訊。從這個報表的分析可以看到那種**方式更有效,分析後幾名的**方式失敗在那裡。很明顯,這個例子中店長要求的每天銷售產品的清單的報表就是普通報表,店長的營利報表和區域經理的報表是分析報表。

在實際的專案過程中,還存在一類報表就是儀錶盤,本質上來說,儀錶盤也是一種分析報表,只不過這個分析報表可能只展示一些企業經營過程中的kpi資料,儀錶盤面對的使用者是企業高層管理者。儀錶盤中展示的kpi資料可以通過一級一級的鑽取看到相對明細的資料。

報表按照實現方式還可以分析平面報表和多維報表。

三、 報表設計方法

通常情況下,我們通過報表工具來製作報表,不同的報表工具制方法不盡相同,但總的分為以下三類:

(1)、通過拖曳的方式製作報表。

(2)、通過sql的方式來得到報表的資料,然後通過報表工具展示出來。

(3)、使用jsp、asp.net等網路程式語言開發頁面的方式製作報表。

通過拖曳的方式製作報表,一般情況下是先連線到某種cube資料庫,然後根據報表的需求,拖曳不同的維度和事實生成不同的報表。另外一種情況是通過拖曳經過轉換的資料庫欄位的方式來實現報表,bo報表工具就是先將要分析的資料表通過中間層(universe)工具定義成有意義的維度欄位和度量字段,然後通過報表工具連上定義好的中間層(universe),通過拖曳定義好的中間層的維度和度量生成不同的報表。通過連到cube拖曳生成報表的方式主流前端工具都支援,如:hyperion、cognos、bo、sql server 2005 reporting service。這種方法主要優點是當cube(或者bo的universe)設計好了之後,可以很快的設計出報表。一般情況下,當cube(universe)設計好了之後,向業務人員開放,由業務人員根據業務的變化情況設計報表。

通過sql方式查詢到報表的結果,然後通過報表工具展現出來,這種方式筆者通過sql server 2005 reporting service實現過,sql server 2005 reporting service允許使用者通過寫sql從關聯式資料庫獲取展示的結果集(也可以通過mdx語句查詢多維資料庫獲得結果集),然後通過reporting service工具製作報表。這種方式優點是可以結合sql的靈活性和reporting service強大的報表功能,設計出的報表更好的滿足客戶的需求。

通過頁面的方式製作報表是最靈活製作方式,可以不受報表工具的限制設計和製作報表。一般情況下使用jsp或者asp.net,通過sql的方式從後台資料倉儲讀取資料,製作成網頁的形式發布報表。

四、 報表的測試和交付

報表在交付使用者之前需要經過嚴格的測試,報表的測試主要包括下面幾個方面:

(1)、報表資料的正確性測試

(2)、報表的速度測試

(3)、報表頁面測試(用字,編排)

報表資料正確性測試一般需要保證報表展示的資料要和後台資料庫的資料一致(但最終要和業務部門的手工報表一致,但達到這個要求前提是經過etl過來的資料是正確的),通常是先執行一張報表,然後根據報表的查詢條件和指標業務邏輯通過手工寫sql的方式從後台資料庫算出其中的每乙個指標,對照這兩種方式的結果,找出不一致結果進行修正。報表的速度也是乙個重要的測試內容,一般情況下,通過測試人員的訪問來測試報表的執行速度,對於執行慢的報表要進行調優。對於通過sql查詢得到結果集的報表需要對sql語句、索引、表或檢視的設計等方面進行調優。對於通過cube方式生成報表的,可以考慮對cube資料庫進行調優(設計分割槽或者聚合)。完成了前面兩個方面的測試,還需要對報表最終交付作最後的測試,包括報表的用字、報表的編排等等有關客戶習慣的測試。

對於企業來說,報表需求是隨著時間和業務變化而變化的,bi專案交付之後,維護部門還需要不斷的收集新的需求,更好的為企業經營和管理服務,從中體現出bi專案的價值。

BI專案中ETL設計與思考

etl即資料抽取 extract 轉換 transform 裝載 load 的過程,它是構建資料倉儲的重要環節。etl是將業務系統的資料經過抽取 清洗轉換之後載入到資料倉儲的過程,目的是將企業中的分散 零亂 標準不統一的資料整合到一起,為企業的決策提供分析依據。etl是bi專案重要的乙個環節。通常情...

BI專案中ETL設計與思考

etl是將業務系統的資料經過抽取 清洗轉換之後載入到資料倉儲的過程,目的是將企業中的分散 零亂 標準不統一的資料整合到一起,為企業的決策提供分析依據。etl是bi專案重要的乙個環節。通常情況下,在bi專案中etl會花掉整個專案的1 3的時間,etl設計的好壞直接關接到bi專案的成敗。etl的設計分三...

BI專案中ETL設計與思考

etl是將業務系統的資料經過抽取 清洗轉換之後載入到資料倉儲的過程,目的是將企業中的分散 零亂 標準不統一的資料整合到一起,為企業的決策提供分析依據。etl是bi專案重要的乙個環節。通常情況下,在bi專案中etl會花掉整個專案的1 3的時間,etl設計的好壞直接關接到bi專案的成敗。etl的設計分三...