實(shí)時(shí)數(shù)據(jù)處理規(guī)則有什么作用?
在大數(shù)據(jù)中的實(shí)時(shí)數(shù)據(jù)采集、ETL批量數(shù)據(jù)傳輸過程中很多數(shù)據(jù)處理過程以及數(shù)據(jù)質(zhì)量都希望實(shí)時(shí)進(jìn)行處理和檢測(cè)并把不符合要求的臟數(shù)據(jù)過濾掉或者進(jìn)行實(shí)時(shí)的數(shù)據(jù)質(zhì)量告警等。
在數(shù)據(jù)倉(cāng)庫(kù)建設(shè)過程中,每家企業(yè)的數(shù)據(jù)處理過程中肯定會(huì)有一些自身的數(shù)據(jù)處理特點(diǎn)如學(xué)號(hào)的處理、車牌號(hào)的處理、身份證號(hào)碼的處理、SKU編碼的處理、訂單號(hào)的處理等等,各行各業(yè)都有自己的數(shù)據(jù)處理和運(yùn)算方式,而ETL平臺(tái)本身只是內(nèi)置了一些通用的數(shù)據(jù)處理規(guī)則,企業(yè)所需要的這些個(gè)性化的運(yùn)算規(guī)則就可以通過ETL的自定義規(guī)則來實(shí)現(xiàn)了。
怎么自定義數(shù)據(jù)處理規(guī)則?
首先進(jìn)入ETL平臺(tái)的一個(gè)應(yīng)用,只有應(yīng)用中才可以新增自定義規(guī)則,因?yàn)橐?guī)則必須屬于某一個(gè)應(yīng)用。
注意:新增一個(gè)規(guī)則的分類才可以新增自定義規(guī)則
進(jìn)入應(yīng)用配置中新增一個(gè)規(guī)則分類
有了分類后再進(jìn)入到自定義規(guī)則中就可以新增規(guī)則了,點(diǎn)擊新增規(guī)則后給規(guī)則一個(gè)名稱如:發(fā)動(dòng)機(jī)號(hào)校驗(yàn)規(guī)則、訂單號(hào)合法性校驗(yàn)規(guī)則等等,class path不用填系統(tǒng)會(huì)自動(dòng)生成。
自定義數(shù)據(jù)處理規(guī)則的注意事項(xiàng)
規(guī)則新增成功后就可以給規(guī)則進(jìn)行代碼邏輯的編寫了
系統(tǒng)會(huì)自動(dòng)生成一個(gè)規(guī)則運(yùn)算的代碼模板出來,只需要根據(jù)模板中的提示進(jìn)行邏輯修改即可
平臺(tái)運(yùn)算規(guī)則使用的是標(biāo)準(zhǔn)的Java語法,不是JavaScript之類的,所以不用擔(dān)心運(yùn)算規(guī)則的執(zhí)行效率,經(jīng)過我們測(cè)試處理100W的數(shù)據(jù)使用Java規(guī)則只需要幾秒鐘即可完成,而如果用JavaScript語法的規(guī)則需要幾分鐘才能完成,所以RestCloud ETL在性能上是很有優(yōu)勢(shì)的。
規(guī)則代碼編寫完成后可以點(diǎn)擊編譯并保存按鈕即可,如果提示成功則表示代碼沒有問題,如果提示失敗可以根據(jù)提示信息進(jìn)行代碼修改,如果在Web IDE中編輯不是很方便也可以把代碼copy到idea/eclipse中進(jìn)行編輯,編輯完成后再copy進(jìn)來即可。
使用參數(shù)提升數(shù)據(jù)處理規(guī)則的復(fù)用率
如果規(guī)則都是固定算法不需要在系統(tǒng)執(zhí)行時(shí)傳入?yún)?shù)就不需要定義參數(shù),但是有時(shí)我們?yōu)榱四芴嵘?guī)則的復(fù)用性就必須得用到規(guī)則參數(shù)的功能了如:自定義一個(gè)格式化時(shí)間的規(guī)則,而格式化時(shí)間會(huì)有:?yyyy-MM-dd、yyyy年MM月dd日、yyyy-MM-dd HH:mm:ss等等,根本不知道用戶想格式化成什么樣,光是一個(gè)時(shí)間格式如果不用參數(shù)我們就得定義一大堆規(guī)則才可以實(shí)現(xiàn)上面的功能,最好的方式是時(shí)間的格式是由綁定規(guī)則時(shí)指定的一個(gè)參數(shù),這樣我們?cè)陂_發(fā)規(guī)則的時(shí)候只需要一個(gè)規(guī)則即可完成。
在新建規(guī)則時(shí)可以指定一個(gè)規(guī)則參數(shù),這樣在用戶選擇這個(gè)規(guī)則時(shí)就會(huì)提醒用戶設(shè)定參數(shù)
這樣用戶可以在綁定規(guī)則時(shí)指定一個(gè)參數(shù),這個(gè)參數(shù)會(huì)傳入到規(guī)則的方法中
系統(tǒng)通過一個(gè){參數(shù)id:參數(shù)值}的json傳入,我們轉(zhuǎn)為map對(duì)象后再獲取參數(shù)值即可在代碼中使用。
怎么使用規(guī)則進(jìn)行數(shù)據(jù)質(zhì)量的檢查或過濾
規(guī)則定義好后我們就可以在ETL的流程中使用這些規(guī)則來進(jìn)行數(shù)據(jù)質(zhì)量的檢查,數(shù)據(jù)清洗過濾等操作,如下面這個(gè)流程就可以把不符合要求的電話號(hào)碼的用戶給過濾掉同時(shí)發(fā)送告警通知給用戶
自定義規(guī)則調(diào)用第三方j(luò)ar包
規(guī)則中可以使用import 引入自己開發(fā)的jar包或者第三方j(luò)ar包的class進(jìn)入,這樣就可以利用第三方j(luò)ar包中的運(yùn)算能力(如:spark、sm4加密算法、邏輯回歸算法等)來實(shí)現(xiàn)很多復(fù)雜業(yè)務(wù)的處理和數(shù)據(jù)運(yùn)算。
規(guī)則中可以執(zhí)行SQL嗎?
規(guī)則中可以很方便地執(zhí)行SQL語句,系統(tǒng)已經(jīng)封裝了ETLRdbUtil這樣工具類(還有其他很多數(shù)據(jù)庫(kù)的工具類如:Redis,MongoDB,ES,Kafka等)如下代碼即可執(zhí)行SQL并返回?cái)?shù)據(jù)
String sql=”select * from tablename where id<10”;
List docs=ETLRdbUtil.listDocs(ETLRdbUtil.getConnection("數(shù)據(jù)源id"), sql);
for(Document doc:docs) {
PrintUtil.o(doc.getString("userId"));
}
ETLRdbUtil工具類有很多方便訪問數(shù)據(jù)庫(kù)的工具,一般只需要幾行代碼就能讀取、寫入、修改數(shù)據(jù),后面我們會(huì)專門介紹ETLRdbUtil工具類的使用。文章來源:http://www.zghlxwxcb.cn/news/detail-474859.html
ETLCloud數(shù)據(jù)集成平臺(tái)社區(qū)版文章來源地址http://www.zghlxwxcb.cn/news/detail-474859.html
到了這里,關(guān)于使用ETLCloud強(qiáng)大的自定義規(guī)則實(shí)現(xiàn)自定義數(shù)據(jù)處理算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!