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