用了將近半年的cognos,仍屬入門級菜鳥,但是在使用過程中也頗有一些心得,將其整理并記錄下來,希望對大家有所幫助
1.在iqd中編寫sql語句時,建議不要使用cognos的標準sql語法,因為這不僅會影響sql查詢的速度,同時對sql查詢的功能也有所限制,具體的實現的方法是直接將所有sql{}括起,這樣cognos將不對花括號中的sql語句進行解釋而是直接仍給所連接的數據庫,用數據庫自己生成最優化的查詢計劃。
2.關于iqd的寫法,以下提供一個具體的模板,只需要依葫蘆畫瓢即可
? COGNOS QUERY
STRUCTURE,1,1
DATABASE,DB
TITLE,IMR1.imr
BEGIN SQL
{select T1.C1 as c1,
?????? T1.C2 AS C2,
?????? T1.C3 AS C3,
?????? T1.C4 AS C4
FROM SCM. T1
}
END SQL
COLUMN,0,C1
COLUMN,1,C2
COLUMN,2,C3
COLUMN,3,C4
3.對于相對固定不變的維表,最好是使用本地文本的格式如csv格式加以保存和維護,這樣可以提高cube生成的速度
4.對于以時間為變化軸的數據,可以通過建cube group來按照指定的時間粒度進行增量維護
?5.下鉆路徑應該根據維表層次的關系以及分析的需要進行選取,如果在同一維表中兩個層次之間沒有明確的繼承關系,則應考慮將兩個層次建在兩個不同的下鉆路徑上
6.開發cube的時候,事實表中的數據應在保證不丟失信息的前提下盡可能的將粒度變大,這需要建立一個中間表,從源數據表中將聚合后的數據導入到中間表中,總之直接從源數據中提取數據建cube是不合適,應盡量避免
1.對于多維報表模型,在開發環境下應存儲為MDL格式而不是PYI格式,兩種格式的區別在于MDL是以XML文本存儲,保證了模型的移植性和可擴展性,但是在性能方面會相對差一些,因為每次生成Cube都要先將MDL編譯成二進制的文件,而PYI則是已經編譯好的,因此性能較MDL優,但是如果模型不是很復雜,兩者的差別并不大
? 2.除時間維度外,其余維度中的category應設成always include,這樣可以保證報表中有完整的分析方向,舉個例子:
???? 要分析所有客戶中的男女分布,如果客戶中全是男性,而將相應的category按默認生成include in need,則用pp打開cube后,只能看到性別維度中只有男性,沒有女性。
這段時間又有一點體會,希望能為大家省去一些麻煩
1.Powerplay server 7 version 4的字體支持問題
從3.0升級到4.0后,發現對粗體的支持有問題,發布的報表中如果使用了粗體,在upfront上瀏覽的報表出現了顯示不正常的情況,主要包括:標簽不能正常顯示,報表中的數據不能正常顯示,因此在4的版本下開發報表,應注意使用正常字體(這個問題,折騰了俺一個星期的時間才找到原因,5555)
2.報表格式的要求
為了保證報表有效、快速的顯示,應在整張報表上使用相同的字體,并盡量避免使用圖片等多媒體格式的文件
3.Transform中的多維模型設計
在維視圖上,時間維在系統內部生成,并講時間維放在維視圖的第1列
在數據源視圖上,將事實表放在最后
中間表的設計方面,在保證信息不丟失的前提下,盡可能通過聚合等方式,去除中間表中的明細數據
4.如果希望以時間為軸實現數據的增量更新,應使用cube group
5.如果要全部重新生成cube,應該將原有的cube刪除后,再進行重建,否則會報錯
6.如果維度比較穩定,則盡可能的使用csv格式保存,對于漸變維或經常需要維護的維度使用iqd來獲取
7.在pp中設計報表時,對于出現報表的列或行的維度,如果經常需要維護,則盡量使用subset,這樣可以保證報表動態的更新
8.如果使用了宏來自動生成cube,產生報表,則在重新生成cube后,應該手工的保存mdl,否則下一次重新運行宏的時候,cube會生成失敗(這個問題應值得注意)
9.如果將其他環境下的cube放到當前環境中打開,如果cube中含有訪問控制信息,則只有在當前環境下的Acess Manager中的用戶類目錄結構于先前環境下的完全一致,才能保證cube的正確打開,可以先將前一環境下的安全控制配置文件導出為.lae,然后再導入到當前環境來完成這個工作
Cognos 企業級系列產品其實包括了兩部分,一部分是ReporNet,一部分是Powerplay也就是人們常常提到的PPES,這兩部分分別解決的是二維報表和多維報表的問題,同時在數據采集的機制上也是完全不同的,ReportNet采取的是對數據庫做online查詢,而PP則是在實現準備好的Cube基礎上,創建多維報表,并支持鉆取,切片,上卷,旋轉等靈活的報表展示功能,前者的工作負荷集中在數據庫上,而后者的工作負荷則集中在PPES服務器上。而兩者的安裝完全可相互隔離,他們在功能上是一種互補的關系,但是在物理上卻毫無關系,對于Cognos產品的理解,我個人建議最好是先看看cognos自帶的關于產品體系架構方面的文檔,同時最好能自己親手安裝和配置一下,這樣才能對其產品的結構有一個深入和全面的認識
數據庫的導入
ReportNet自帶sample數據庫以及相關的工程文件
在導入模型之前,要將sample數據庫中的表恢復至當前的數據庫中,對于DB2,在..\program files\cognos\crn\webcontent\sample\db\db2\目錄下有多個.tar文件,解壓后可以看到有多個tabl?.ixf以及一個db2move.lst文件組成,其中db2move.lst是供db2move工具使用的列表,而ixf文件中包含了相應的表的表結構定義和數據,使用db2move將表及其數據導入現有的數據庫,命令如下:
db2move import -io replace_insert -u user -p password
如果提示單字節代碼頁集不相配的錯誤,可以自己建立一個批處理文件來使用import或load語句的forcein文件類型修飾符來強制對單字節代碼頁進行轉換,如:
db2 connect to cogdb user cfep using cfep2004
import from tabl.ixf of ixf modified by forcein create into GOHR.BRANCH
import from tab2.ixf of ixf modified by forcein create into GOHR.EMPLOYEE
db2 import from tab3.ixf of ixf modified by forcein create into GOHR.COUNTRY_MULTILINGUAL
db2 import from tab4.ixf of ixf modified by forcein create into GOHR.COUNTRY
db2 import from tab5.ixf of ixf modified by forcein create into GOHR.GENDER_LOOKUP
將數據導入至數據庫中之后,應對模型進行相應的修改,首先在crn中建立同名的datasource,并且在properties頁中設置同名datasource,schema設置為所使用的db2模式(大小寫敏感),將type->interface設置為DB2,
即完成了對sample的導入工作
凡是有該標志的文章,都是該blog博主Caoer(草兒)原創,凡是索引、收藏
、轉載請注明來處和原文作者。非常感謝。