本發(fā)明涉及數(shù)據(jù)轉(zhuǎn)換領(lǐng)域,尤其是一種基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的方法及裝置。
背景技術(shù):
1、大數(shù)據(jù)數(shù)據(jù)采集的場(chǎng)景中涉及各式各樣的數(shù)據(jù)源,例如關(guān)系型數(shù)據(jù)庫(kù)、圖數(shù)據(jù)庫(kù)、文檔數(shù)據(jù)庫(kù)、文件存儲(chǔ)oss及消息隊(duì)列等。為了屏蔽這些數(shù)據(jù)源采集時(shí)的差異,提升數(shù)據(jù)采集和轉(zhuǎn)換的易用性,需要一種易用的類sql的語(yǔ)句解析數(shù)據(jù)格式和類型,以及基于sql的可動(dòng)態(tài)擴(kuò)展的自定義函數(shù)udf來(lái)對(duì)數(shù)據(jù)進(jìn)行加工處理。因此,數(shù)據(jù)來(lái)源無(wú)論是什么樣的格式,都可以通過(guò)統(tǒng)一的方式使用sql語(yǔ)句來(lái)解析轉(zhuǎn)換數(shù)據(jù),使數(shù)據(jù)采集轉(zhuǎn)換過(guò)程更加便捷和靈活。
2、現(xiàn)有解決方案中,可以使用基于不同轉(zhuǎn)換配置的方案,針對(duì)每種類型的數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的邏輯,每個(gè)轉(zhuǎn)換邏輯都有相對(duì)應(yīng)的配置,配置的成本高,使用難度大。還可以使用基于spark和flink的數(shù)據(jù)處理方案,spark和flink本身可接入多種類型的數(shù)據(jù),并通過(guò)spark?sql或者flink?sql進(jìn)行處理,但是sql處理的函數(shù)必須限定為spark或者flink自身的函數(shù),不能在多種計(jì)算引擎之間自由切換,通用性差。
技術(shù)實(shí)現(xiàn)思路
1、為解決現(xiàn)有技術(shù)存在的上述問(wèn)題,本發(fā)明提供一種基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的方法及裝置,支持多種數(shù)據(jù)源無(wú)縫集成,大大降低了數(shù)據(jù)轉(zhuǎn)換的開(kāi)發(fā)難度。
2、為實(shí)現(xiàn)上述目的,本發(fā)明采用下述技術(shù)方案:
3、在本發(fā)明一實(shí)施例中,提出了一種基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的方法,該方法包括:
4、sqltransform轉(zhuǎn)換插件使用查詢sql語(yǔ)句及配置信息,在sqlengine引擎支持下,實(shí)現(xiàn)異構(gòu)數(shù)據(jù)的轉(zhuǎn)換,支持不同的表結(jié)構(gòu)和數(shù)據(jù)類型,并且實(shí)現(xiàn)元數(shù)據(jù)的轉(zhuǎn)換;
5、sqlengine引擎解析查詢sql語(yǔ)句,驗(yàn)證其語(yǔ)法正確性,并根據(jù)查詢sql語(yǔ)句對(duì)輸入數(shù)據(jù)進(jìn)行過(guò)濾和轉(zhuǎn)換,最終轉(zhuǎn)換為滿足查詢需求的新數(shù)據(jù)行;
6、sqlparse解析器對(duì)查詢sql語(yǔ)句進(jìn)行解析,并將查詢sql語(yǔ)句轉(zhuǎn)化為對(duì)應(yīng)的抽象語(yǔ)法樹(shù)ast結(jié)構(gòu)。
7、進(jìn)一步地,定義一個(gè)通用的自定義函數(shù)接口,支持快速定義一個(gè)sqltransform轉(zhuǎn)換插件的自定義函數(shù)。
8、進(jìn)一步地,定義sqltransform轉(zhuǎn)換插件,支持自定義自己的數(shù)據(jù)轉(zhuǎn)換邏輯。
9、進(jìn)一步地,sqlengine引擎根據(jù)已解析的查詢sql語(yǔ)句構(gòu)建輸出數(shù)據(jù)結(jié)構(gòu)的描述。
10、在本發(fā)明一實(shí)施例中,還提出了一種基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的裝置,該裝置包括:
11、sqltransform轉(zhuǎn)換插件,用于使用查詢sql語(yǔ)句及配置信息,在sqlengine引擎支持下,實(shí)現(xiàn)異構(gòu)數(shù)據(jù)的轉(zhuǎn)換,支持不同的表結(jié)構(gòu)和數(shù)據(jù)類型,并且實(shí)現(xiàn)元數(shù)據(jù)的轉(zhuǎn)換;
12、sqlengine引擎,用于解析查詢sql語(yǔ)句,驗(yàn)證其語(yǔ)法正確性,并根據(jù)查詢sql語(yǔ)句對(duì)輸入數(shù)據(jù)進(jìn)行過(guò)濾和轉(zhuǎn)換,最終轉(zhuǎn)換為滿足查詢需求的新數(shù)據(jù)行;
13、sqlparse解析器,用于對(duì)查詢sql語(yǔ)句進(jìn)行解析,并將查詢sql語(yǔ)句轉(zhuǎn)化為對(duì)應(yīng)的抽象語(yǔ)法樹(shù)ast結(jié)構(gòu)。
14、進(jìn)一步地,定義一個(gè)通用的自定義函數(shù)接口,支持快速定義一個(gè)sqltransform轉(zhuǎn)換插件的自定義函數(shù)。
15、進(jìn)一步地,定義sqltransform轉(zhuǎn)換插件,支持自定義自己的數(shù)據(jù)轉(zhuǎn)換邏輯。
16、進(jìn)一步地,sqlengine引擎根據(jù)已解析的查詢sql語(yǔ)句構(gòu)建輸出數(shù)據(jù)結(jié)構(gòu)的描述。
17、在本發(fā)明一實(shí)施例中,還提出了一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,處理器執(zhí)行計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)前述基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的方法。
18、在本發(fā)明一實(shí)施例中,還提出了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有執(zhí)行基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的方法的計(jì)算機(jī)程序。
19、有益效果:
20、1、本發(fā)明提供了一套基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換的解決方案,支持多種數(shù)據(jù)源無(wú)縫集成,大大降低了數(shù)據(jù)轉(zhuǎn)換的開(kāi)發(fā)難度。
21、2、本發(fā)明采用插件化設(shè)計(jì),定義了sqltransform轉(zhuǎn)換插件,可以基于此自定義自己的數(shù)據(jù)轉(zhuǎn)換邏輯。
22、3、本發(fā)明設(shè)計(jì)了sqlengine引擎來(lái)解析和執(zhí)行sql查詢,支持sql標(biāo)準(zhǔn)語(yǔ)法,以標(biāo)準(zhǔn)sql語(yǔ)句描述轉(zhuǎn)換邏輯。
23、4、本發(fā)明定義了通用的自定義函數(shù)接口seacrabudf,可以方便快速地開(kāi)發(fā)和集成各種自定義函數(shù)。
24、5、本發(fā)明整個(gè)架構(gòu)松耦合,各模塊通過(guò)接口耦合,支持模組化開(kāi)發(fā),便于升級(jí)和維護(hù)。
1.一種基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的方法,其特征在于,該方法包括:
2.根據(jù)權(quán)利要求1所述的基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的方法,其特征在于,定義一個(gè)通用的自定義函數(shù)接口,支持快速定義一個(gè)sqltransform轉(zhuǎn)換插件的自定義函數(shù)。
3.根據(jù)權(quán)利要求1所述的基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的方法,其特征在于,定義sqltransform轉(zhuǎn)換插件,支持自定義自己的數(shù)據(jù)轉(zhuǎn)換邏輯。
4.根據(jù)權(quán)利要求1所述的基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的方法,其特征在于,所述sqlengine引擎根據(jù)已解析的查詢sql語(yǔ)句構(gòu)建輸出數(shù)據(jù)結(jié)構(gòu)的描述。
5.一種基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的裝置,其特征在于,該裝置包括:
6.根據(jù)權(quán)利要求5所述的基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的裝置,其特征在于,定義一個(gè)通用的自定義函數(shù)接口,支持快速定義一個(gè)sqltransform轉(zhuǎn)換插件的自定義函數(shù)。
7.根據(jù)權(quán)利要求5所述的基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的裝置,其特征在于,定義sqltransform轉(zhuǎn)換插件,支持自定義自己的數(shù)據(jù)轉(zhuǎn)換邏輯。
8.根據(jù)權(quán)利要求5所述的基于通用sql實(shí)現(xiàn)異構(gòu)數(shù)據(jù)轉(zhuǎn)換動(dòng)態(tài)擴(kuò)展的裝置,其特征在于,所述sqlengine引擎根據(jù)已解析的查詢sql語(yǔ)句構(gòu)建輸出數(shù)據(jù)結(jié)構(gòu)的描述。
9.一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)權(quán)利要求1-4任一項(xiàng)所述方法。
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有執(zhí)行權(quán)利要求1-4任一項(xiàng)所述方法的計(jì)算機(jī)程序。