1. 程式人生 > >Pentaho教程一:基於Metadata建立report併發布到Pentaho BI Server

Pentaho教程一:基於Metadata建立report併發布到Pentaho BI Server

眾所周知,Pentaho BI商業智慧解決方案提供了兩種reporting工具,即基於Pentaho BI Server的Ad Hoc Query and reporting Tool(WAQR)和更高階的Pentaho Report Designer(PRD)。兩者均工作在由Pentaho Data Integration(PDI)建立的資料倉庫之上(廢話,當然,如果你不使用Pentaho也有其他方案)。區別是,WAQR只能通過JDBC連線、查詢資料倉庫,而PRD除了普通的JDBC連線方式之外,還有Pentaho特有的metadata連線查詢方式(還有OLAP、XML等方式,在此不予討論)!WAQR方式相對簡單明瞭,登入Pentaho BI Server之後,建立新的資料倉庫連線便可建立report了。今天要討論的是PRD,尤其是其metadata連線。

利用PRD建立基於Metadata的report

如題,這種方式建立report的基礎是已經建立好的metadata檔案,以.prpt結尾。本文假設讀者已經建立好了.prpt檔案,並匯出為.xmI檔案,以供建立report使用。

  1. 開啟PRD,新建report,並儲存;
  2. 為空的report中的Page Header、Report Header、Report Footer、Page Footer等新增相應元素。重點在Group Header和Details;
  3. 新建Metadata資料連線。開啟Metadata資料來源編輯器,新增.xmI檔案為資料來源,並提供建立.prpt檔案時所使用的域名(domain),如圖1;

    圖1. Metadata資料來源編輯器

    新建查詢(Query),開啟查詢編輯器。加入想要查詢的列、排序所用的列和約束條件。這裡需要注意的是約束條件,因為通常report會加入一些查詢引數。為了設定引數查詢,需要首先建立引數,通常是通過JDBC獲取資料倉庫中資料表的某一列作為引數值,然後在查詢編輯器中的條件(Condition)欄設定引數查詢。這裡注意引用引數的語法:用花括號將引數名包圍起來,即{parameter}。然後選擇對應的比較操作符,比如對於String有Contains、exactly matches和in等,如圖2;

    圖2. 查詢編輯器

  4. 上一步完成後,會得到一些返回的列名,將這些列名按需拖入report的Details部分,一個report的主體部分就完成了;
  5. 如果需要,可以新增Group區域;
  6. 釋出report到Pentaho BI Server,如圖3。前提是已經開啟Pentaho BI Server;

    圖3. PRD主介面:釋出、report結構和資料來源連線

  7. 為釋出report設定釋出密碼,可在biserver-ce/pentaho-solutions/system/publisher_config.xml中設定。為該report建立一個目錄,目錄名必須與metadata檔案域名一致,比如tth;
  8. 通過Pentaho Metadata Editor(PME)直接將.xmI檔案釋出到Pentaho BI Server下同一目錄,即tth
  9. 最後,登入到Pentaho BI Server,重新整理metadata和prpt檔案,雙擊prpt即可看見生成的report。

特別注意:

如果report中的引數值不唯一,即有多個values,比較引數比較符應該選擇exactly matches而不是in!這點與利用PRD建立基於JDBC的report是引數比較不同,後者對於多值採用in來比較。雖然對於PRD來說exactly matches和in使用效果相同,但一旦釋出到Pentaho BI Server就會出現問題,如果你使用in,那麼當你為一個引數選擇多個值時就會出現”Report validation failed.”的錯誤!不知道這算不算是該版本Pentaho BI Server的bug。