規則引擎在數據分析中的作用
前言:規則引擎通過將業務規則和開發者的技術決策分離, 實現了動態管理和修改業務規則而又不影響軟件係統的需求。以下通過實例對基於SQL 查詢、自定義規則等一係列場景來說明規則引擎在數據分析中的應用。
在現代的企業級項目開發中, 商業決策邏輯或業務規則往往是硬編碼嵌入在係統各處代碼中的。但是外部市場業務規則是隨時可能發生變化的, 這樣開發人員必須時刻準備修改、更新係統,降低了效率。在這種背景下, 規則引擎應運而生,它通過將業務規則和開發者的技術決策分離, 實現了動態管理和修改業務規則而又不影響軟件係統的需求。規則引擎具有廣泛的應用領域, 同樣也適用於數據分析和清洗。
假設我們有以下所示的一個表結構:
字段名 |
字段類型 |
說明 |
Name |
Varchar(50) |
姓名 |
Sex |
Int |
性別(1:男,0:女) |
Department |
Varchar(50) |
部門 |
Salary |
Int |
工資 |
我們可能需要判斷工資(Salary)字段不超過5000,按照此規則對該表中的數據進行清洗分析。
在數據分析中, 數據通常存儲在如上所示的數據庫表中,並且數據量也是比較大的。不可能一次性地導入到內存中供規則引擎使用。因此我們將通過規則引擎來分批讀取並導入數據到內存中。
通過規則引擎進行數據分析將遵從以下所示的結構步驟:
1:需分析的數據
2:數據讀取
3:將數據寫入內存
4:規則庫
5:規則引擎
6:分析結果
工作原理:
首先從需要分析的數據庫中按照批次讀取數據,然後將讀取的數據放入內存中,再按照規則對內存中的數據進行過濾分析,當內存中的數據分析完成後,清空內存中的數據,再讀取下一批數據進來進行新一輪的分析,知道所有的數據處理完畢為止。
規則庫
用於判斷工資的業務內容我們用旗正規則引擎提供的自然語言來進行表示,從而構成規則庫,如下圖所示:
上麵的例子中,我們主要做的工作就是不停的判斷人員的工資情況,大於5000就發出警告信息,並把該條數據提取出來,存放其他指定的地方。
下麵我們再用一個實際的例子來做一個規則引擎的示例,說明如何用旗正規則引擎來表示數據分析中的業務規則
在車管所電子檔案係統中存在如下所示的數據表: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 |
業務規則
1:path由三部分組成:業務類型,指標檔案,頁號。
業務類型:必須與baNo一致
指標檔案:必須與fNo一致
頁號:必須與paNo一致
我們可以把旗正規則引擎對數據的分析簡單概括為3個步驟
1:規則引擎從數據庫中讀取數據,並將讀取的數據加載到內存中
2:取出內存中的數據進行分析,校驗,處理
3:返回結果數據,將髒數據存儲到指定的地方或者輸出其他的文件和信息
第一步:取出數據
這個過程主要是通過規則引擎從數據庫中讀取數據,並把數據存放到內存中,旗正規則引擎規則引擎提供一個獨特的功能,就是允許規則引擎直接訪問數據庫,而不需要其他任何外部程序代碼來協助。過程和傳統的編碼方式一樣,編寫SQL查詢語句,然後執行查詢,將結果存入內存。
對一個數據庫進行分析的過程中,數據量肯定是巨大的,所以在編寫SQL語句讀取數據這個環節,我們要做一個說明:它可能需要DBA或者是專業的數據庫操作人員來完成,這個和規則引擎沒有關係,規則引擎隻負責執行查詢,以及後續動作。
在這裏我僅用一個簡單的查詢語句來說明旗正規則引擎提供的這個功能:
select top(10) * fromPF_Table
這表示我隻讀取PF_Table數據表的前10條數據來進行處理
通過規則引擎對象庫中添加test.dbs數據庫連接對象,然後通過該連接就可以直接訪問數據庫,編寫查詢,插入,刪除,更新等語句
在SQL語句編寫完成後,我們就可以在規則中執行該語句
在規則包中添加一條規則,然後將複製的執行SQL的方法粘貼到規則的那麼中
這樣,當規則運行的時候就會執行該查詢,同時會把查詢得到的數據放入到內存中,在這裏我們定義了內存表這個規則對象,可以直觀的看到內存中的數據
第二步:數據分析處理
數據加載到內存中以後,我們需要取出來用配置好的規則來進行分析過濾
因為path由3部分組成,每個部分都有對應的規則,所以我們先把這3部分按照特定的字符來分開,然後看第一部分是否與業務類型一致,第二部分是否與指標檔案,第三部分的數字是否與頁號一致,如果任何一個不一致,那麼該條數據是錯誤的數據
最後更新:2017-11-09 14:36:38