本發(fā)明總體涉及軟件開發(fā)過程,尤其但并不只涉及一種自動生成抽取-轉(zhuǎn)換-加載(extract-transform-load,etl)代碼的方法和裝置。
背景技術(shù):
一般而言,抽取、轉(zhuǎn)換、加載(etl)為數(shù)據(jù)倉儲中的一種處理過程,該過程用于從來源系統(tǒng)中抽取數(shù)據(jù),并按照業(yè)務(wù)需求實施必要的數(shù)據(jù)轉(zhuǎn)換步驟后將其放入數(shù)據(jù)倉庫。etl程序的開發(fā)是一個緩慢的過程。etl代碼開發(fā)過程的通常步驟為:根據(jù)從來源至目標(biāo)數(shù)據(jù)映射明細創(chuàng)建詳細設(shè)計文檔、編碼以及單元測試。而且,針對每個必須開發(fā)的etl代碼均重復(fù)這三個步驟。然而,這三個步驟非常耗時且價格昂貴。研究和統(tǒng)計結(jié)論指出,etl代碼開發(fā)為產(chǎn)品整合方案中70%的成本和時間的根源所在。此外,etl代碼開發(fā)還影響新產(chǎn)品發(fā)布的上市時間,以及新的合規(guī)性信息的傳遞等。另一方面,etl代碼的手動開發(fā)可導(dǎo)致缺陷,而且影響及時滿足要求的能力。
現(xiàn)有系統(tǒng)遵循計算機執(zhí)行的etl工作流程生成方法。該etl工作流程生成方法包括接收元數(shù)據(jù)。該元數(shù)據(jù)描述了來源與目標(biāo)之間的映射,其中,該來源和目標(biāo)描述了一個實體。該方法還包括接收實體選擇結(jié)果,該實體選擇結(jié)果詳細描述了上述實體。所述工作流程可基于元數(shù)據(jù)及實體選擇結(jié)果而生成。
然而,現(xiàn)有系統(tǒng)基本上并未削減etl代碼開發(fā)過程中的時間和成本。而且,所述現(xiàn)有方法在很大程度上并未完全自動化。因此,開發(fā)出的etl代碼仍然存在著缺陷。
技術(shù)實現(xiàn)要素:
本發(fā)明克服了現(xiàn)有技術(shù)的一個或多個缺點并提供額外的優(yōu)點。而且,本發(fā)明的技術(shù)可實現(xiàn)其他特征和優(yōu)點。此處,對本發(fā)明的其他實施方式和方面進行了詳細描述,而且所述實施方式和方面視為所要求保護的本發(fā)明的一部分。
此處公開一種自動生成抽取-轉(zhuǎn)換-加載(etl)代碼的方法和裝置。代碼生成裝置從預(yù)定義etl代碼中自動檢測出一個或多個模式,并且從模式數(shù)據(jù)庫中獲取該一個或多個模式。之后,用戶提供上述獲取的一個或多個etl模式所需的用戶輸入,并根據(jù)該用戶輸入,識別出一個或多個etl模式。根據(jù)所述一個或多個從主數(shù)據(jù)源至次數(shù)據(jù)源etl映射,所述代碼生成裝置自動生成上述etl代碼。
因此,本發(fā)明包括一種自動生成etl代碼的方法。該方法包括,由一代碼生成裝置根據(jù)預(yù)定義etl代碼檢測出一個或多個etl模式。其后,所述代碼生成裝置判斷所檢測出的一個或多個etl模式中的每個etl模式是否存在于所述代碼生成裝置的模式數(shù)據(jù)庫中。此外,所述代碼生成裝置從所述模式數(shù)據(jù)庫中獲取所述一個或多個etl模式。獲取所述一個或多個etl模式后,所述代碼生成裝置接收與所述一個或多個etl模式中每個模式對應(yīng)的一個或多個參數(shù)值、主數(shù)據(jù)源相關(guān)元數(shù)據(jù)、次數(shù)據(jù)源相關(guān)元數(shù)據(jù)當(dāng)中的每一個的用戶輸入。此外,所述代碼生成裝置根據(jù)所述一個或多個etl模式中每個模式的用戶輸入,自動識別出一個或多個從主數(shù)據(jù)源至次數(shù)據(jù)源的etl映射。之后,所述代碼生成裝置自動生成與所述一個或多個識別出的etl映射中的每個etl映射相對應(yīng)的etl代碼。
此外,本發(fā)明還包括一種用于自動生成etl代碼的代碼生成裝置。該代碼生成裝置包括:處理器;以及存儲器,以可通信方式與所述處理器相連接。所述存儲器存有處理器可執(zhí)行指令,該指令在執(zhí)行時使得所述處理器根據(jù)預(yù)定義etl代碼檢測出一個或多個etl模式。在檢測出所述一個或多個etl模式后,所述處理器判斷所檢測出的一個或多個etl模式中的每個etl模式 是否存在于所述代碼生成裝置的模式數(shù)據(jù)庫中。此外,所述處理器從所述模式數(shù)據(jù)庫中獲取一個或多個etl模式。獲取所述一個或多個etl模式后,所述處理器接收與所述一個或多個etl模式中每個模式對應(yīng)的一個或多個參數(shù)值、主數(shù)據(jù)源相關(guān)元數(shù)據(jù)、次數(shù)據(jù)源相關(guān)元數(shù)據(jù)中的每一個的用戶輸入。此外,所述處理器根據(jù)所述一個或多個etl模式中每個模式的用戶輸入,自動識別出一個或多個從主數(shù)據(jù)源至次數(shù)據(jù)源的etl映射。最后,所述處理器自動生成與所述一個或多個識別出的etl映射中的每個etl映射相對應(yīng)的etl代碼。
此外,本發(fā)明還涉及一種非暫時性計算機可讀介質(zhì),該介質(zhì)包括存于其內(nèi)的指令,該指令在由至少一個處理器處理時使得所述代碼生成裝置實施操作,該操作包括根據(jù)預(yù)定義etl代碼檢測出一個或多個etl模式。所述指令還使得所述處理器判斷所檢測出的一個或多個etl模式中的每個etl模式是否存在于所述代碼生成裝置的模式數(shù)據(jù)庫中。之后,所述指令使得所述處理器從所述模式數(shù)據(jù)庫中獲取一個或多個etl模式。此外,所述指令還使得所述處理器接收與所述一個或多個etl模式中每個模式對應(yīng)的一個或多個參數(shù)值、主數(shù)據(jù)源相關(guān)元數(shù)據(jù)、次數(shù)據(jù)源相關(guān)元數(shù)據(jù)中的每一個的用戶輸入。之后,所述指令使得所述處理器根據(jù)所述一個或多個etl模式中每個模式的用戶輸入,自動識別出一個或多個從主數(shù)據(jù)源至次數(shù)據(jù)源的etl映射。最后,所述指令使得所述處理器自動生成與所述一個或多個識別出的etl映射中的每個etl映射相對應(yīng)的etl代碼。
上述《發(fā)明內(nèi)容》部分僅在于說明,并不意在施加任何限制。通過參考附圖和以下《具體實施方式》部分,除了以上所述說明性方面、實施方式及特征之外,其他方面、實施方式和特征也將變得顯而易見。
附圖說明
所附各圖并入本發(fā)明之內(nèi)并構(gòu)成本發(fā)明的一部分,用于對例示實施方式進行描述,并與說明書一道闡明所公開的原理。各圖中,附圖標(biāo)記最左邊的 位值表明該參考符號第一次出現(xiàn)時所在的圖號,而且均采用相同附圖標(biāo)記指代相同或類似部件。以下,對根據(jù)本發(fā)明實施方式的系統(tǒng)和/或方法的一些實施方式進行描述,該描述僅以例示為目的且參考上述附圖,其中:
圖1a所示為根據(jù)本發(fā)明一些實施方式用于自動生成抽取-轉(zhuǎn)換-加載(etl)代碼的例示架構(gòu);
圖1b至圖1n所示為根據(jù)本發(fā)明一些實施方式的例示自動生成etl代碼方法;
圖2為根據(jù)本發(fā)明一些實施方式用于自動生成etl代碼的代碼生成裝置的詳細框圖;
圖3為根據(jù)本發(fā)明一些實施方式自動生成抽取-轉(zhuǎn)換-加載(etl)代碼的流程圖;
圖4為用于實施符合本發(fā)明實施方式的例示計算機系統(tǒng)框圖。
本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,本文中的任何框圖均表示秉承了本發(fā)明原理的說明性系統(tǒng)的概念圖。同樣地,還應(yīng)當(dāng)理解的是,任何的作業(yè)圖、流程圖、狀態(tài)遷移圖以及偽代碼等均表示可實質(zhì)表現(xiàn)于計算機可讀介質(zhì)中且由計算機或處理器(無論該計算機或處理器明確示出與否)執(zhí)行的各種過程。
附圖標(biāo)記
具體實施方式
本文中,“例示”一詞用于表示“作為示例、實例或例證”。此處,描述為“例示”的本技術(shù)方案任何實施方式或?qū)崿F(xiàn)方式并不一定應(yīng)理解為比其他實施方式優(yōu)選或有利的實施方式。
雖然本發(fā)明的具體實施方式已在附圖中以例示方式對進行了展示且將在以下進行詳細描述,但本發(fā)明還可做出各種修飾和替代形式。應(yīng)該理解的是,本發(fā)明并不旨在局限于所公開的具體形式,相反,本發(fā)明意在涵蓋落入其精神和范圍內(nèi)的所有修改方案、等同方案及替代方案。
“包括”一詞或其任何其他變形詞旨在涵蓋非排除性的納入關(guān)系。如此, 對于包括一系列部件或步驟的體系、裝置或方法而言,其并不只包括所述部件或步驟,而是可能包括其他未明確列出的部件或步驟,或者包括該體系、裝置或方法固有的部件或步驟。換言之,在“包括……”這一表述之后描述的系統(tǒng)或裝置中的一個或多個元件,在沒有其他限制的情況下,并不排除其他或額外元件在該系統(tǒng)或裝置中的存在。
本發(fā)明涉及一種自動生成抽取-轉(zhuǎn)換-加載(etl)代碼的方法和裝置。代碼生成裝置從一個或多個來源接收預(yù)定義etl代碼。接收該預(yù)定義etl代碼后,所述代碼生成裝置自動檢測出所接收預(yù)定義etl代碼中的一個或多個etl模式。所述代碼生成裝置對包括一個或多個etl模式的模式數(shù)據(jù)庫進行搜索,以判斷所檢測出的一個或多個etl模式是否存在。如果所檢測出的一個或多個etl模式存在于所述模式數(shù)據(jù)庫中,即由用戶對所檢測出的一個或多個etl模式進行選擇。如果所檢測出的一個或多個etl模式不存在于所述模式數(shù)據(jù)庫中,則由用戶利用所述代碼生成裝置的模式編輯器創(chuàng)建所需的一個或多個etl模式。之后,將所創(chuàng)建的一個或多個etl模式更新于所述模式數(shù)據(jù)庫中,并由用戶對所檢測出的一個或多個etl模式進行選擇。在對所檢測出的一個或多個etl模式進行選擇后,所述代碼生成裝置從所述模式數(shù)據(jù)庫中獲取所選擇的一個或多個etl模式。之后,由用戶提供從所述模式數(shù)據(jù)庫中獲取的所述一個或多個etl模式中的每個模式的用戶輸入。所提供的用戶輸入為與所述一個或多個etl模式中每個模式的一個或多個參數(shù)值、主數(shù)據(jù)源相關(guān)元數(shù)據(jù)、以及次數(shù)據(jù)源相關(guān)元數(shù)據(jù)當(dāng)中的每一個的用戶輸入。接收所述用戶輸入后,所述代碼生成裝置自動識別出所述一個或多個etl模式中每個模式的一個或多個從主數(shù)據(jù)源至次數(shù)據(jù)源etl映射。如果所述識別出的一個或多個etl映射不正確,則由用戶對該一個或多個etl映射進行更改。最后,所述代碼生成裝置根據(jù)所述一個或多個從主數(shù)據(jù)源至次數(shù)據(jù)源etl映射自動生成etl代碼。
以下參考附圖,對本發(fā)明的實施方式進行詳細描述。其中,所述附圖作為本文的一部分,以例示方式示出了可實踐本發(fā)明的具體實施方式。這些實施方式的描述詳細程度足以讓本領(lǐng)域技術(shù)人員可對本發(fā)明進行實踐,而且可 以理解的是,在不脫離本發(fā)明范圍的前提下,還可利用其他實施方式,以及做出各種改變。因此,以下描述不應(yīng)視為具有限制意義。
圖1a所示為根據(jù)本發(fā)明一些實施方式用于自動生成抽取-轉(zhuǎn)換-加載(etl)代碼的例示架構(gòu)。
架構(gòu)100包括:一個或多個來源,即來源一1031、來源二1032、來源三1033……來源n103n(統(tǒng)稱為一個或多個來源103);通信網(wǎng)絡(luò)105;以及代碼生成裝置107。舉例而言,所述一個或多個來源103可以為代碼數(shù)據(jù)庫、客戶端/最終用戶等。通信網(wǎng)絡(luò)105可以為有線通信網(wǎng)絡(luò)和無線通信網(wǎng)絡(luò)中的至少一個。
所述一個或多個來源103可經(jīng)通信網(wǎng)絡(luò)105向代碼生成裝置107提供預(yù)定義etl代碼104。舉例而言,預(yù)定義etl代碼104可以為可擴展標(biāo)記語言(xml)文檔。預(yù)定義etl代碼104可提供與自動生成新etl代碼所需的一個或多個etl模式相關(guān)的信息。代碼生成裝置107包括處理器109、用戶界面111、存儲器113、模式數(shù)據(jù)庫115以及模式編輯器117。如圖1b、圖1c和圖1d所示,處理器109對預(yù)定義etl代碼104中的所述一個或多個etl模式進行自動檢測。在圖1b中,用戶界面111上顯示有“patterndetection”(模式檢測)圖標(biāo)。當(dāng)對所述模式檢測圖標(biāo)進行選擇后,處理器109導(dǎo)航至圖1c所示頁面。預(yù)定義etl代碼104的xml文檔上傳后,處理器109對該上傳的預(yù)定義etl代碼104中的一個或多個etl模式進行自動檢測。當(dāng)檢測出所上傳預(yù)定義etl代碼104中的一個或多個etl模式后,該檢測出的一個或多個etl模式以預(yù)設(shè)格式提供至用戶。例如,所述預(yù)設(shè)格式可以為圖1d所示電子表格。
此外,在經(jīng)用戶界面111接收到用戶請求后,處理器109對模式數(shù)據(jù)庫115進行搜索,也就是說,用戶可瀏覽模式數(shù)據(jù)庫115并對顯示于用戶界面111上的一個或多個etl模式進行選擇。模式數(shù)據(jù)庫115包括與圖1e和圖1f所示一個或多個類別相關(guān)的一個或多個預(yù)設(shè)etl模式。如圖1e所示,所述一個或多個例示類別例如為“dataquality”(數(shù)據(jù)質(zhì)量)和“digital”(數(shù)字業(yè)務(wù)智能)。如圖1f所示,所述一個或多個例示類別還例如為“enterprise datawarehouse”(edw,企業(yè)數(shù)據(jù)倉庫)和“industrymodels”(行業(yè)模型)。所述類別中的每個類別均劃分為包括所述一個或多個etl模式的子類別。舉例而言,圖1g示出了“aggregation”(匯總)、“changedatacapture”(變更數(shù)據(jù)捕獲)、“constraintloading”(約束加載)、“datastandardization”(數(shù)據(jù)標(biāo)準(zhǔn)化)、“dimensions”(規(guī)模)等示例性子類別。所述一個或多個etl模式可從所述子類別中選出。
在一種實施方式中,模式數(shù)據(jù)庫115為可擴展數(shù)據(jù)庫,也就是說,所述一個或多個etl模式可按照規(guī)則時間間隔添加,或者可在該一個或多個etl模式創(chuàng)建時添加。在一種實施方式中,模式數(shù)據(jù)庫115可配置于代碼生成裝置107內(nèi);或者,模式數(shù)據(jù)庫115可以為與代碼生成裝置107關(guān)聯(lián)的獨立數(shù)據(jù)庫。通過搜索模式數(shù)據(jù)庫115,處理器109可對所檢測出的一個或多個etl模式是否位于模式數(shù)據(jù)庫115內(nèi)進行檢查。如果所檢測出的一個或多個etl模式位于模式數(shù)據(jù)庫115內(nèi),用戶即對該一個或多個etl模式進行選擇,而且由處理器109獲取用戶所選擇的該一個或多個etl模式。如果所檢測出的一個或多個etl模式不位于模式數(shù)據(jù)庫115內(nèi),用戶則可利用模式編輯器117創(chuàng)建所需的一個或多個etl模式,并且由處理器109獲取所創(chuàng)建的該一個或多個etl模式。模式編輯器117允許用戶對所述一個或多個etl模式進行編輯或創(chuàng)建。模式編輯器117還允許用戶對用于實現(xiàn)編輯或創(chuàng)建目的的定制功能進行選擇。在一種實施方式中,所述一個或多個etl模式可以從零創(chuàng)建;或者,所述一個或多個etl模式可通過選擇一個或多個預(yù)設(shè)etl模式而創(chuàng)建。根據(jù)所創(chuàng)建的一個或多個etl模式,可將模式數(shù)據(jù)庫115更新,以用于后續(xù)參考。圖1h所示為用戶根據(jù)目錄“edw”和“sub-category-dimensions”(子目錄-規(guī)模)從模式數(shù)據(jù)庫115中的一個或多個etl模式選出的例示etl模式“insert_updata_delete”(插入_更新_刪除)。
所獲取的一個或多個etl模式可保存于存儲器113中。在獲取所述一個或多個etl模式后,可通過用戶界面111提供用戶輸入。如圖1i所示,用戶依次提供與所述一個或多個etl模式中每個模式對應(yīng)的用戶輸入,所述用戶輸入為一個或多個參數(shù)值、主數(shù)據(jù)源相關(guān)元數(shù)據(jù)、次數(shù)據(jù)源相關(guān)元數(shù)據(jù)的用 戶輸入。所述一個或多個參數(shù)值為所述一個或多個etl模式中每個模式的特性參數(shù)值。在一種實施方式中,所述一個或多個參數(shù)可以為映射參數(shù)、會話參數(shù)和會話連接信息中的至少一個。映射參數(shù)包括主數(shù)據(jù)源名稱,次數(shù)據(jù)源名稱以及etl模式的其他相關(guān)特性等關(guān)鍵屬性。會話參數(shù)和會話連接參數(shù)可包括與etl模式的待建立連接相關(guān)的特性,以及其他相關(guān)運行時間特性。在一種實施方式中,所述主數(shù)據(jù)源相關(guān)元數(shù)據(jù)包括作為etl模式所需元數(shù)據(jù)的載入源的必要數(shù)據(jù)。舉例而言,所述主數(shù)據(jù)源相關(guān)元數(shù)據(jù)可以為結(jié)構(gòu)化查詢語言(sql)腳本、范例文件、無格式文件等形式的數(shù)據(jù)。在一種實施方式中,所述次數(shù)據(jù)源相關(guān)元數(shù)據(jù)包括可作為etl模式所需元數(shù)據(jù)的載入源的必要數(shù)據(jù)。舉例而言,所述次數(shù)據(jù)源相關(guān)元數(shù)據(jù)可以為sql腳本、范例文件、無格式文件等形式的數(shù)據(jù)。
提供所述用戶輸入后,處理器109對一個或多個從主數(shù)據(jù)源至次數(shù)據(jù)源etl映射進行自動識別。圖1j所示為與所選例示etl模式相應(yīng)的一個或多個etl映射。
所述一個或多個etl映射可包括,但不限于,映射操作、描述變更、關(guān)鍵指標(biāo)、主數(shù)據(jù)源信息、次數(shù)據(jù)源信息以及預(yù)定義業(yè)務(wù)規(guī)則。如果所識別出的一個或多個etl映射正確,用戶即保留該自動識別出的一個或多個etl映射。如果所識別出的一個或多個etl映射不正確,用戶則利用用戶界面111對該一個或多個etl映射進行編輯,以提供正確的一個或多個etl映射。
完成上述映射后,如圖1k所示,用戶界面111允許用戶返回并做出所需的變更。如果無需變更,用戶可通過選擇“finish”(結(jié)束)而進一步實施后續(xù)處理。最后,如圖1l所示,處理器109自動生成與所述一個或多個識別出的etl映射中的每個etl映射對應(yīng)的etl代碼。
所生成的etl代碼中的每一個均包括與所述一個或多個etl模式中每個模式相對應(yīng)的會話代碼、工作流程代碼以及映射代碼。所述會話代碼與所述etl模式的待建立連接和其他運行時間參數(shù)的相關(guān)連接信息以及其他相關(guān)運行時間特性相關(guān)聯(lián)。所述工作流程代碼與一個或多個會話以及該會話內(nèi)的任務(wù)相關(guān)聯(lián)。所述會話創(chuàng)建并運行于所述工作流程代碼中。所述映射代碼與所 述一個或多個etl映射的關(guān)聯(lián)信息相關(guān)聯(lián)。
在一種實施方式中,如圖1m所示,所述一個或多個etl模式中每個模式的對應(yīng)etl代碼可同時生成。如圖1n所示,所述一個或多個模式中每個模式的對應(yīng)用戶輸入以預(yù)設(shè)格式一次性提供。舉例而言,所述預(yù)設(shè)格式可以為電子表格形式的格式。
圖2為根據(jù)本發(fā)明一些實施方式用于自動生成etl代碼的代碼生成裝置的詳細框圖。
在一種實施方式中,代碼生成裝置107從一個或多個來源103接收數(shù)據(jù)203。舉例而言,數(shù)據(jù)203可存儲在配置于代碼生成裝置107內(nèi)的存儲器113中。在一種實施方式中,數(shù)據(jù)203包括預(yù)定義etl代碼104、模式數(shù)據(jù)207、參數(shù)數(shù)據(jù)209、主次數(shù)據(jù)源211、用戶輸入數(shù)據(jù)213、etl映射數(shù)據(jù)215、etl代碼數(shù)據(jù)217以及其他數(shù)據(jù)219。在所示圖2中,對存于存儲器113內(nèi)的各模塊205進行詳細描述。
在一種實施方式中,數(shù)據(jù)203可以各種數(shù)據(jù)形式存儲于存儲器113中。此外,還可采用關(guān)系型或?qū)哟涡偷葦?shù)據(jù)模型對上述數(shù)據(jù)203進行組織。其它數(shù)據(jù)219可存儲包括由各模塊205生成且用于執(zhí)行代碼生成裝置107的各種功能的臨時數(shù)據(jù)和臨時文件在內(nèi)的數(shù)據(jù)。
在一種實施方式中,預(yù)定義etl代碼104可經(jīng)通信網(wǎng)絡(luò)105從所述一個或多個來源103接收。舉例而言,所述一個或多個來源103可以為代碼數(shù)據(jù)庫、客戶端/最終用戶等。預(yù)定義etl代碼104可例如為可擴展標(biāo)記語言(xml)文檔。預(yù)定義etl代碼104可提供與自動生成新etl代碼所需的一個或多個etl模式相關(guān)的信息。
在一種實施方式中,模式數(shù)據(jù)207包括一個或多個etl模式。所述一個或多個etl模式可以為一個或多個預(yù)定義etl模式以及由代碼生成裝置107的模式編輯器117創(chuàng)建的一個或多個etl模式中的至少一個。所述一個或多個etl模式可由模式編輯器117從零創(chuàng)建,或通過選擇模式數(shù)據(jù)庫115內(nèi)的一個或多個預(yù)設(shè)etl模式而創(chuàng)建。根據(jù)所創(chuàng)建的一個或多個etl模式,可將模式數(shù)據(jù)庫115更新,以用于后續(xù)參考。
在一種實施方式中,參數(shù)數(shù)據(jù)209包括一個或多個參數(shù)。所述一個或多個etl模式中每個模式均與該一個或多個參數(shù)相關(guān)聯(lián)。所述一個或多個參數(shù)可以為映射參數(shù)、會話參數(shù)和會話連接參數(shù)。映射參數(shù)包括主數(shù)據(jù)源名稱,次數(shù)據(jù)源名稱以及etl模式的其他相關(guān)特性等關(guān)鍵屬性。會話參數(shù)和會話連接參數(shù)可包括與etl模式的待建立連接相關(guān)的特性,以及其他相關(guān)運行時間特性。
在一種實施方式中,主次數(shù)據(jù)源211包括所述一個或多個etl模式中每個模式所需的主數(shù)據(jù)源相關(guān)元數(shù)據(jù)和次數(shù)據(jù)源相關(guān)元數(shù)據(jù)。在一種實施方式中,所述主數(shù)據(jù)源相關(guān)元數(shù)據(jù)包括作為etl模式所需元數(shù)據(jù)的載入源的必要數(shù)據(jù)。舉例而言,所述主數(shù)據(jù)源相關(guān)元數(shù)據(jù)可以為結(jié)構(gòu)化查詢語言(sql)腳本、范例文件、無格式文件等形式的數(shù)據(jù)。在一種實施方式中,所述次數(shù)據(jù)源相關(guān)元數(shù)據(jù)包括可作為etl模式所需元數(shù)據(jù)的載入源的必要數(shù)據(jù)。舉例而言,所述次數(shù)據(jù)源相關(guān)元數(shù)據(jù)可以為sql腳本、范例文件、無格式文件等形式的數(shù)據(jù)。
在一種實施方式中,用戶輸入數(shù)據(jù)213包括用戶提供的一個或多個輸入。用戶提供的所述用戶輸入為與所述一個或多個etl模式中每個模式對應(yīng)的一個或多個參數(shù)值、主數(shù)據(jù)源相關(guān)元數(shù)據(jù)、以及次數(shù)據(jù)源相關(guān)元數(shù)據(jù)的用戶輸入。
在一種實施方式中,etl映射數(shù)據(jù)215包括一個或多個從主數(shù)據(jù)源至次數(shù)據(jù)源etl映射。所述一個或多個etl映射可包括,但不限于,映射操作、描述變更、關(guān)鍵指標(biāo)、來源信息、目標(biāo)信息以及預(yù)定義業(yè)務(wù)規(guī)則。
在一種實施方式中,etl代碼數(shù)據(jù)217包括一個或多個生成etl代碼。所述生成etl代碼中的每一個均包括與所述一個或多個etl模式中每個模式相對應(yīng)的會話代碼、工作流程代碼以及映射代碼。所述會話代碼與所述etl模式的待建立連接的相關(guān)連接信息以及其他相關(guān)運行時間特性相關(guān)聯(lián)。所述工作流程代碼與一個或多個會話以及該會話內(nèi)的任務(wù)相關(guān)聯(lián)。所述會話創(chuàng)建并運行于所述工作流程代碼中。所述映射代碼與所述一個或多個從主數(shù)據(jù)源至次數(shù)據(jù)源etl映射的關(guān)聯(lián)信息相關(guān)聯(lián)。
在一種實施方式中,保存于存儲器113中的數(shù)據(jù)由代碼生成裝置107的各模塊205處理。如圖2所示,各模塊205可存儲于存儲器113內(nèi)。在一個實施例中,各模塊205均以可通信方式連接于處理器109,而且也可存儲于存儲器113之外。
在一種實施方式中,模塊205例如可包括檢測模塊221、判斷模塊222、獲取模塊223、接收模塊225、識別模塊227、代碼生成模塊229和其它模塊231。其他模塊231可執(zhí)行系統(tǒng)代碼生成裝置107的各種其他功能。可以理解的是,上述各模塊205既可表現(xiàn)為單個模塊,也可表現(xiàn)為不同的模塊的組合。
在一種實施方式中,檢測模塊221根據(jù)從所述一個或多個來源103提供至代碼生成裝置107的預(yù)定義etl代碼104,自動檢測出所述一個或多個etl模式。用戶通過選擇用戶界面111上的模式檢測圖標(biāo)而上傳預(yù)定義etl代碼104的xml文檔。檢測模塊221根據(jù)所上傳的預(yù)定義etl代碼104,自動檢測出所述一個或多個etl模式。根據(jù)預(yù)定義etl代碼104檢測出所述一個或多個etl模式后,此檢測出的一個或多個etl模式以預(yù)設(shè)格式提供至用戶。舉例而言,所述預(yù)設(shè)格式可以為電子表格。
在一種實施方式中,判斷模塊222對所檢測出的一個或多個etl模式中的每個etl模式是否存在于模式數(shù)據(jù)庫115中進行判斷。在經(jīng)用戶界面111接收到用戶請求后,判斷模塊223對模式數(shù)據(jù)庫115進行搜索,也就是說,用戶可瀏覽模式數(shù)據(jù)庫115并對顯示于用戶界面111上的一個或多個etl模式進行選擇。如果所檢測出的一個或多個etl模式不位于模式數(shù)據(jù)庫115內(nèi),用戶則可利用模式編輯器117創(chuàng)建所需的一個或多個etl模式。
在一種實施方式中,獲取模塊223從模式數(shù)據(jù)庫115中獲取所檢測出的一個或多個etl模式。所獲取的一個或多個etl模式可保存于存儲器113內(nèi)。
在一種實施方式中,接收模塊225接收與所述一個或多個etl模式中每個模式對應(yīng)的一個或多個參數(shù)值、主數(shù)據(jù)源相關(guān)元數(shù)據(jù)、以及次數(shù)據(jù)源相關(guān)元數(shù)據(jù)的用戶輸入。所述用戶輸入通過用戶界面111提供。在一種實施方式中,與所述一個或多個etl模式中每個模式對應(yīng)的所述用戶輸入可以預(yù)設(shè)格式一次性批量提供。舉例而言,所述預(yù)設(shè)格式可以為電子表格形式的格式。
在一種實施方式中,識別模塊227自動識別出一個或多個從主數(shù)據(jù)源至次數(shù)據(jù)源etl映射。如果所識別出的一個或多個etl映射正確,用戶即保留該自動識別出的一個或多個etl映射。如果所識別出的一個或多個etl映射不正確,用戶則利用用戶界面111對該一個或多個etl映射進行編輯,以提供正確的一個或多個etl映射。
在一種實施方式中,代碼生成模塊229自動生成與所述一個或多個識別出的etl映射中的每個etl映射對應(yīng)的etl代碼。當(dāng)所述用戶輸入批量提供時,可同時生成與所述一個或多個etl模式中每個模式對應(yīng)的所述生成etl代碼。
圖3為根據(jù)本發(fā)明一些實施方式自動生成抽取-轉(zhuǎn)換-加載(etl)代碼的流程圖。
如圖3所示,方法300包括描述了一種etl代碼自動生成方法的一個或多個框體。方法300一般可以以計算機可執(zhí)行指令為基礎(chǔ)描述。一般而言,計算機可執(zhí)行指令可包括用于執(zhí)行特定功能或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)、過程、模塊和功能。
方法300的描述順序并不旨在于理解為限制,而且為了實施該方法,所述方法框體可具有任意數(shù)量且可以任何順序組合。另外,在不脫離本文所述技術(shù)方案的精神和范圍的前提下,可將各個框體從所述方法中刪除。此外,所述方法可在任何合適的硬件、軟件、固件或其組合中實施。
在框體301中,代碼生成裝置107對一個或多個etl模式進行自動檢測。在一種實施方式中,處理器109根據(jù)從所述一個或多個來源103所接收的預(yù)定義etl代碼104,自動檢測出所述一個或多個etl模式。舉例而言,預(yù)定義etl代碼104可以為可擴展標(biāo)記語言(xml)文檔。在經(jīng)用戶界面111接收到用戶請求后,處理器109對代碼生成裝置107的模式數(shù)據(jù)庫115進行搜索,也就是說,用戶可瀏覽模式數(shù)據(jù)庫115并對顯示于用戶界面111上的一個或多個etl模式進行選擇。處理器109搜索模式數(shù)據(jù)庫115的目的在于檢查所述檢測出的etl模式是否處于模式數(shù)據(jù)庫115中。如果所檢測出的一個或多個etl模式位于模式數(shù)據(jù)庫115內(nèi),處理器109即獲取該一個或多個etl 模式。如果所檢測出的一個或多個etl模式不位于模式數(shù)據(jù)庫115內(nèi),用戶則可利用模式編輯器117創(chuàng)建所需的一個或多個etl模式。
在框體303中,代碼生成裝置107從模式數(shù)據(jù)庫115中獲取所述一個或多個etl模式。在一種實施方式中,所檢測出的一個或多個etl模式由處理器109從模式數(shù)據(jù)庫115中獲取,而且可保存于存儲器113中。
在框體305中,代碼生成裝置107接收用戶輸入。在一種實施方式中,由處理器109接收所述用戶輸入,其中,所述用戶輸入由用戶經(jīng)代碼生成裝置107的用戶界面111提供。用戶提供的所述用戶輸入為與所述一個或多個etl模式中每個模式對應(yīng)的一個或多個參數(shù)值、主數(shù)據(jù)源相關(guān)元數(shù)據(jù)、以及次數(shù)據(jù)源相關(guān)元數(shù)據(jù)的用戶輸入。所述一個或多個參數(shù)值為所述一個或多個etl模式中每個模式的特性參數(shù)值。在一種實施方式中,所述一個或多個參數(shù)可以為映射參數(shù)、會話參數(shù)和會話連接信息中的至少一個。在一種實施方式中,所述主數(shù)據(jù)源相關(guān)元數(shù)據(jù)提供作為etl模式所需元數(shù)據(jù)的載入源的必要數(shù)據(jù)。舉例而言,所述主數(shù)據(jù)源的元數(shù)據(jù)可以為結(jié)構(gòu)化查詢語言(sql)腳本、范例文件、無格式文件等形式的數(shù)據(jù)。在一種實施方式中,所述次數(shù)據(jù)源相關(guān)元數(shù)據(jù)提供可作為etl模式所需元數(shù)據(jù)的載入源的必要數(shù)據(jù)。舉例而言,所述次數(shù)據(jù)源的元數(shù)據(jù)可以為sql腳本、范例文件、無格式文件等形式的數(shù)據(jù)。
在框體307中,代碼生成裝置107對一個或多個etl映射進行自動識別。在一種實施方式中,由處理器109自動識別出一個或多個從主數(shù)據(jù)源至次數(shù)據(jù)源etl映射。所述一個或多個etl映射可包括,但不限于,映射操作、描述變更、關(guān)鍵指標(biāo)、來源信息、目標(biāo)信息以及預(yù)定義業(yè)務(wù)規(guī)則。如果所識別出的一個或多個etl映射正確,用戶即保留該自動識別出的一個或多個etl映射。如果所識別出的一個或多個etl映射不正確,用戶則利用用戶界面111對該一個或多個etl映射進行編輯,以提供正確的一個或多個etl映射。
在框體309中,代碼生成裝置107自動生成etl代碼。在一種實施方式中,由處理器109自動生成與所識別出的一個或多個從主數(shù)據(jù)源至次數(shù)據(jù)源etl映射中的每個etl映射相對應(yīng)的etl代碼。所生成的etl代碼包括與 所述一個或多個etl模式中每個模式相對應(yīng)的會話代碼、工作流程代碼以及映射代碼。所述會話代碼與所述etl模式的待建立連接的相關(guān)連接信息以及其他相關(guān)運行時間特性相關(guān)聯(lián)。所述工作流程代碼與一個或多個會話以及該會話內(nèi)的任務(wù)相關(guān)聯(lián)。所述會話創(chuàng)建并運行于所述工作流程代碼中。所述映射代碼與所述一個或多個從主數(shù)據(jù)源至次數(shù)據(jù)源etl映射的關(guān)聯(lián)信息相關(guān)聯(lián)。
圖4為用于實施符合本發(fā)明實施方式的例示計算機系統(tǒng)框圖。
在一種實施方式中,代碼生成裝置400用于自動生成抽取-轉(zhuǎn)換-加載(etl)代碼。代碼生成裝置400可包括中央處理單元(“cpu”或“處理器”)402。處理器402可包括至少一個用于執(zhí)行程序組件的數(shù)據(jù)處理器,所述程序組件用于執(zhí)行用戶或系統(tǒng)生成的請求。用戶可包括個人,使用設(shè)備(例如,本發(fā)明所述的設(shè)備)的個人,或此類設(shè)備本身。處理器402可包括集成系統(tǒng)(總線)控制器、存儲器管理控制單元、浮點單元、圖形處理單元、數(shù)字信號處理單元等專用處理單元。
處理器402可配置為通過輸入/輸出(i/o)接口401與一個或多個i/o設(shè)備(411和412)通信。i/o接口401可采用通信協(xié)議/方法,例如但不限于,音頻、模擬、數(shù)字、立體聲、ieee-1394、串行總線、通用串行總線(usb)、紅外、ps/2、bnc、同軸、組件、復(fù)合、數(shù)字視覺接口(dvi)、高清晰度多媒體接口(hdmi)、射頻(rf)天線、s-視頻,視頻圖形陣列(vga)、ieee802.n/b/g/n/x、藍牙、蜂窩(例如碼分多址(cdma)、高速分組接入(hspa+)、移動通信全球系統(tǒng)(gsm)、長期演進(lte)、wimax等)等。
通過i/o接口401,代碼生成裝置400可與一個或多個i/o設(shè)備(411和412)通信。
在一些實施方式中,處理器402可配置為通過網(wǎng)絡(luò)接口403與通信網(wǎng)絡(luò)409通信。網(wǎng)絡(luò)接口403可與通信網(wǎng)絡(luò)409通信。網(wǎng)絡(luò)接口403可采用連接協(xié)議,包括但不限于,直接連接、以太網(wǎng)(例如雙絞線10/100/1000baset)、傳輸控制協(xié)議/網(wǎng)際協(xié)議(tcp/ip)、令牌環(huán)、ieee802.11a/b/g/n/x等。通過網(wǎng)絡(luò)接口403以及通信網(wǎng)絡(luò)409,代碼生成裝置400可與一個或多個用戶設(shè)備 410a,……,410n通信。通信網(wǎng)絡(luò)409可實施為內(nèi)部網(wǎng)路或局域網(wǎng)(lan)以及所述組織結(jié)構(gòu)內(nèi)的此類網(wǎng)絡(luò)等不同類型網(wǎng)絡(luò)中的一種。通信網(wǎng)絡(luò)409既可以為專用網(wǎng)絡(luò),也可以為共享網(wǎng)絡(luò),所述共享網(wǎng)絡(luò)表示使用超文本傳輸協(xié)議(http)、傳輸控制協(xié)議/網(wǎng)際協(xié)議(tcp/ip)、無線應(yīng)用協(xié)議(wap)等各種協(xié)議相互通信的上述不同類型網(wǎng)絡(luò)的聯(lián)合。此外,通信網(wǎng)絡(luò)409可包括路由器、橋接器、服務(wù)器、計算設(shè)備、存儲設(shè)備等各種網(wǎng)絡(luò)設(shè)備。所述一個或多個用戶設(shè)備410a,……,410n可包括,但不限于,個人計算機,以及蜂窩電話、智能電話、平板電腦、電子書閱讀器、膝上型計算機、筆記本電腦、游戲機等移動設(shè)備。
在一些實施方式中,處理器402可配置為通過存儲接口404與存儲器405(例如圖4中未示出的ram、rom等)通信。存儲接口404可采用串行高級技術(shù)連接(sata)、集成驅(qū)動電子設(shè)備(ide)、ieee1394、通用串行總線(usb)、光纖通道、小型計算機系統(tǒng)接口(scsi)等連接協(xié)議連接至存儲器405,該存儲設(shè)備包括,但不限于,存儲驅(qū)動器、可移除磁盤驅(qū)動器等。所述存儲驅(qū)動器還可包括磁鼓、磁盤驅(qū)動器、磁光驅(qū)動器、光盤驅(qū)動器、獨立磁盤冗余陣列(raid)、固態(tài)存儲設(shè)備、固態(tài)驅(qū)動器等。
存儲器405可存儲一系列程序或數(shù)據(jù)庫組件,包括但不限于,用戶界面應(yīng)用程序406、操作系統(tǒng)407、網(wǎng)頁瀏覽器408等。在一些實施方式中,代碼生成裝置400可存儲用戶/應(yīng)用程序數(shù)據(jù)406(例如本發(fā)明中所述數(shù)據(jù)、變量、記錄等)。此類數(shù)據(jù)庫可以為甲骨文(oracle)或賽貝斯(sybase)等容錯、關(guān)系、可擴展、安全數(shù)據(jù)庫。
操作系統(tǒng)407可促進代碼生成裝置400的資源管理和運行。操作系統(tǒng)例如包括,但不限于,蘋果macintoshosx、unix、類unix系統(tǒng)套件(例如伯克利軟件套件(bsd)、freebsd、netbsd、openbsd等)、linux套件(如redhat、ubuntu、kubuntu等)、國際商業(yè)機器股份有限公司(ibm)os/2、微軟windows(xp,vista/7/8等)、蘋果ios、谷歌(google)安卓、黑莓操作系統(tǒng)等。用戶界面406可利用文本或圖形工具促進程序組件的顯示、執(zhí)行、互動、操控或操作。例如,用戶界面可在以可操作方式連接至代碼生成裝置 400的顯示系統(tǒng)上提供光標(biāo)、圖標(biāo)、復(fù)選框、菜單、滾動條、窗口、窗口部件等計算機交互界面元件。此外,還可采用圖形用戶界面(gui),包括但不限于,蘋果macintosh操作系統(tǒng)的aqua、ibmos/2、微軟windows(例如aero、metro等)、unixx-windows、網(wǎng)頁界面庫(例如activex、java、javascript、ajax、html、adobeflash等)等。
在一些實施方式中,代碼生成裝置400可執(zhí)行網(wǎng)頁瀏覽器408存儲的程序組件。所述網(wǎng)頁瀏覽器可以為微軟網(wǎng)絡(luò)探路者(internetexplorer)、谷歌瀏覽器(chrome)、謀智火狐(mozillafirefox)、蘋果瀏覽器(safari)等超文本瀏覽應(yīng)用程序。此外,還可通過https(安全超文本傳輸協(xié)議)、安全套接字層(ssl)、安全傳輸層(tls)等實現(xiàn)安全網(wǎng)頁瀏覽。網(wǎng)頁瀏覽器可使用ajax、dhtml、adobeflash、javascript、java、應(yīng)用程序編程接口(api)等工具。在一些實施方式中,代碼生成裝置400可執(zhí)行郵件服務(wù)器存儲的程序組件。所述郵件服務(wù)器可以為微軟exchange等因特網(wǎng)郵件服務(wù)器。所述郵件服務(wù)器可使用動態(tài)服務(wù)器網(wǎng)頁(asp)、activex、美國國家標(biāo)準(zhǔn)學(xué)會(ansi)c++/c#、microsoft.net、cgi腳本、java、javascript、perl、php、python、webobjects等工具。所述郵件服務(wù)器還可使用因特網(wǎng)信息訪問協(xié)議(imap)、郵件應(yīng)用程序編程接口(mapi)、微軟exchange、郵局協(xié)議(pop)、簡單郵件傳輸協(xié)議(smtp)等通信協(xié)議。在一些實施方式中,代碼生成裝置400可執(zhí)行郵件客戶端存儲的程序組件。所述郵件客戶端可為蘋果mail、微軟entourage、微軟outlook、謀智thunderbird等郵件查看程序。
此外,一個或多個計算機可讀存儲介質(zhì)可用于實施符合本發(fā)明的實施方式。計算機可讀存儲介質(zhì)是指可對處理器可讀取的信息或數(shù)據(jù)進行存儲的任何類型的物理存儲器。因此,計算機可讀存儲介質(zhì)可對由一個或多個處理器執(zhí)行的指令進行存儲,包括用于使處理器執(zhí)行根據(jù)本申請實施方式的步驟或階段的指令。“計算機可讀介質(zhì)”一詞應(yīng)理解為包括有形物件且不包括載波及瞬態(tài)信號,即為非臨時性介質(zhì),例如隨機存取存儲器(ram)、只讀存儲器(rom)、易失性存儲器、非易失性存儲器、硬盤驅(qū)動器、只讀光盤存儲器(cd-rom)、數(shù)字視頻光盤(dvd)、閃存驅(qū)動器、磁盤以及其他任何已知 物理存儲介質(zhì)。
以下,對本發(fā)明實施方式的優(yōu)點進行描述。
在一種實施方式中,本發(fā)明提供一種自動生成抽取-轉(zhuǎn)換-加載(etl)代碼的方法和裝置。
本發(fā)明利用基于模式的技術(shù)生成etl代碼。本發(fā)明還提供一種存有一個或多個etl模式的可擴展模式數(shù)據(jù)庫。
本發(fā)明提供一種模式編輯器,使用該模式編輯器,用戶可創(chuàng)建一個或多個etl模式,并且在所述模式數(shù)據(jù)庫內(nèi)更新所創(chuàng)建的模式,以用于后續(xù)參考。
本發(fā)明提供一個特征,其中,所述模式數(shù)據(jù)庫可在組織機構(gòu)水平上進行定制。
本發(fā)明將etl代碼開發(fā)工作量大大減少了60%,此工作量的減少進一步改善了etl代碼開發(fā)所涉及的上市時間和成本。
本發(fā)明為自動化方案。因此,其所開發(fā)的etl代碼質(zhì)量較高,而且所述etl代碼中的缺陷數(shù)量銳減50%。
本發(fā)明改善了etl代碼開發(fā)所涉及的時間和成本。如此,開發(fā)人員可將更多精力投入分析和設(shè)計。
描述為具有多個相互間有聯(lián)系的部件的實施方式并不意味著所有此類部件均為必需部件。相反地,其描述的是,還具有多種可選組件用于實現(xiàn)本發(fā)明的各種各樣的可能實施方式。
本文中,一旦有對單個設(shè)備或物件的描述,則可隨即明白的是,所述單個設(shè)備/物件可由多于一個的所述設(shè)備/物件(無論其之間是否均有協(xié)作關(guān)系)代替。類似地,本文中一旦有對多于一個的設(shè)備或物件(無論其之間是否均有協(xié)作關(guān)系)的描述,則可隨即明白的是,所述多于一個的設(shè)備或物件可由單個設(shè)備/物件代替,或者所示數(shù)量的設(shè)備或程序可由不同數(shù)量的設(shè)備/物件代替。此外,某個設(shè)備的功能和/或特征可由一個或多個未明確描述為具有此類功能/特征的其他設(shè)備代為實現(xiàn)。因此,本發(fā)明的其它實施方式無需包括該設(shè)備本身。
本說明書已對一種自動生成抽取-轉(zhuǎn)換-加載(etl)代碼的方法和裝置進 行了描述。所示步驟用于說明所述例示實施方式,并且應(yīng)當(dāng)預(yù)想到的是,隨著技術(shù)的不斷發(fā)展,特定功能的執(zhí)行方式也將發(fā)生改變。本文所呈現(xiàn)的上述實施例用于說明而非限制目的。此外,為了描述的方便性,本文對各功能構(gòu)建模塊邊界的定義為任意性的,只要其上述功能及其關(guān)系能夠獲得適當(dāng)執(zhí)行,也可按其他方式定義邊界。根據(jù)本申請的啟示內(nèi)容,替代方案(包括本申請所述方案的等同方案、擴展方案、變形方案、偏差方案等)對于相關(guān)領(lǐng)域技術(shù)人員是顯而易見的。這些替代方案均落入所公開實施方式的范圍和精神內(nèi)。此外,“包括”、“具有”、“含有”和“包含”等詞以及其他類似形式在意義方面旨在同等且為開放式詞語,跟隨這些詞語當(dāng)中任何一個之后所述的單個或多個事項并不在于對該單個或多個事項的窮舉,也不在于僅局限于所列出的該單個或多個事項。還必須注意的是,除非上下文另有明確指示,此處和所附權(quán)利要求中所用的單數(shù)形式“一”、“一個”和“所述”也包括復(fù)數(shù)意義。
最后,本說明書所選的行文方式主要在于可讀性和教示目的,且可能并不在于細述或限制本發(fā)明技術(shù)方案。因此,本發(fā)明范圍并不意在由此《具體實施方式》限制,而是由基于此部分提出申請的任何權(quán)利要求所界定。相應(yīng)地,本發(fā)明實施方式的公開內(nèi)容意在于說明而非限制本發(fā)明范圍,而且本發(fā)明范圍如下附權(quán)利要求所述。