規則引擎在數據分析中的應用

 

前言:規則引擎通過將業務規則和開發者的技術決策分離, 實現了動態管理和修改業務規則而又不影響軟件系統的需求。以下通過實例對基於SQL 查詢、自定義規則等一系列場景來說明規則引擎在數據分析中的應用。

 

         在現代的企業級項目開發中, 商業決策邏輯或業務規則往往是硬編碼嵌入在系統各處代碼中的。但是外部市場業務規則是隨時可能發生變化的, 這樣開發人員必須時刻準備修改、更新系統,降低了效率。在這種背景下, 規則引擎應運而生,它通過將業務規則和開發者的技術決策分離, 實現了動態管理和修改業務規則而又不影響軟件系統的需求。規則引擎具有廣泛的應用領域, 同樣也適用於數據分析和清洗。

    假設我們有以下所示的一個表結構:

 

 

字段名

字段類型

說明

Name

Varchar50

姓名

Sex

Int

性別(1:男,0:女)

Department

Varchar50

部門

Salary

Int

工資

 

我們可能需要判斷工資(Salary)字段不超過5000,按照此規則對該表中的數據進行清洗分析。

 

 

 

    在數據分析中, 數據通常存儲在如上所示的數據庫表中並且數據量也是比較大的不可能一次性地導入到內存中供規則引擎使用。因此我們將通過規則引擎來分批讀取並導入數據到內存中。

 

    通過規則引擎進行數據分析將遵從以下所示的結構步驟:

 

   

 

    1:需分析的數據

 

    2:數據讀取

 

    3:將數據寫入內存

 

    4:規則庫

 

    5:規則引擎

 

    6:分析結果

 

工作原理

 

    首先從需要分析的數據庫中按照批次讀取數據,然後將讀取的數據放入內存中,再按照規則對內存中的數據進行過濾分析,當內存中的數據分析完成後,清空內存中的數據,再讀取下一批數據進來進行新一輪的分析,知道所有的數據處理完畢爲止。

 

 

 

規則庫

 

    用於判斷工資的業務內容我們用VisualRules提供的自然語言來進行表示,從而構成規則庫,如下圖所示:

 

 



 

 

上面的例子中,我們主要做的工作就是不停的判斷人員的工資情況,大於5000就發出警告信息,並把該條數據提取出來,存放其他指定的地方。

 

 

 

 

 

 

 

 

 

 

 

下面我們再用一個實際的例子來做一個規則引擎的示例,說明如何用VisualRules來表示數據分析中的業務規則

 

 

 

在車管所電子檔案系統中存在如下所示的數據表:PF_Table,用於記錄檔案圖片的基本信息,我們對該表進行數據分析,忽略數據的完整性和有效性,我們只看有多少數據違反了以下說明的業務規則

 

 

 

fNo(指標)

paNo(頁號)

Path(存放路徑)

caNo(文件)

baNo(業務)

0217233

1

\2008032403\0217233\1.jpg

406101

2008032403

0217233

2

\2008032403\0217233\2.jpg

406102

2008032403

0217233

3

\2008032403\0217233\3.jpg

406105

2008032403

0217233

4

\2008032403\0217233\4.jpg

406108

2008032401

 

 

 

 

業務規則

 

1path由三部分組成:業務類型,指標檔案,頁號。

 

    業務類型:必須與baNo一致

 

    指標檔案:必須與fNo一致

 

    頁號:必須與paNo一致

 

 

 

 

 

 

 

我們可以把VisualRules對數據的分析簡單概括爲3個步驟

 

1:規則引擎從數據庫中讀取數據,並將讀取的數據加載到內存中

 

2:取出內存中的數據進行分析,校驗,處理

 

3:返回結果數據,將髒數據存儲到指定的地方或者輸出其他的文件和信息

 

 

 

第一步:取出數據

 

    這個過程主要是通過規則引擎從數據庫中讀取數據,並把數據存放到內存中,VisualRules規則引擎提供一個獨特的功能,就是允許規則引擎直接訪問數據庫,而不需要其他任何外部程序代碼來協助。過程和傳統的編碼方式一樣,編寫SQL查詢語句,然後執行查詢,將結果存入內存。

 

    對一個數據庫進行分析的過程中,數據量肯定是巨大的,所以在編寫SQL語句讀取數據這個環節,我們要做一個說明:它可能需要DBA或者是專業的數據庫操作人員來完成,這個和規則引擎沒有關係,規則引擎只負責執行查詢,以及後續動作。

 

在這裏我僅用一個簡單的查詢語句來說明VisualRules提供的這個功能:

 

select top(10) * from PF_Table

 

這表示我只讀取PF_Table數據表的前10條數據來進行處理

 

 



 

 

通過規則引擎對象庫中添加test.dbs數據庫連接對象,然後通過該連接就可以直接訪問數據庫,編寫查詢,插入,刪除,更新等語句

 

 

 

SQL語句編寫完成後,我們就可以在規則中執行該語句

 



 

 

在規則包中添加一條規則,然後將複製的執行SQL的方法粘貼到規則的那麼

 





 

 

 

這樣,當規則運行的時候就會執行該查詢,同時會把查詢得到的數據放入到內存中,在這裏我們定義了內存表這個規則對象,可以直觀的看到內存中的數據

 

 

 

 

 

 

 

 

 

 

 

第二步:數據分析處理

 

 

 

    數據加載到內存中以後,我們需要取出來用配置好的規則來進行分析過濾

 

 

 

    因爲path3部分組成,每個部分都有對應的規則,所以我們先把這3部分按照特定的字符來分開,然後看第一部分是否與業務類型一致,第二部分是否與指標檔案,第三部分的數字是否與頁號一致,如果任何一個不一致,那麼該條數據是錯誤的數據

 

 

 

從上面的規則配置來看,規則實際上是對業務知識的抽象其表示形式與具體數據庫無關因此用戶在數據質量分析過程中編寫的規則能夠在其他相似的業務環境下複用。假如以後需要對其他的表進行數據監控。這種情形下, 用戶無需重新編寫規則只需利用先前在數據分析中定義好的VisualRules規則

 

 

 

 

 

 

 

    最後, 我們可以看出基於VisualRules規則引擎的數據分析系統具有以下優點

 

 

 

 

 

 

 

1:規則可以從所有應用程序具體化到一個集中式的規則庫。在這個規則庫中, 可以使用專門的規則管理工具( TemaServer) 來管理這些規則

 

 

 

2規則本身是動態的, 允許在不重新構建系統組件的情況下在整個系統實現業務規則的變化

 

 

 

3VisualRules的擴展性允許用戶自定義新的運算函數和清洗方法

 

 

 

4基於VisualRules規則的數據分析可以實現良好的交互性

 

 

 

5:以VisualRules表示的規則靈活的改變和很好的複用

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章