前言:規則引擎通過將業務規則和開發者的技術決策分離
, 實現了動態管理和修改業務規則而又不影響軟體系統的需求。以下通過例項對基於
sql
查詢、自定義規則等一系列場景來說明規則引擎在資料分析中的應用。
在現代的企業級專案開發中
, 商業決策邏輯或業務規則往往是硬編碼嵌入在系統各處**中的。但是外部市場業務規則是隨時可能發生變化的
, 這樣開發人員必須時刻準備修改、更新系統
,降低了效率。在這種背景下
, 規則引擎應運而生
,它通過將業務規則和開發者的技術決策分離
, 實現了動態管理和修改業務規則而又不影響軟體系統的需求。規則引擎具有廣泛的應用領域
, 同樣也適用於資料分析和清洗。
假設我們有以下所示的乙個表結構:
欄位名字段型別 說明
name
varchar(50
) 姓名
***
int
性別(1
:男,0
:女)
department
varchar(50
) 部門
salary
int 工資
我們可能需要判斷工資(
salary
)欄位不超過
5000
,按照此規則對該表中的資料進行清洗分析。
在資料分析中
, 資料通常儲存在如上所示的
資料庫
表中,並且資料量也是比較大的。不可能一次性地匯入到記憶體中供規則引擎使用。因此我們將通過規則引擎來分批讀取並匯入資料到記憶體中。
通過規則引擎進行資料分析將遵從以下所示的結構步驟: 1
:需分析的資料 2
:資料讀取 3
:將資料寫入記憶體 4
:規則庫 5
:規則引擎 6
:分析結果
工作原理:
首先從需要分析的資料庫中按照批次讀取資料,然後將讀取的資料放入記憶體中,再按照規則對記憶體中的資料進行過濾分析,當記憶體中的資料分析完成後,清空記憶體中的資料,再讀取下一批資料進來進行新一輪的分析,知道所有的資料處理完畢為止。
規則庫
用於判斷工資的業務內容我們用旗正規則引擎提供的自然語言來進行表示,從而構成規則庫,如下圖所示:
上面的例子中,我們主要做的工作就是不停的判斷人員的工資情況,大於
5000
就發出警告資訊,並把該條資料提取出來,存放其他指定的地方。
下面我們再用乙個實際的例子來做乙個規則引擎的示例,說明如何用
旗正規則引擎
來表示資料分析中的業務規則
在車管所電子檔案系統中存在如下所示的資料表:
pf_table
,用於記錄檔案的基本資訊,我們對該錶進行資料分析,忽略資料的完整性和有效性,我們只看有多少資料違反了以下說明的業務規則
fno(指標)
pano
(頁號)
path
(存放路徑)
cano
(檔案)
bano
(業務)
業務規則 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部分按照特定的字元來分開,然後看第一部分是否與業務型別一致,第二部分是否與指標檔案,第三部分的數字是否與頁號一致,如果任何乙個不一致,那麼該條資料是錯誤的資料
規則引擎在資料分析中的應用
前言 規則引擎通過將業務規則和開發者的技術決策分離 實現了動態管理和修改業務規則而又不影響軟體系統的需求。以下通過例項對基於 sql 查詢 自定義規則等一系列場景來說明規則引擎在資料分析中的應用。在現代的企業級專案開發中 商業決策邏輯或業務規則往往是硬編碼嵌入在系統各處 中的。但是外部市場業務規則是...
資料分析引擎Presto
presto與hbase的架構特別相似。都是主從架構思想。由於我們使用的hive只是把sql語句翻譯成mapreduce,然後再交給yarn去執行,我們都知道,yarn執行過程中,會產生資料落地,進而影響效率。因此我們通常用presto與hive做乙個整合,presto是完全記憶體計算,presto...
未來人在資料分析中的角色轉變
資料分析是個古老的職業,可能從人類誕生起就存在,小孩子出生之後也是在不斷的學習知識 收集資訊進行綜合評估中成長起來的。在古代,因為資料分析手段的原始簡單,收集和掌握資訊需要的是耐心與勇氣,所以,那些每天仰望星空的人逐漸成為了資料分析領域的大師,也形成了星象學家和中國的風水大師們。當然,對於那些孜孜不...