[發(fā)明專利]一種生成ETL代碼的方法及裝置在審
| 申請?zhí)枺?/td> | 202010069545.3 | 申請日: | 2020-01-21 |
| 公開(公告)號: | CN111324647A | 公開(公告)日: | 2020-06-23 |
| 發(fā)明(設(shè)計(jì))人: | 燕學(xué)斌;戴桂春;張義水;曹冬平 | 申請(專利權(quán))人: | 北京東方金信科技有限公司 |
| 主分類號: | G06F16/25 | 分類號: | G06F16/25;G06F8/30;G06F8/35 |
| 代理公司: | 北京紀(jì)凱知識產(chǎn)權(quán)代理有限公司 11245 | 代理人: | 孫楠 |
| 地址: | 100062 北京市東*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 生成 etl 代碼 方法 裝置 | ||
本發(fā)明涉及一種生成ETL代碼的方法及裝置,其包括:根據(jù)源數(shù)據(jù)模型和目標(biāo)數(shù)據(jù)模型之間的映射關(guān)系設(shè)置數(shù)據(jù)加工過程和加工規(guī)則,并采用已有工具軟件定義出映射關(guān)系,將該映射關(guān)系導(dǎo)出到映射關(guān)系表中;將數(shù)據(jù)源中所需的數(shù)據(jù)加載到映射關(guān)系表內(nèi)并解析,將解析后的映射關(guān)系按照加工批次和加工組別進(jìn)行編號,然后將編號后的映射關(guān)系表導(dǎo)入到目標(biāo)數(shù)據(jù)庫中;采用核心算法自動生成詳細(xì)映射文件;依據(jù)詳細(xì)映射文件自動生成參數(shù)化的SQL腳本;根據(jù)定義好的Python程序模板生成的腳本為Python代碼,目標(biāo)數(shù)據(jù)庫連接信息通過配置文件方式傳入,將SQL文件同Python程序模板進(jìn)行封裝,形成可執(zhí)行的Python腳本,完成ETL代碼的生成。本發(fā)明能實(shí)現(xiàn)自動生成ETL代碼,減少開發(fā)時(shí)間和成本。
技術(shù)領(lǐng)域
本發(fā)明涉及一種計(jì)算機(jī)領(lǐng)域,特別是關(guān)于一種生成ETL代碼的方法及裝置。
背景技術(shù)
在大數(shù)據(jù)平臺和數(shù)據(jù)倉庫項(xiàng)目中,對源系統(tǒng)數(shù)據(jù)進(jìn)行抽取、轉(zhuǎn)換和加載的工作需要通過腳本或程序來實(shí)現(xiàn),同時(shí)在大數(shù)據(jù)平臺內(nèi)部按照主題模型進(jìn)行數(shù)據(jù)加工也要通過腳本來實(shí)現(xiàn),ETL幾乎貫穿了大數(shù)據(jù)平臺的所有環(huán)節(jié)。傳統(tǒng)的ETL的設(shè)計(jì)者和開發(fā)者除了需要熟悉數(shù)據(jù)表的結(jié)構(gòu)和處理數(shù)據(jù)的規(guī)則,還需要具備非常好的編程能力。當(dāng)需求的規(guī)則或者數(shù)據(jù)源發(fā)生改變時(shí),傳統(tǒng)的ETL設(shè)計(jì)者必須重新編程設(shè)計(jì)整個ETL或者進(jìn)行大量的修改工作,很難滿足快速迭代的數(shù)據(jù)需求。
現(xiàn)有ETL開發(fā)過程中,模型開發(fā)人員在完成字段分析并設(shè)計(jì)好字段級映射關(guān)系后,需要先生成詳細(xì)映射文件(EXCEL),然后根據(jù)詳細(xì)映射文件生成SQL腳本,再將SQL腳本用高級語言(Python,Perl等)封裝成可執(zhí)行腳本,整個過程比較復(fù)雜,這樣會使開發(fā)過程成本高、效率低、難于維護(hù)。
發(fā)明內(nèi)容
針對現(xiàn)行ETL任務(wù)開發(fā)的過程和方法中,大規(guī)模的腳本開發(fā)需要耗費(fèi)大量的人力和物力,人工開發(fā)方式容易產(chǎn)生失誤等技術(shù)問題,本發(fā)明的目的是提供一種生成ETL代碼的方法及裝置,其能實(shí)現(xiàn)自動生成ETL代碼,減少開發(fā)時(shí)間和成本,并能滿足快速迭代的數(shù)據(jù)需求。
為實(shí)現(xiàn)上述目的,本發(fā)明采取以下技術(shù)方案:一種生成ETL代碼的方法,其包括以下步驟:S1、根據(jù)源數(shù)據(jù)模型和目標(biāo)數(shù)據(jù)模型之間的映射關(guān)系設(shè)置數(shù)據(jù)加工過程和加工規(guī)則,并采用已有工具軟件定義出映射關(guān)系,將該映射關(guān)系導(dǎo)出到映射關(guān)系表中;S2、將數(shù)據(jù)源中所需的數(shù)據(jù)加載到映射關(guān)系表內(nèi),并對所需數(shù)據(jù)與目標(biāo)數(shù)據(jù)之間的映射關(guān)系進(jìn)行解析,將解析后的映射關(guān)系按照加工批次和加工組別進(jìn)行編號,然后將編號后的映射關(guān)系表導(dǎo)入到目標(biāo)數(shù)據(jù)庫中;S3、采用核心算法自動生成詳細(xì)映射文件;S4、依據(jù)詳細(xì)映射文件自動生成參數(shù)化的SQL腳本,并保存為SQL文件;S5、根據(jù)定義好的Python程序模板生成的腳本為Python代碼,目標(biāo)數(shù)據(jù)庫連接信息通過配置文件方式傳入,將SQL文件同Python程序模板進(jìn)行封裝,形成可執(zhí)行的Python腳本,完成ETL代碼的生成。
進(jìn)一步,所述目標(biāo)數(shù)據(jù)模型包括貼源層、基礎(chǔ)層、匯總層和集市層。
進(jìn)一步,所述映射關(guān)系包括表級映射和字段級映射;所述映射關(guān)系是按照目標(biāo)數(shù)據(jù)模型定義的數(shù)據(jù)流向和加工規(guī)則建立起的數(shù)據(jù)元素的對應(yīng)關(guān)系,顯示出來源表到目標(biāo)表之間的加工規(guī)則。
進(jìn)一步,所述映射關(guān)系表內(nèi)結(jié)構(gòu)信息包括目標(biāo)數(shù)據(jù)庫名、目標(biāo)表名、目標(biāo)字段名、目標(biāo)表列序號、目標(biāo)列名稱、目標(biāo)列數(shù)據(jù)類型、批次號、組別、來源接口表名、來源表字段、來源字段類型以及字段加工表達(dá)式。
進(jìn)一步,所述核心算法包括以下步驟:S31、讀取目標(biāo)數(shù)據(jù)庫中編號后的映射關(guān)系表信息;S32、根據(jù)映射關(guān)系表中目標(biāo)表的名稱和個數(shù),確定出ETL作業(yè)樹的名稱和個數(shù);S33、從映射關(guān)系表中獲取每個目標(biāo)表的來源接口表、來源字段、組別號、批次號信息,按照這些信息排序并構(gòu)造出ETL作業(yè)樹,每個ETL作業(yè)樹代表一個ETL任務(wù)的順序執(zhí)行過程;S34、根據(jù)ETL作業(yè)樹,采用POI技術(shù)將每個作業(yè)樹生成一個詳細(xì)映射文件。
進(jìn)一步,所述作業(yè)樹從上到下關(guān)系為:目標(biāo)表接口-批次-組別。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京東方金信科技有限公司,未經(jīng)北京東方金信科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010069545.3/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 數(shù)據(jù)抽取、轉(zhuǎn)換和加載的執(zhí)行方法和裝置
- 為ETL任務(wù)分配節(jié)點(diǎn)的方法和調(diào)度系統(tǒng)
- 一種用于調(diào)度ETL任務(wù)的方法與設(shè)備
- 一種基于元數(shù)據(jù)的ETL實(shí)現(xiàn)方法及系統(tǒng)
- 一種監(jiān)控任務(wù)運(yùn)行的方法和設(shè)備
- 一種分布式數(shù)據(jù)ETL處理方法及裝置
- 一種基于多服務(wù)節(jié)點(diǎn)的數(shù)據(jù)處理系統(tǒng)及其方法
- ETL任務(wù)調(diào)度方法、裝置、計(jì)算機(jī)設(shè)備及存儲介質(zhì)
- 一種基于元數(shù)據(jù)的ETL任務(wù)批量生成方法
- ETL文件拆分方法及裝置





