【ETL】系列四:核心轉(zhuǎn)換場景—單表間直轉(zhuǎn)

關(guān)于kettle的安裝、數(shù)據(jù)庫連接等前置工作準備妥當了,從產(chǎn)品角度來說,會主要從業(yè)務(wù)核心的應(yīng)用場景來進行實操。

ETL有2個重要的概念,一是轉(zhuǎn)換、一是調(diào)度。在接下來的系列文章中,將分別從轉(zhuǎn)換和調(diào)度的場景進行分享。

轉(zhuǎn)換場景很多,處理源表到目標表的ETL場景轉(zhuǎn)化場景主要有:

1、單表間直接轉(zhuǎn)換

2、字段合并與字段拆分

3、行轉(zhuǎn)列與列轉(zhuǎn)行

4、字段的規(guī)格化清洗

5、字段的衍生計算

6、多表關(guān)聯(lián)同步至單表與單表同步到多表

在數(shù)據(jù)處理之初,業(yè)務(wù)需要將源數(shù)據(jù)庫A表中的數(shù)據(jù)推送到目標數(shù)據(jù)庫B表中,屬于單表間的直接轉(zhuǎn)化。

本節(jié)主要介紹使用kettle工具將源表和目標表的數(shù)據(jù)進行直接同步的應(yīng)用場景,由于一些眾所眾知的原因,僅通過Kettle工具操作示例。

業(yè)務(wù)目標:

將來源庫A中的【TQ_COMP_INFOCHG(機構(gòu)信息變動表)】的數(shù)據(jù)推送到目標數(shù)據(jù)庫B【org_basic_info_chg(機構(gòu)信息變動表)】。

業(yè)務(wù)流程分析:

抽取數(shù)據(jù):抽取來源庫A的數(shù)據(jù)表TQ_COMP_INFOCHG(機構(gòu)信息變動表)的數(shù)據(jù),可以定義抽取數(shù)據(jù)范圍;

轉(zhuǎn)換數(shù)據(jù):字段值進行直接映射,不需要轉(zhuǎn)化;

加載數(shù)據(jù):數(shù)據(jù)加載到目標庫B的數(shù)據(jù)表org_basic_info_chg(機構(gòu)信息變動表)中,目標表已有數(shù)據(jù),進行更新;否則,新增數(shù)據(jù)。

操作步驟:

1、啟動Spoon,進入主界面。點擊左上角的?文件 → 新建 → 轉(zhuǎn)換,?新建一個轉(zhuǎn)換;或者在歡迎頁tab,主對象樹窗口雙擊轉(zhuǎn)換快速新建。

新建轉(zhuǎn)換入口1


新建轉(zhuǎn)換入口2


2、點擊左側(cè)的?核心對象?,選擇?表輸入?并把它拖到右側(cè)的編輯區(qū)中進行配置。

由于抽取的數(shù)據(jù)來源某個數(shù)據(jù)庫的數(shù)據(jù)表,因此拖選【表輸入】插件,為了方便業(yè)務(wù)理解,可以將插件重命名。

數(shù)據(jù)抽取【表輸入】插件拖選

表輸入插件是為了查詢來源數(shù)據(jù),也就是抽取的數(shù)據(jù),因此需要將來源庫表信息進行填寫或選擇后,進行抽取SQL的定義。

關(guān)于數(shù)據(jù)庫連接的方式,此處不做贅述,可參考?kettle數(shù)據(jù)庫連接。

數(shù)據(jù)抽取【表輸入】插件配置

表輸入配置完成后,保存轉(zhuǎn)換文件,可點擊【運行這個轉(zhuǎn)換】按鈕進行本地運行。

數(shù)據(jù)抽取【表輸入】插件運行

3、點擊左側(cè)的?核心對象?,選擇??插入/更新?并把它拖到右側(cè)的編輯區(qū)中,按住?shift鍵連接 “表輸入”。

由于抽取的數(shù)據(jù)需要同步加載到目標數(shù)據(jù)表,因此拖選【表輸出】插件,為了方便業(yè)務(wù)理解,可以將插件重命名。

數(shù)據(jù)加載【插入/更新】插件拖選

表輸出插件是為了將抽取數(shù)據(jù)輸出到目標表,因此主要做三件事:

(1)目標數(shù)據(jù)庫表信息進行填寫或選擇;

(2)進行目標表字段唯一索引字段的配置,根據(jù)唯一索引,查看數(shù)據(jù)是否存在,當數(shù)據(jù)存在,更新數(shù)據(jù);若不存在,則插入數(shù)據(jù);

(3)目標表字段與來源表字段的映射關(guān)系配置。

數(shù)據(jù)加載【插入/更新】插件配置

如截圖中的配置,選擇完目標數(shù)據(jù)庫和目標數(shù)據(jù)表之后,用來查詢的關(guān)鍵字,選擇id,表示這里按照id查詢,如果此id存在,則更新數(shù)據(jù),若不存在則插入數(shù)據(jù);將目標表字段和來源表的流字段的映射關(guān)系進行匹配后,點擊保存即可。

插入/更新配置完成后,保存轉(zhuǎn)換文件,可點擊【運行這個轉(zhuǎn)換】按鈕進行本地運行。

數(shù)據(jù)加載【插入/更新】插件運行

4、轉(zhuǎn)換成功后,也可以檢查本地數(shù)據(jù)庫,查看數(shù)據(jù)是否推送成功。

來源表抽取數(shù)據(jù)截圖
推送目標表后的數(shù)據(jù)截圖

到這里,一個單表間的轉(zhuǎn)換流程就配置成功了,后續(xù)打開.ktr后綴的文件即可。

打開.ktr后綴的轉(zhuǎn)換文件

從上述這個簡單的單表間直轉(zhuǎn)的應(yīng)用場景操作過程中,我們可以從kettle工具獲得哪些啟發(fā)?如何更好地將ETL工具產(chǎn)品化?

從kettle工具獲得的啟發(fā):

1.kettle作為強大且成熟的ETL工具,已經(jīng)形成了一套通用化和標準化的設(shè)計規(guī)范和開發(fā)規(guī)范,對于產(chǎn)品經(jīng)理而言,Kettle是個相當重要的競品,如果你想超過它,請駕馭它,而在競品實操和分析的過程中可以知不足,知已有產(chǎn)品功能不足和自身產(chǎn)品能力不足;

2.工具服務(wù)于業(yè)務(wù),一切脫離業(yè)務(wù)的工具開發(fā)都是耍流氓,只有經(jīng)過業(yè)務(wù)場景的歸納和業(yè)務(wù)流程的梳理,才能得出工具所需要提供的能力是什么;

3.業(yè)務(wù)場景多種多樣,一般的實現(xiàn)路徑是經(jīng)歷從簡單到復(fù)雜,從基礎(chǔ)到高階的過程,單表間直轉(zhuǎn)的轉(zhuǎn)換場景,是第一個基礎(chǔ)應(yīng)用場景,在基礎(chǔ)場景的應(yīng)用過程中,不斷去定義基礎(chǔ)概念、去挖掘共性模塊、去抽象業(yè)務(wù)流程,這樣會讓產(chǎn)品研發(fā)迭代處于一個穩(wěn)健的狀態(tài)。

如何更好地將ETL工具產(chǎn)品化:

1、Kettle工具本身的通用性也決定了其產(chǎn)品設(shè)計上有很多應(yīng)對不同場景下的特殊配置,而某一類業(yè)務(wù)場景抽象后,是可以有一套相對簡單的流程的,讓業(yè)務(wù)人員人員更方便地去配置,提高配置效率,降低學(xué)習(xí)成本;

2、產(chǎn)品是人來使用,需要準確地表達概念,提高易用性。中文版的Kettle工具一些關(guān)鍵信息的語言表達不夠準確,需要從業(yè)務(wù)關(guān)心的角度,展示一些運行結(jié)果的指標,比如在步驟日志中,讀、寫、輸入、輸出、更新、拒絕等數(shù)據(jù)指標,有意義,但不完全是面向業(yè)務(wù)的語言,業(yè)務(wù)關(guān)心的是總共有多少數(shù)據(jù)量、成功了多少、失敗了多少等等。

當然,每個公司、每個行業(yè)所需要處理的數(shù)據(jù)對象各有不同,需要吸收kettle工具的養(yǎng)分側(cè)重點也不同,還得具體問題具體分析。

參考資料:Kettle入門之五 Kettle應(yīng)用場景(增量插入和更新)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容