規則引擎在資料分析中的應用

2021-06-18 17:21:48 字數 3241 閱讀 2426

前言:規則引擎通過將業務規則和開發者的技術決策分離

, 實現了動態管理和修改業務規則而又不影響軟體系統的需求。以下通過例項對基於

sql 

查詢、自定義規則等一系列場景來說明規則引擎在資料分析中的應用。

在現代的企業級專案開發中

, 商業決策邏輯或業務規則往往是硬編碼嵌入在系統各處**中的。但是外部市場業務規則是隨時可能發生變化的

, 這樣開發人員必須時刻準備修改、更新系統

,降低了效率。在這種背景下

, 規則引擎應運而生

,它通過將業務規則和開發者的技術決策分離

, 實現了動態管理和修改業務規則而又不影響軟體系統的需求。規則引擎具有廣泛的應用領域

, 同樣也適用於資料分析和清洗。

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

欄位名字段型別

說明name

varchar(50

) 姓名

***

int

性別(1

:男,0

:女)

department

varchar(50

) 部門

salary

int 工資

我們可能需要判斷工資(

salary

)欄位不超過

5000

,按照此規則對該表中的資料進行清洗分析。

在資料分析中

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

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

:需分析的資料 2

:資料讀取 3

:將資料寫入記憶體 4

:規則庫 5

:規則引擎 6

:分析結果

工作原理

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

規則庫用於判斷工資的業務內容我們用

visualrules

提供的自然語言來進行表示,從而構成規則庫,如下圖所示:

上面的例子中,我們主要做的工作就是不停的判斷人員的工資情況,大於

5000

就發出警告資訊,並把該條資料提取出來,存放其他指定的地方。

下面我們再用乙個實際的例子來做乙個規則引擎的示例,說明如何用

visualrules

來表示資料分析中的業務規則

在車管所電子檔案系統中存在如下所示的資料表:

pf_table

,用於記錄檔案的基本資訊,我們對該錶進行資料分析,忽略資料的完整性和有效性,我們只看有多少資料違反了以下說明的業務規則

fno(指標)

pano

(頁號)

path

(存放路徑)

cano

(檔案)

bano

(業務)

業務規則 1

:path

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

業務型別:必須與

bano一致

指標檔案:必須與

fno一致

頁號:必須與

pano一致

我們可以把

visualrules

對資料的分析簡單概括為

3個步驟 1

:規則引擎從資料庫中讀取資料,並將讀取的資料載入到記憶體中 2

:取出記憶體中的資料進行分析,校驗,處理 3

:返回結果資料,將髒資料儲存到指定的地方或者輸出其他的檔案和資訊

第一步:取出資料

這個過程主要是通過規則引擎從資料庫中讀取資料,並把資料存放到記憶體中,

visualrules

規則引擎提供乙個獨特的功能,就是允許規則引擎直接訪問資料庫,而不需要其他任何外部程式**來協助。過程和傳統的編碼方式一樣,編寫

sql查詢語句,然後執行查詢,將結果存入記憶體。

對乙個資料庫進行分析的過程中,資料量肯定是巨大的,所以在編寫

sql語句讀取資料這個環節,我們要做乙個說明:它可能需要

dba或者是專業的資料庫操作人員來完成,這個和規則引擎沒有關係,規則引擎只負責執行查詢,以及後續動作。

在這裡我僅用乙個簡單的查詢語句來說明

visualrules

提供的這個功能:

select top(10) * frompf_table

這表示我只讀取

pf_table

資料表的前

10條資料來進行處理

通過規則引擎物件庫中新增

test.dbs

資料庫連線物件,然後通過該連線就可以直接訪問資料庫,編寫查詢,插入,刪除,更新等語句 在

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

這樣,當規則執行的時候就會執行該查詢,同時會把查詢得到的資料放入到記憶體中,在這裡我們定義了記憶體表這個規則物件,可以直觀的看到記憶體中的資料

第二步:資料分析處理

資料載入到記憶體中以後,我們需要取出來用配置好的規則來進行分析過濾 因為

path由3

部分組成,每個部分都有對應的規則,所以我們先把這

3部分按照特定的字元來分開,然後看第一部分是否與業務型別一致,第二部分是否與指標檔案,第三部分的數字是否與頁號一致,如果任何乙個不一致,那麼該條資料是錯誤的資料

規則引擎在資料分析中的作用

前言 規則引擎通過將業務規則和開發者的技術決策分離 實現了動態管理和修改業務規則而又不影響軟體系統的需求。以下通過例項對基於 sql 查詢 自定義規則等一系列場景來說明規則引擎在資料分析中的應用。在現代的企業級專案開發中 商業決策邏輯或業務規則往往是硬編碼嵌入在系統各處 中的。但是外部市場業務規則是...

MATLAB在資料分析方面的應用

引數為向量時 引數為矩陣時 標準差 呼叫格式 std x 計算向量x的標準差。std a 計算矩陣a的各列的標準差。std a,flag,dim flag取0或1,當flag 0時,按s所列公式計算 樣本標準差 當flag 1時,按s2所列公式計算總體標準差。預設情況下,flag 0,dim 1。x...

資料分析引擎Presto

presto與hbase的架構特別相似。都是主從架構思想。由於我們使用的hive只是把sql語句翻譯成mapreduce,然後再交給yarn去執行,我們都知道,yarn執行過程中,會產生資料落地,進而影響效率。因此我們通常用presto與hive做乙個整合,presto是完全記憶體計算,presto...