PRD概述
一、???????Pentaho 整體架構(gòu)
?
cc
?
?
?
二、???????Client tools
1.????????Report Designer
報(bào)表創(chuàng)建工具。如果想創(chuàng)建復(fù)雜數(shù)據(jù)驅(qū)動的報(bào)表,這是合適工具。
2.????????Design Studio
這是基于eclipse的工具,你可以使用它來創(chuàng)建手工編輯的報(bào)表或分析視圖xaction 文件,一般用來對在report designer中無法增加修改的報(bào)表進(jìn)行修改。
3.????????Aggregation Designer
幫助改善Mondrian cube 性能的圖形化工具。
4.????????Metadata Editor
用來添加定制的元數(shù)據(jù)層到已經(jīng)存在的數(shù)據(jù)源。一般不需要,但是它對應(yīng)業(yè)務(wù)用戶在創(chuàng)建報(bào)表時(shí)解析數(shù)據(jù)庫比較容易。
5.????????Pentaho Data Integration
這是kettle etl工具。
6.????????Schema Workbench
幫助你創(chuàng)建rolap的圖形化工具。這是為分析準(zhǔn)備數(shù)據(jù)的必須步驟。
?
三、???????Pentaho BI suit community editon安裝
硬件要求:
RAM: At least 2GB
Hard drive space: At least 1GB
Processor: Dual-core AMD64 or EM64T
軟件要求:
? 需要JRE 1.5版本,1.4版本已經(jīng)不再支持。
?
修改默認(rèn)的端口8080,打開\biserver-ce\tomcat\conf目錄下的server.xml文件,修改<connector port=8080為你想要的端口號。同時(shí)在這部分可以調(diào)整Apache Tomcat參數(shù)。在修改了該端口號后,必須同時(shí)修改\tomcat\webapps\pentaho\WEB-INF目錄下的web.xml文件中的<context-param><param-name>base-url</param-name><param-value>http://localhost:8080/pentaho</param-value></context-param>中的端口號。否則administration-console中不能連接到bi server。
四、???????配置數(shù)據(jù)庫連接
如果要是pentaho bi server能連接到關(guān)系數(shù)據(jù)庫,需要將相應(yīng)數(shù)據(jù)庫driver的jar包拷貝到server/biserver-ce/tomcat/common/lib目錄。
??? 為了能在administration console中創(chuàng)建數(shù)據(jù)庫連接并測試,需要將相應(yīng)的數(shù)據(jù)庫driver的jar包拷貝到server/administration console/jdbc目錄。下面是具體關(guān)系數(shù)據(jù)庫連接設(shè)置說明。
1、連接Oracle數(shù)據(jù)庫。
需要將oracle的driver類class12.jar包拷貝到/Pentaho/server/enterprise-console-server/jdbc/或/biserver-ee/server/enterprise-console-server/jdbc/
/Pentaho/server/bi-server/tomcat/common/lib/或/biserver-ee/server/bi-server/tomcat/common/lib/目錄。
執(zhí)行\Pentaho\Server\administration-console目錄下的start-pac.bat啟動admin console或?bi server。
?
在Adminstrator console中配置數(shù)據(jù)庫連接:
?在iE中輸入http://localhost:8099/后進(jìn)入管理界面,點(diǎn)左邊的administrator,在右邊窗口中點(diǎn)database connection進(jìn)入下面的界面。
在name中輸入要創(chuàng)建的數(shù)據(jù)庫連接的名稱,在driver class中選擇要使用的driver類,user name中輸入訪問數(shù)據(jù)庫的用戶、password中輸入相應(yīng)的密碼,在url中輸入訪問數(shù)據(jù)庫的連接信息:jdbc:oracle:thin:@xzq:1521:oradata。在@之前的是固定信息,@之后分別是服務(wù)器名稱或IP:端口號:數(shù)據(jù)庫服務(wù)名。
2、連接MS Sql server數(shù)據(jù)庫
在iE中輸入http://localhost:8099/后進(jìn)入管理界面,點(diǎn)左邊的administrator,在右邊窗口中點(diǎn)database connection進(jìn)入下面的界面。
在name中輸入要創(chuàng)建的數(shù)據(jù)庫連接的名稱,在driver class中選擇要使用的driver類,user name中輸入訪問數(shù)據(jù)庫的用戶、password中輸入相應(yīng)的密碼,在url中輸入訪問數(shù)據(jù)庫的連接信息:jdbc:Microsoft:sqlserver://localhost:41433;DatabaseName=GOSLDW。//前的字符是固定的,//后是數(shù)據(jù)庫服務(wù)器名或ip地址:端口號;DatabaseName=數(shù)據(jù)庫名。
五、???????Report Designer創(chuàng)建報(bào)表
5.1.????創(chuàng)建步驟
第一步:定義數(shù)據(jù)源,創(chuàng)建dataset
第二步:定義report layout,report layout有一組band構(gòu)成,包括reportheader、report footer、group header、group footer以及detail構(gòu)成。
第三步:部署報(bào)表到BI server.
5.2.????創(chuàng)建report title
在左邊的工具欄上拖一個(gè)label報(bào)表元素到reportheader band中,雙擊label報(bào)表元素輸入你想要的report title,如圖5-2。你可以在右邊的屬性窗口中對該title進(jìn)行屬性定義,包括字體大小、顏色、樣式等。
圖5-2 創(chuàng)建report title
5.3.????創(chuàng)建column header
在report title下加幾個(gè)label報(bào)表元素,構(gòu)成你需要的columnheader,如圖5.3所示。
圖5-3 創(chuàng)建column header
5.4.????創(chuàng)建report detail
報(bào)表的Detail本身將產(chǎn)生報(bào)表的明細(xì)記錄,這些記錄有dataset提供,因此需要將dataset中的字段拖入report detail band即可,如圖5-4。
圖5-4 產(chǎn)生reportdetail
5.5.????創(chuàng)建report summary
在 report footer band加上匯總元素的描述標(biāo)簽和相應(yīng)的匯總計(jì)算字段,如圖 5-5所示。
這里的關(guān)鍵是需要生產(chǎn)匯總計(jì)算字段,圖中生成了兩個(gè)library count 和total library size,要產(chǎn)生這兩個(gè)匯總字段,需要在右邊data頁的function中增加function字段,分別利用了count(running)和summary(running)函數(shù)
5.6.????畫布大小設(shè)置
點(diǎn)擊菜單file->pagesetup,出現(xiàn)圖5.6所示的界面,在該界面中可以設(shè)置畫布的大小
圖5.6
5.7.????創(chuàng)建圖表
所有圖表都有一個(gè)showlabel屬性,默認(rèn)是hidelabel,在這種情況下,圖表上不會顯示相應(yīng)的值,圖表上能顯示的值一般有三種情況,分別是0、1、2(對pie chart有3),分別表示系列的描述、category描述、項(xiàng)值,如果需要組合顯示,可以采用{0},{2}這樣的格式來表示。
5.7.1.???Bar chart
Bar chart對比較不同類別數(shù)據(jù)的大小是有用的。
在左邊的工具按鈕中拖入chart圖標(biāo)到report header,如圖5.7.1
圖5.7.1
雙擊該圖出現(xiàn)圖5.7.2所示的屬性窗口
圖5.7.2 bar chart屬性設(shè)置
在左邊窗口中設(shè)置相關(guān)的顯示屬性,在右邊窗口中指定顯示的數(shù)據(jù)字段。這樣就完成了圖形報(bào)表的創(chuàng)建。
技巧:
?? Pentaho中的數(shù)據(jù)集是同報(bào)表綁定的,如果想在同一報(bào)表中顯示多張chart報(bào)表,需要利用sub report,在不同的sub report中分別創(chuàng)建報(bào)表完成。
5.7.2.???區(qū)域圖(Area chart)
區(qū)域圖用于比較兩個(gè)或多個(gè)數(shù)據(jù)集間的差異是有用的。
5.7.3.???線性圖(line chart)
線性圖對分析發(fā)展趨勢是有用的。
注意,堆積和堆積百分比(stackand stack percent)不能用于linechart。
5.7.4.???餅圖(pie chart)
餅圖一般用來分析不同category占總值的占比分析。
餅圖有一個(gè)labelformat屬性,該屬性值有以下幾種:
{0}:series name,
{1}::series raw value
{2}: percentage value
{3}: total raw value
5.7.5.???環(huán)形圖(ring chart)
環(huán)形圖類似于餅圖,除了它呈現(xiàn)為環(huán)形,而餅圖是實(shí)體填充外,沒有什么差異。
5.7.6.???多餅圖(muti pie chart)
根據(jù)category呈現(xiàn)一組餅圖,每一個(gè)category對應(yīng)一個(gè)餅圖。
5.7.7.???瀑布圖(warterfall chart)
瀑布圖呈現(xiàn)了唯一一個(gè)跨category的stacked bar chart。這種圖形對于一個(gè)category同另一個(gè)category進(jìn)行比較時(shí)是有用的。通常最后一個(gè)category等于所有別的category的總和。
5.7.8.???條形和線形組合圖(bar line chart)
在比較category值的同時(shí)查看趨勢。這是一個(gè)需要兩個(gè)category 數(shù)據(jù)集的圖形,第一個(gè)產(chǎn)生bar chart,第二個(gè)產(chǎn)生line chart。
5.7.9.???冒泡圖(bubble chart)
冒泡圖允許你查看三維數(shù)據(jù),前兩維是傳統(tǒng)的X/Y維,也就是域和范圍(domainand range)。第三維代表單個(gè)氣泡的大小。
?
六、???????將pentaho的資料庫遷移到oracle數(shù)據(jù)庫
默認(rèn)情況下是使用HSQLDB數(shù)據(jù)庫作為pentaho的資料庫。
遷移步驟:
1、?將oracle JDBC驅(qū)動class12.jar拷貝到..\tomcat\webapps\pentaho\WEB-INF\lib或..\tomcat\common\lib目錄,供pentaho BI服務(wù)器訪問oracle 數(shù)據(jù)庫使用。另外也需要將oracle JDBC驅(qū)動拷貝到administration-console\jdbc目錄,否則用戶不能正常使用pentaho管理控制臺。
2、?初始化Oracle 10g數(shù)據(jù)庫。依次執(zhí)行下面的sql包,在執(zhí)行sql包前先創(chuàng)建兩個(gè)用戶,quartz/password,用于存儲quartz相關(guān)信息,另一個(gè)用戶hibuser/password用戶存儲pentaho bi服務(wù)本身資料庫。Sql包說明:
l? Create_repository_Ora.sql,用于創(chuàng)建pentaho_tablespace表空間、新增hibuser/password用戶,以及datasource 表。
l? Create_sample_datasource_Ora.sql,往datasource表中增加外部業(yè)務(wù)資料庫連接信息。
l? Create_quartz_ora.sql,創(chuàng)建pentaho_user/password用戶,quartz數(shù)據(jù)庫、quartz表等。
3、?修改contex.xml中配置數(shù)據(jù)庫連接的信息。這個(gè)文件位于\biserver-ce\tomcat\webapps\pentaho\META-INF位置。修改該文件中的數(shù)據(jù)庫連接相關(guān)信息。
4、?打開biserver-ce\pentaho-solutions\system\hibernate中的hibernate-settings.xml配置文件,并啟用oracle10g.hibernate.cfg.xml配置文件,配置示例如下。
<config-file>system/hibernate/oracle10.cfg.xml</config-file>
5、?調(diào)整oracle10g.hibernate.cfg.xml文件,主要是連接數(shù)據(jù)庫的相關(guān)信息。
6、?修改applicationContext-spring-security-hibernate.properties配置文件,它位于biserver-ce\pentaho-solutions\system。下面是配置示例。
Jdbc.driver=oracle.jdbc.driver.OracleDriver
Jdbc.url=jdbc:oracle:thin@localhost:1521:ORCL
Jdbc.username=hibuser
Jdbc.password=password
Hibernate.dialect=org.hibernate.dialect.Oracle10Dialect
7、?修改quartz.properties,位于biserver-ce\pentaho-solutions\system\quartz目錄。當(dāng)使用oracle存儲quartz的各種信息時(shí),需要啟動如下實(shí)現(xiàn)類,即默認(rèn)的org.quartz.impl.jdbcjobstore.StdJDBCDelegate被替換成OracleDelegate。
Org.quartz.impl.jobstore.driverDelegateClass=org.quartz.impl.jdbcstore.oracle.OracleDelegate
8、?可選地,用戶需要修改start_hypersonic.bat中的相關(guān)信息。
?
七、???????設(shè)置publication口令
Pentaho設(shè)置工具用來定義BI 內(nèi)容,如report 、olap cube和metadata。在這些工具中創(chuàng)建的內(nèi)容文件要部署到BI server上,可以通過手工拷貝這些內(nèi)容文件到pentaho相應(yīng)的solution文件夾下來完成部署,但典型的方式還是通過publication來完成部署。
為了能完成publication,需要設(shè)置相應(yīng)的口令,默認(rèn)情況下是沒有設(shè)置口令的。為了設(shè)置這個(gè)口令,需要在pentaho-solution/system目錄下的publisher_config.xml文件中添加
<publisher-config>
?????? <publisher-password>password</publisher-password>
</publisher-config>
這個(gè)例子中將 password設(shè)置為”password”。
八、???????Pentaho Data integration
Pentaho DI包含的主要工具和實(shí)用程序:
Spoon – 圖形化的DI IDE,用于創(chuàng)建Transformation和job
Kitchen – 運(yùn)行job的命令行工具
Pan –運(yùn)行transformation的命令行工具
Carte –在遠(yuǎn)程主機(jī)上運(yùn)行transformation和job的輕量級服務(wù)器。默認(rèn)的登錄用戶是cluster/cluster.可以使用Encr –carte <password>修改口令。Carte將登錄用戶信息存儲在/data-integration/pwd目錄下的kettle.pwd文件中。
Encr—這個(gè)用來加密口令,用法為Encr –kettle <password>
下圖是關(guān)于pentahoDI 各個(gè)工具和組件工作情況說明。
??????
Dataintegration engine負(fù)責(zé)解釋和執(zhí)行數(shù)據(jù)集成job和transformation。Data integration engine在物理上是以Java庫的形式存在,前端可以通過調(diào)用公共的api來執(zhí)行job和transformation。
Data integration engine也包括pentaho BI server,將job和transformation作為 action sequence的一部分來執(zhí)行。
Repository。Job 和transformation可以存儲在數(shù)據(jù)庫知識庫中,前端工具可以通過連接知識庫來裝載job和tranformation定義。
8.1 自動連接知識庫
在user的home目錄下的.kettle目錄中打開kettle.properties文件,然后添加:
KETTLE_REPOSITORY = KETTLE_MD –repositoryname
KETTLE_USER = admin?? -- credential user name
KETTLE_PASSWORD = admin? --user password
這樣每次啟動spoon時(shí),可以自動登錄默認(rèn)的repository。
8.2使用集群
要使用集群,首先要定義相關(guān)的子服務(wù)器(slave server),然后定義cluster schema,最后將定義好的cluster schema分配給相應(yīng)的Transformation step。
8.3創(chuàng)建數(shù)據(jù)庫連接
在spoon IDE中在Transformation 樹結(jié)構(gòu)中右鍵單擊“數(shù)據(jù)庫連接”->新建連接或新建數(shù)據(jù)庫連接向?qū)Щ虬纯旖萱IF3進(jìn)入“創(chuàng)建數(shù)據(jù)連接”窗口。
目前支持幾乎所有的數(shù)據(jù)庫連接。
數(shù)據(jù)庫連接選項(xiàng):
1)? Connection name:定義轉(zhuǎn)換或者任務(wù)訪問的連接的唯一名稱,可以自行設(shè)置;
2)? Connection type:連接的數(shù)據(jù)類型;
3)? Method of access:可以是Native(JDBC),ODBC,或者OCI,一般選擇JDBC;
4)? Server host name:指定數(shù)據(jù)庫部署的主機(jī)或者服務(wù)器的名稱,也可以指定 IP 地
址;
5)Database name:指定連接的數(shù)據(jù)庫的名稱,如果是 ODBC 方式就指定 DSN 名稱;
6)Port number:設(shè)定數(shù)據(jù)庫監(jiān)聽的 TCP/IP 端口號
7)Username/password:指定連接數(shù)據(jù)庫的用戶名和密碼;
數(shù)據(jù)庫用法:
8.4 Transformation Step
8.4.1.???????????Text File input
這個(gè)step用來讀取各種不同類型的text-file類型文件,常見的是由excel生成的cvs文件和固定寬度的flat file。
該組件提供了指定文件列表或文件目錄列表的能力,支持正則表達(dá)式,還可以接收前面步驟生成的文件。
8.4.2.???????????表輸入(table input)
該組件用來從數(shù)據(jù)庫獲取信息。主要的屬性有數(shù)據(jù)庫連接、sql等。在sql中可以使用變量,如果使用了變量,則必須勾選上“替換sql 語句中的變量”選項(xiàng),否則變量不能傳入,sql語句將報(bào)錯(cuò)。
“允許延遲轉(zhuǎn)換”選項(xiàng)可以避免不必要的數(shù)據(jù)類型轉(zhuǎn)換,改善數(shù)據(jù)處理性能。
8.4.3.???????????獲取系統(tǒng)信息(get systeminfo)
該組件用來獲取kettle環(huán)境中可用的信息。
8.4.4.???????????行發(fā)生器(generaterows)
產(chǎn)生多行,具體產(chǎn)生多少行可以通過設(shè)置limit(限制)來做設(shè)定。可以通過field(字段)列表來指定字段名稱及類型。
8.4.5.????????????輸入(De-serializefrom file,原名cube輸入)
從二進(jìn)制的kettlecube文件中讀取記錄行數(shù)據(jù)。
8.4.6.???????????XBase輸入
使用這一步可以讀取大多數(shù)被稱為 XBase family派生的 DBF文件。
8.4.7.???????????Excel輸入
該組件可以從一個(gè)或多個(gè)excel文件中讀取數(shù)據(jù),可以使用正則表達(dá)式來指定文件。
8.4.8.???????????插入或更新(insert/update)
這個(gè)組件首先使用一個(gè)或多個(gè)對照key來查詢表中的一行,如果找到,則更新,如果沒有找到則插入。
選項(xiàng)
1、步驟名稱:步驟的名稱,在單個(gè)轉(zhuǎn)換中必須唯一。
2、連接:目標(biāo)表所在的數(shù)據(jù)庫連接名稱。
3、Target? schema:要寫入數(shù)據(jù)的表的 Schema 名稱。 允許表名中包含 “.”是很重要的。?
4、目標(biāo)表:想插入或者更新的表的名稱。
5、Commit size:提交之前要改變(插入/更新)的行數(shù)。
6、不執(zhí)行任何更新:如果被選擇,數(shù)據(jù)庫的值永遠(yuǎn)不會被更新。僅僅可以插入。
7、用來查詢的關(guān)鍵字:可以指定字段值或者比較符。可以用以下比較符:=,
<>,<,<=,>,LIKE,BETWEEN,ISNULL,IS NOT NULL。
8、更新字段:指定你想要插入/更新的字段
8.4.9.???????????更新(Update)
這個(gè)步驟類似于插入/更新步驟,除了對數(shù)據(jù)表不作插入操作之外。它僅僅執(zhí)行更新操作。
8.4.10.???????刪除(Delete)
這個(gè)步驟類似于上一步,除了不更新操作。所有的行均被刪除。
8.4.11.???????XML 輸出(XMLoutput)
這個(gè)步驟允許你從源中寫入行到一個(gè)或者多個(gè) XML 文件。
選項(xiàng)
8.4.12.???????數(shù)據(jù)庫查詢(Databaselookup)
這個(gè)步驟類型允許你在數(shù)據(jù)庫表中查找值。
選項(xiàng)
步驟名稱:在單一轉(zhuǎn)換中步驟名稱必須唯一。
數(shù)據(jù)庫連接:想要寫入數(shù)據(jù)的連接。
查詢表:想要查詢的表名。
使用緩存:數(shù)據(jù)庫查詢是否使用緩存。這意味著在某種查詢值的條件下,每次數(shù)據(jù)
庫都能返回同樣的結(jié)果。
8.4.13.???????流查詢(Streamlookup)
這個(gè)步驟類型允許你從其它步驟中查詢信息。首先, “源步驟(lookup step)”的數(shù)據(jù)被讀到內(nèi)存中,
然后被用來從主要的流中查詢數(shù)據(jù)。
選項(xiàng)
步驟名稱:在單個(gè)轉(zhuǎn)換中步驟名必須唯一。
源步驟:數(shù)據(jù)來源的步驟名稱
查詢值所需要的關(guān)鍵字:允許你來指定用來查詢值的字段名稱。值總是用“等于”
比較符來搜索。
接收的字段:你可以指定用來接收字段的名稱,或者在值沒有找到的情況下的缺省
值,或者你不喜歡舊的字段名稱的情況下的新字段名稱
Preserve Memory:排序的時(shí)候?qū)?shù)據(jù)行進(jìn)行編碼以保護(hù)內(nèi)存
Key and?value are exactly one integer field: 排序的時(shí)候?qū)?shù)據(jù)行進(jìn)行編碼
以保護(hù)內(nèi)存
Use sorted list:是否用一個(gè)排序列表來存儲值,它提供更好的內(nèi)存使用。
這個(gè)步驟的使用類似于數(shù)據(jù)庫查詢步驟,區(qū)別在于數(shù)據(jù)庫查詢使用的是數(shù)據(jù)庫表,而流查詢是從文本文件等數(shù)據(jù)流中查詢。
8.4.14.???????調(diào)用數(shù)據(jù)庫存儲過程(Call DBProcedure)
這個(gè)步驟允許你運(yùn)行一個(gè)數(shù)據(jù)庫存儲過程,獲取返回結(jié)果。
8.4.15.???????字段選擇(selectvalue)
?? 該組件對于選擇、重命名或修改字段的長度和精度方面很有用。這幾方面被放在了不同的category中,在組件上分別放在不同的tab中。
8.4.16.???????過濾記錄(Filterrows)
這個(gè)步驟允許你根據(jù)條件和比較符來過濾記錄。
一旦這個(gè)步驟連接到先前的步驟中,你可以簡單的單擊“<field>” , “=”和“<value>”
區(qū)域來構(gòu)建條件。
選項(xiàng)
步驟名稱:步驟的名稱,在單一轉(zhuǎn)換中必須唯一。 技術(shù)資料, 【Kette3.0用戶手冊】
?發(fā)送“true”數(shù)據(jù)給步驟:指定條件返回 true的數(shù)據(jù)將發(fā)送到此步驟。
?發(fā)送“false”數(shù)據(jù)給步驟:指定條件返回 false 的數(shù)據(jù)將發(fā)送到此步驟。
8.4.17.???????空操作(什么也不做)(dummy(do nothing))
該組件什么也不做,只是用來做一些測試時(shí)的占位符。
8.4.18.???????Row DeNormalizer(行轉(zhuǎn)列)
該組件做行轉(zhuǎn)列。在“構(gòu)成分組的字段”中指定分組字段,在“目標(biāo)字段”中指定“目標(biāo)字段”的名稱,目標(biāo)字段的值字段(從哪個(gè)字段中獲取值)和“關(guān)鍵字值”。如下圖所示的樣例:
?
8.4.19.???????列轉(zhuǎn)行(Rownormaliser)
用于將列轉(zhuǎn)行
例如下表的數(shù)據(jù)
轉(zhuǎn)換成下表所示的數(shù)據(jù)
Row normaliser步驟的設(shè)置如下圖
8.4.20.???????拆分字段(split field)
基于指定的分割符信息進(jìn)行字段拆分。
8.4.21.???????去重(Unique Rows)
???? 從輸入流中去除重復(fù)的記錄。需要確保輸入流是排了序的,否則只有相鄰連續(xù)的記錄會去重。
8.4.22.???????分組(group by)
這個(gè)組件用來根據(jù)一組分組字段進(jìn)行計(jì)算。
選項(xiàng)
步驟名稱:步驟的名稱,在單一轉(zhuǎn)換中必須唯一。
分組字段:指定分組的字段。
聚合:指定需要聚合的字段、方法以及新字段結(jié)果的名稱
包含所有的行:如果選擇這個(gè),輸出中就包含所有的行,不僅僅是聚合。
臨時(shí)文件目錄:臨時(shí)文件存儲的目錄。
臨時(shí)文件前綴:指定命名臨時(shí)文件時(shí)的文件文件前綴。
添加行號,每一個(gè)分組重啟:如果你想添加行號,就選擇這個(gè)。
字段名行數(shù):指定行號將插入的字段的名稱。
8.4.23.???????設(shè)置為空值(Null if)
如果某個(gè)字符串的值等于指定的值,設(shè)置那個(gè)值為空。
8.4.24.???????計(jì)算器(Calculator)
這個(gè)步驟提供一個(gè)功能列表,可以在字段值上運(yùn)行。
計(jì)算器的一個(gè)重要優(yōu)勢是,它有著幾倍于常用的?JavaScript?腳本的速度。
8.4.25.???????行扁平化(flattener)
這個(gè)操作類似行轉(zhuǎn)列(分組字段,對某一列進(jìn)行行轉(zhuǎn)列)
8.4.26.???????值映射(value mapper)
該組件將值從一個(gè)值映射到另一個(gè)值。通常你想解決存儲一個(gè)數(shù)據(jù)庫中轉(zhuǎn)換表的問題,不管怎么說,這是一種可選的方案:簡單的將轉(zhuǎn)換表作為值映射對話框的一部分。
例如將1映射為男,0映射為女等。
8.4.27.???????數(shù)據(jù)庫連接(DatabaseJoin)
這個(gè)步驟允許你使用先前步驟的數(shù)據(jù),運(yùn)行一個(gè)數(shù)據(jù)庫查詢。
能夠指定查詢參數(shù):
在 SQL 查詢中使用“?”
在 SQL 查詢中使用數(shù)據(jù)網(wǎng)格中的字段
?
8.4.28.???????合并記錄(Merge rows)
該組件可以用來比較兩個(gè)記錄流。對于比較兩個(gè)不同時(shí)間點(diǎn)的記錄流是很有用的。常使用在沒有包含最后更新時(shí)間的數(shù)據(jù)倉庫源系統(tǒng)狀態(tài)中。兩個(gè)記錄流,參照流和比較流進(jìn)行合并,記錄的最后更新版本數(shù)據(jù)被傳給下一個(gè)組件,記錄被標(biāo)記為:
identical – 在兩個(gè)流中都發(fā)現(xiàn)了key,并且值是一致的。
changed—在兩個(gè)流中都發(fā)現(xiàn)了key,但是一個(gè)或多個(gè)值不一致。
new –key在參照流(舊數(shù)據(jù)源)中沒有發(fā)現(xiàn)
deleted – key在比較流(新數(shù)據(jù)源)中沒有發(fā)現(xiàn)。
除了deleted狀態(tài)情況,比較流的數(shù)據(jù)傳到下一個(gè)組件中。
需要注意的是,兩個(gè)流都需要在指定的key上排序。
8.4.29.???????Merge join
對兩個(gè)不同的輸入組件的數(shù)據(jù)集做合并關(guān)聯(lián)。關(guān)聯(lián)類型可以是內(nèi)聯(lián)、左外聯(lián)、右外聯(lián)和全外聯(lián)。
需要注意的是,合并join的數(shù)據(jù)記錄需要在指定的key上做排序。
8.4.30.???????Java Script 值(JavaScript Value)
這個(gè)步驟允許你用JavaScript 語言做復(fù)雜的運(yùn)算。使用的 JavaScript 引擎是 Rhino
1.5R5。
選項(xiàng)
步驟名稱:步驟的名稱,在單個(gè)轉(zhuǎn)換中必須唯一
Java?Script:步驟中的腳本。
字段:要添加到輸出流中的字段。
8.4.31.???????Excute SQL Script
??? 可以使用該組件執(zhí)行sql 腳本。可以在整個(gè)Transformation初始化中執(zhí)行一次(一般這種情況用于DDL語句)或在沒輸入該組件一行記錄時(shí)執(zhí)行一次(這種情況一般用于帶參的DML語句)。
?? 注意:如果sql語句中的腳本失敗,整個(gè)Transformation的執(zhí)行將掛起。
8.4.32.???????維度更新/查詢(dimensionlookup/update)
該組件允許你執(zhí)行Ralphkimball的兩類緩慢變化維:第一類(update)和第二類(insert)。使用該組件不僅可以更新維表,還可以查詢維表值。
8.4.33.???????Oracle批量裝載(Oraclebulk loader)
這個(gè)步驟允許你大批量加載數(shù)據(jù)到 Oracle 數(shù)據(jù)庫,它將用一個(gè)正確的裝載格式,然后
用 Oracle的 SQL*Loader 數(shù)據(jù)加載工具加載到指定的表中。
選項(xiàng)
步驟名稱:步驟的名稱,在單個(gè)轉(zhuǎn)換中必須唯一。
連接:維表所在數(shù)據(jù)庫的連接。
目標(biāo)schema: 要寫入數(shù)據(jù)的表的 schema 名稱,表名中可以包含”.”。
Sqlldr path: SQL*Loader 數(shù)據(jù)加載工具的全路徑。
裝載方式: “自動加載”或者“手動加載” 。如果是“自動加載”,步驟將在用指
定的參數(shù)收到所有的輸入后運(yùn)行Sqlldr 工具。如果是“手動加載” ,將生成一個(gè)可
以作為后門使用的控制和數(shù)據(jù)文件。
加載動作:Append、Insert、Replace、Truncate。這些會映射到 sqlddr 的動作
來執(zhí)行。
錯(cuò)誤的最大行數(shù):發(fā)生錯(cuò)誤的行數(shù),這時(shí) sqlldr 將被中斷。與 sqlldr 的“ERROR”
屬性來通信。
提交:提交的行數(shù),與sqlldr 的“ROWS”屬性通信。
綁定大小:與 sqlldr 的“BINDSIZE”屬性通信。
讀取大小:與 sqlldr 的“READSIZE”屬性通信。
控制文件:sqlldr 控制文件的名稱。
數(shù)據(jù)文件:數(shù)據(jù)將被寫入的數(shù)據(jù)文件的名稱。
日志文件:日志文件的名稱,可選。
壞文件:壞文件的名稱,可選。
廢文件:廢文件的名稱,可選。
編碼:數(shù)據(jù)指定的編碼格式,可以從下拉列表框中選擇。
直接路徑:直接路徑加載的開關(guān),與 sqlldr 的“DIRECT=TRUE”通信。
使用后刪除cfg/dat 文件:加載后是否刪除控制文件和數(shù)據(jù)文件的開關(guān)。
表字段:ORACLE 表中加載的表字段。
流字段:輸入行中帶來的字段。
8.4.34.???????運(yùn)行步驟的多個(gè)副本
右鍵單擊每個(gè)Transformation步后都會出現(xiàn)一個(gè)菜單“改變開始復(fù)制的數(shù)量”,可以設(shè)置這個(gè)復(fù)制的數(shù)量,這個(gè)對于“數(shù)據(jù)庫查詢”組件來說,可以提高其執(zhí)行的效率。但如果對于其他的組件,將使輸出結(jié)果記錄數(shù)翻倍,需要特別注意。另外,對于“數(shù)據(jù)庫查詢”組件,如果前一組件采用“數(shù)據(jù)遷移”是“復(fù)制到下一步”而不是“發(fā)送到下一步”也會造成“數(shù)據(jù)庫查詢”組件的輸出記錄翻倍。
8.4.35.???????問題集
1、?在“表輸入”組件中,如何從上一步中獲得數(shù)據(jù)替換sql語句中的參數(shù)?
2、??
?
?
8.5 任務(wù)條目(Job Entries)
8.5.1?????????????圖標(biāo)
8.5.2??????????????Start
Start 是任務(wù)執(zhí)行的入口,首先必須是任務(wù)可以執(zhí)行。只有無條件的任務(wù)條目可以從
Start 入口連接。
8.5.3??????????????Dummy
在一個(gè)任務(wù)中使用 Dummy條目將什么也不做。這可以使一個(gè)任務(wù)更清晰的展示,或者在
執(zhí)行循環(huán)中使用。
8.5.4?????????????轉(zhuǎn)換
你可以用一個(gè)轉(zhuǎn)換任務(wù)條目執(zhí)行一個(gè)先前定義的轉(zhuǎn)換。
選項(xiàng)
8.5.5?????????????任務(wù)(Job)
你可以使用 Job 條目來運(yùn)行一個(gè)先前定義的任務(wù)。
8.5.6?????????????Shell
你可以使用 Shell 任務(wù)條目在任務(wù)運(yùn)行的主機(jī)上執(zhí)行一段 Shell 腳本。
備注:Shell 腳本能在控制臺窗口輸出文本,輸出將轉(zhuǎn)換到 Kettle 日志系統(tǒng),這不會
影響 Shell腳本的運(yùn)行。
備注: Windows 系統(tǒng), 腳本被 “CMD.EXE/C” (NT/XP/20000) 或 “COMMAND.COM/C” (95/98)。
8.5.7?????????????Mail
你可以使用 Mail 任務(wù)條目來發(fā)送 e-Mail。
8.5.8?????????????SQL
你可以使用 SQL 任務(wù)條目執(zhí)行 SQL 腳本,多行腳本之前用“;”隔開。
8.5.9?????????????FTP
你可以使用 FTP 任務(wù)條目從 FTP 服務(wù)器上獲取一個(gè)或者多個(gè)文件。
8.5.10?????????Table Exists
你可以使用 Tableexists任務(wù)條目檢驗(yàn)數(shù)據(jù)庫中是否存在某個(gè)表。
8.5.11?????????File Exists
你可以使用Fileexists任務(wù)條目檢驗(yàn)在Kettle運(yùn)行的服務(wù)器上中是否存在某個(gè)文件。
8.5.12?????????Evaluation(javascript)
你可以使用Evaluation 任務(wù)條目來計(jì)算一個(gè)布爾型的變量,這個(gè)變量可以在決定下一
個(gè)步驟是否將被執(zhí)行時(shí)使用。用戶可以使用以下變量:
?Errors:先前的任務(wù)條目的錯(cuò)誤數(shù)
?Lines_input:從數(shù)據(jù)庫或者文件讀取的行數(shù)
? Lines_output:從數(shù)據(jù)庫或者文件讀取的行數(shù)
?Lines_updated:數(shù)據(jù)庫表更新的行數(shù)
?Lines_read:從先前轉(zhuǎn)換步驟讀取的行數(shù)
?Lines_written:往下一個(gè)轉(zhuǎn)換步驟寫入的行數(shù)
?Files_retrieved:從FTP 找到的文件數(shù)
?Exit_status:Shell 腳本的退出狀態(tài)
?Nr(integer):任務(wù)條目數(shù)。每下一個(gè)條目就會自動增長
? Iswindows:如果Kettle 運(yùn)行在Windows 平臺上就返回true
8.5.13?????????Create file
你可以使用 Create afile任務(wù)條目創(chuàng)建一個(gè)空文件,這對在任務(wù)中創(chuàng)建“觸發(fā)器”是
有用的。
8.5.14?????????Delete file
你可以使用 Delete afile 任務(wù)條目來刪除一個(gè)文件。
8.5.15?????????Wait for file
你可以使用 Wait forfile任務(wù)條目來等待一個(gè)文件。這個(gè)任務(wù)條目將定期的檢查指定
的文件是否存在,以決定流程是否繼續(xù)。這個(gè)條目可以不確定的等待文件或者經(jīng)過一過段時(shí)
間后超時(shí)。
8.5.16?????????File compare
你可以使用 Filecompare 任務(wù)條目來比較兩個(gè)文件的內(nèi)容,控制任務(wù)的流程。當(dāng)兩個(gè)
文件相等時(shí),成功流出節(jié)點(diǎn)將繼續(xù),否則失敗節(jié)點(diǎn)將繼續(xù)。
8.5.17?????????Zip files
這個(gè)步驟將按照你在對話框中指定的選擇創(chuàng)建一個(gè)標(biāo)準(zhǔn)的 ZIP 歸檔。
選項(xiàng)
九、???????Metadata layer
元數(shù)據(jù)層的用法和范圍。
元數(shù)據(jù)來自數(shù)據(jù)庫以及用戶定義元數(shù)據(jù)通過使用PME(pentahometadata editor)定義并存儲在數(shù)據(jù)庫中。
元數(shù)據(jù)能從知識庫中導(dǎo)出成xml文件保存。元數(shù)據(jù)與在pentahoserver的pentahosolution相關(guān),它用作基于metadata報(bào)表服務(wù)的源。
使用pentaho報(bào)表設(shè)計(jì)工具,終端用戶可以使用元數(shù)據(jù)創(chuàng)建報(bào)表。
當(dāng)運(yùn)行基于pentaho元數(shù)據(jù)報(bào)表時(shí),報(bào)表引擎解釋報(bào)表,查詢規(guī)范(query specifications)以MQL(Metadataquery language)的形式存儲在報(bào)表中。
下圖是metadata 層使用范圍概覽。
十、???????pentaho報(bào)表設(shè)計(jì)工具
10.1 報(bào)表架構(gòu)
下圖顯示了報(bào)表架構(gòu)的不同組件:
報(bào)表設(shè)計(jì)器定義報(bào)表規(guī)范
報(bào)表規(guī)范以xml的格式存放。
報(bào)表引擎根據(jù)報(bào)表規(guī)范和輸出格式執(zhí)行報(bào)表。
數(shù)據(jù)庫連接定義能使用標(biāo)準(zhǔn)的中間件如JDBC來連接不同的數(shù)據(jù)源。在報(bào)表的最后階段,報(bào)表查詢被report engine直接執(zhí)行。
Pentaho不僅包含了執(zhí)行pentaho 報(bào)表的能力,而且還包含了jasper report 和BIRT報(bào)表的類庫。Pentaho報(bào)表引擎通常叫做JFreeReport,其設(shè)計(jì)器完全就是JFree Report 設(shè)計(jì)器的再造版,被稱為pentaho report Designer(PRD)。
10.2 基于web的報(bào)表(web-based reporting)
Pentaho web 門戶(web portal)不僅提供了查看和分析內(nèi)容,而且也提供了特殊報(bào)表(ad hoc report)的能力。
使用基本web的報(bào)表工具能創(chuàng)建的報(bào)表只限于沒有圖形、交叉和圖片的分組列表。這種web工具官方名字叫Web Ad hoc query andreporting client,簡稱 WAQR。WAQR只能使用metadata model工作,它必須首先發(fā)布到服務(wù)器。
WAQR模板存儲在pentaho-solutions/system/waqr/templates目錄,每個(gè)模板都存儲在它自己的目錄下,增加自己的模板比較容易的方法就是拷貝其中一個(gè)文件夾然后再重命名它。可以手工修改模板,關(guān)于手工修改模板可以參考
http://wiki.pentaho.com/display/ServerDoc1x/Adhoc+Reporting+Templates
?
?
10.3 Pentaho Report Designer
Pentaho report Designer是一款圖形化的前端報(bào)表設(shè)計(jì)工具。它的好處之一是可以使用metadata作為數(shù)據(jù)源進(jìn)行報(bào)表編輯。報(bào)表可以直接使用report designer發(fā)布到pentaho BI平臺。新的.prpt文件由pentaho server自動生成,因此不需要額外的包裝就可以使PRD報(bào)表運(yùn)行在門戶網(wǎng)站上。
有兩種方式創(chuàng)建報(bào)表:
l? The New option
l? The Report Wizard
報(bào)表的基本部分:
l? Page header/report footer。任何放在這部分中的元素都會出現(xiàn)在每一頁。Page behavior style屬性能指定page header或page footer顯示在第一頁還是最后一頁或都不顯示。
l? Report Header/Footer。任何放在這部分的內(nèi)容都只會顯示一次。Report header的典型用法是首頁,顯示所有參數(shù)或報(bào)表的簡單簡介或report title。Report footer用于報(bào)表的total。
l? Group Header/Footer。一張報(bào)表至少會有一個(gè)分組,每組會有一個(gè)header和footer來放置組標(biāo)簽或小計(jì)(subtotal)。分組可以嵌套,創(chuàng)建一個(gè)層級報(bào)表。
l? Details Body。只有最里層分組包含明細(xì)體,它包含來自查詢的每一行記錄,detail header和detail footer也是明細(xì)體的一部分。
l? No Data。這是一種特殊的數(shù)據(jù)帶,顯示無查詢結(jié)果時(shí)的顯示信息。
l? Watermark。這個(gè)主要用來設(shè)置背景。
一張PRD只能包含一個(gè)Data set,但是一張報(bào)表可以包含子報(bào)表。合并或使用子報(bào)表的的數(shù)據(jù)到主報(bào)表是不可能的。
10.3.1 創(chuàng)建數(shù)據(jù)庫連接
有三種入口創(chuàng)建數(shù)據(jù)庫連接:
l? Data 菜單->adddata source
l? Data tab->add datasources按鈕
l? Data Tab->右鍵單擊Data set
10.3.2 創(chuàng)建SQL Query
在創(chuàng)建或編輯Datasource的界面中,右邊有創(chuàng)建query的按鈕,點(diǎn)增加query按鈕可以創(chuàng)建SQL Query,如下圖:
10.3.3 增加參數(shù)
有以下兩種途徑進(jìn)入增加參數(shù)窗口:
9、?Data菜單->add parameter
10、?????????????右邊Data Tab->右鍵parameters-> add parameter
???????????????????????? 增加參數(shù)窗口
Name中輸入?yún)?shù)名
Label是在運(yùn)行時(shí)參數(shù)前的提示標(biāo)簽
Value type指定參數(shù)的值類型
Data format是指定值的格式
Default value指定參數(shù)的缺省值
Mandatory如果選上,參數(shù)是必須的
Hidden指定該參數(shù)是否需要顯示在頁面上
Display type-指定參數(shù)顯示的方式,是單選下拉框還是多選下拉框或文本輸入等。
Query-指定參數(shù)的值以及顯示的內(nèi)容從哪個(gè)query獲得,如果是文本輸入,可以不指定。
增加參數(shù)后,可以在query中使用該參數(shù),使用方式${parameterName}
十一、???????????保護(hù)pentaho管理控制臺
1、?管理員賬號設(shè)置
管理員賬號信息存儲在/resource/config目錄下的login.properties文件中,其格式如下:
admin:OBF:1cb01j1s1kmy1jnb1wn31jk71kjo1iz21caa,server-administrator,content-administrator,admin
其中admin是用戶名,OBF是其相應(yīng)的密碼。可以使用下面的命令來重新設(shè)置賬號及其相應(yīng)的密碼。
java -cp lib/jetty-6.1.2.jar;lib/jetty-util-6.1.9.jarorg.mortbay.jetty.security.Password admin Admin1234
執(zhí)行該命令需要進(jìn)入administration-console目錄。執(zhí)行后將生成的OBF拷貝入login.properties中覆蓋現(xiàn)有的值即可。
?
2、?使用ssl協(xié)議
為了啟用https,只需要修改resource/config目錄下console.properties文件中的console.ssl.enabled=false設(shè)置為true。
?
十二、???????????Pentaho PSW(pentaho schema worbench)
12.1安裝PSW
下載相關(guān)軟件,解壓即可。
在解壓后,需要把連接數(shù)據(jù)庫相關(guān)驅(qū)動程序的Jar包文件拷貝到drivers目錄中。
12.2啟動psw
在windows環(huán)境下,直接運(yùn)行workbench.bat啟動PSW。在unix環(huán)境下,執(zhí)行workbench.sh腳本啟動PSW。
在開始設(shè)計(jì)之前,需要設(shè)置連接數(shù)據(jù)庫的相關(guān)信息,點(diǎn)Tool->Connection菜單,在彈出的窗口如下圖,填入相關(guān)的信息。
Driver Class Name –連接數(shù)據(jù)庫的JDBC驅(qū)動類名。相應(yīng)的jar包應(yīng)該拷貝到drivers目錄中。
Connection URL –連接數(shù)據(jù)庫服務(wù)的連接字符串。
Username and password –連接數(shù)據(jù)庫的用戶名和密碼。
12.3 cube設(shè)計(jì)
創(chuàng)建schema
創(chuàng)建cube,指定fact table
創(chuàng)建維度,指定維度的hierachy,level級相應(yīng)的dimension table。
指定相應(yīng)的指標(biāo)字段。
12.4 Publishcube到BI Server
需要保證pentaho BIServer是可用的,即BI Server是啟動了的。
打開要publish 到BI Server的cube所在schema,點(diǎn)file->publish菜單,在彈出框中輸入BI server的地址,publish 的password(這個(gè)在\server\biserver-ce\pentaho-solutions\system目錄下的publisher_config.xml文件中)和授信用戶及其密碼,如下圖所示。
十三、???????????Mondrian
13.1 Mondrian 架構(gòu)
??Mondrian系統(tǒng)包括四層:展現(xiàn)層(presentationlayer)、維度層(dimensionallayer)、聚合層(starlayer)和存儲層(storagelayer),其架構(gòu)如圖13-1所示。
?
?
?
第一層:展現(xiàn)層,根據(jù)用戶的不同應(yīng)用有不同的展現(xiàn)方式,包括pivot tables,pie,line,chart等,也可以通過swing或jsp展現(xiàn),可以展現(xiàn)成圖片或動畫。
第二層:維度層,這層主要解析、驗(yàn)證、和執(zhí)行MDX查詢。從效率考慮,維度層批量發(fā)單元請求(cell-requests)給聚合層。
第三層:聚合層。這層負(fù)責(zé)維護(hù)聚合緩沖。一個(gè)聚合是內(nèi)存中的由一組維度值確定的指標(biāo)集。
聚合層向存儲層發(fā)請求。
第四層:存儲層。這是一個(gè)關(guān)系數(shù)據(jù)庫層,負(fù)責(zé)提供聚合的單元數(shù)據(jù)和維表數(shù)據(jù)。
?
13.2 設(shè)計(jì)Mondrian Schema
Mondrian Schema定義了一個(gè)多維數(shù)據(jù)庫,它包含邏輯數(shù)據(jù)模型(包含cube、hierachies、成員)和該模型對物理模型的映射。
邏輯模型包含用來寫MDX查詢的結(jié)構(gòu):cube、hierachies、level、member。
物理模型是通過邏輯模型呈現(xiàn)的數(shù)據(jù)源。典型的是星形模型,一組關(guān)系數(shù)據(jù)庫表。
??Mondrian Schema文件以xml文件的方式存放。
十四、???????????Pentaho Analysis Services
用戶使用pentahoanalysis services(PAS)的事件流程如下圖所示。
1、?終端用戶通過http請求瀏覽、鉆取到olappivot 表。
2、?Jpivot servlet接收請求并轉(zhuǎn)變?yōu)閙dx查詢,查詢發(fā)給mondrian rolap engine
3、?Mondrian解釋MDX為sql.這部分技術(shù)稱為 ROLAP
4、?關(guān)系數(shù)據(jù)庫執(zhí)行這種由Mondrian解釋的sql查詢。Mondrian接收執(zhí)行結(jié)果
5、?Mondrian接收執(zhí)行的結(jié)果并轉(zhuǎn)換為多位結(jié)果集
6、?JPivot使用多位結(jié)果集并轉(zhuǎn)換為html頁面顯示數(shù)據(jù)。
14.1 JPivot使用
在BI server中打開新的Analysis view,進(jìn)入JPivot界面。如下圖所示。
下圖是JPivot的主要工具按鈕:
?
?
?
?
?
?
?
?
?
1、可以通過使用鉆取的三個(gè)按鈕指定鉆取的方式。通過圖形顯示來顯示圖形報(bào)表,通過圖形設(shè)置來設(shè)置要顯示的圖形報(bào)表類型及其相關(guān)的屬性設(shè)置。
2、通過MDX語句編輯框編輯MDX來生成報(bào)表
3、通過OLAP Navigator來設(shè)置報(bào)表,包括行列維度設(shè)置,filter(slice)設(shè)置。
總結(jié)
- 上一篇: 产品需求文档(PRD,Product R
- 下一篇: 产品经理基本功之PRD