2014-08-29 260 views
1

我們使用Pentaho作爲ETL工具,數據庫是Oracle。注入ETL作業的業務規則引擎(Pentaho)

我們希望賦予最終用戶定義業務規則的權力,最終用戶將在ETL的選定階段執行給定的轉換。

因此,用戶將在用戶界面上定義一些規則。我會創造很多下拉菜單的UI定義某些類型的規則,例:

「範圍」的規則,一列應該是在這個範圍內

「不空」的規則:如果一個字段值null將其更改爲UNKNOWN或

如果總行數增加給定百分比,則停止ETL 等等 這些規則將被注入到ETL作業中。我們不能硬編碼規則。

我試圖用的Pentaho下的Drools但文檔幾乎是不存在的(對於Pentaho的下使用), 所以我決定實施規則引擎自己: 我將創建一個用戶界面,這基本上將允許定義業務規則,那些將被轉換爲SQL語句並存儲在數據庫中。並且在Pentaho中有一些名爲Execute Row Script的步驟,它允許執行存儲在表中的sql語句。

創建業務規則作爲SQL語句的想法似乎不太好,但根據我的研究我沒有任何其他選擇。

你知道任何可以將業務規則創建爲SQL的工具嗎?任何建議總體? 謝謝

回答

2

有很多方法可以在PDI中實現業務規則,我最近也建立了自己的自制系統。這非常複雜,但是我們最終使用了可插入模板,元數據注入和完全元數據驅動。太好了! (PDI寫作99%,java寫作1%)

Drools不太好,因爲它速度非常慢。這是Drools本身的一個組合特徵,PDI流口水的集成不是太熱。

還有一些其他的選擇,雖然你可以檢查一下我的同事寫的JARE - 它帶有一個UI等,並且從底層開始與PDI一起工作(但不是完全)。查看詳情這裏:https://github.com/uwegeercken/jareplugin

爲了找到廣泛的框架,我建你可以看到我在Skillsmatter談話的細節:https://skillsmatter.com/skillscasts/5115-how-amia-used-pentaho

+0

謝謝我們不打算擁有一個非常複雜的規則engine.I簡單看了看視頻,所以你正在使用用戶定義的Java表達式與元數據注入? 元數據注入部分似乎有點長時間的工作,是嗎?謝謝 – Oguz 2014-09-04 20:43:08

+0

是的,我們是 - 我們通過代碼注入。直接調用kettle API。但是,在最新版本的PDI 5.2中,該步驟支持本地元數據注入,因此更容易。 Matt腳輪和Diethard Steiner有很好的元數據注入博客文章。 – Codek 2014-09-05 06:35:48

+0

我也有一個示例,您可以在PDI中本地評估SQL片段。我有一天應該博客! – Codek 2014-09-05 06:36:20

0

執行行腳本步驟是非常有用的,如果你可以管理它。

好吧,有時我會限制可擴展性,以便儘可能簡單。

如何?

Excel表格(或谷歌電子表格):

做一個表,用戶在這裏他們可以輸入字段和規則。限制可能的投入並給他們一個犯錯的最小機會(如你已經提到的下拉菜單)。是的,他們沒有無盡的可能性,但要確保它能滿足他們所有的需求+ 20%。

例如:就我而言,最終用戶對於日期字段最多有3個日期範圍(介於此與此之間或介於this2與this2之間或介於this3與此3之間)。他們總是使用一個。

從工作表(excel公式)中的行中進行SQL查詢並不難。只收集SQL Query列並執行它。這是最終用戶的隱藏專欄。