數(shù)據(jù)血統(tǒng)分析方法與裝置制造方法【專利摘要】本公開涉及一種數(shù)據(jù)血統(tǒng)分析方法與裝置。該方法包括基于模式配置對查詢語句進(jìn)行分析,以識別其中的目標(biāo)表、目標(biāo)字段、源表與源字段;獲取各類數(shù)據(jù)庫系統(tǒng)定義的或用戶自定義的元數(shù)據(jù)并利用元數(shù)據(jù)對查詢語句的模糊字段進(jìn)行精確匹配;根據(jù)識別出的目標(biāo)字段與源字段的字段追溯順序生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系;通過多層語句解析分析出多條查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系。本公開可以靈活分析各種通用結(jié)構(gòu)化語句的數(shù)據(jù)血統(tǒng)。【專利說明】數(shù)據(jù)血統(tǒng)分析方法與裝置【
技術(shù)領(lǐng)域:
】[0001]本公開涉及云計算領(lǐng)域,特別地,涉及一種數(shù)據(jù)血統(tǒng)分析方法與裝置。【
背景技術(shù):
】[0002]數(shù)據(jù)血統(tǒng)關(guān)系是指數(shù)據(jù)之間的上下文關(guān)系,數(shù)據(jù)的血統(tǒng)分析是對數(shù)據(jù)庫系統(tǒng)追溯查詢結(jié)果的來源,以衡量數(shù)據(jù)的可信度、數(shù)據(jù)的質(zhì)量。通過數(shù)據(jù)血統(tǒng)追蹤,在分布數(shù)據(jù)共享時可以解決數(shù)據(jù)的可信度、質(zhì)量、版本信息等,對于各種導(dǎo)出數(shù)據(jù)集也能解決這些問題。通過數(shù)據(jù)血統(tǒng)追蹤,可以獲得數(shù)據(jù)在數(shù)據(jù)流的演化過程。[0003]當(dāng)前數(shù)據(jù)血統(tǒng)自動分析技術(shù)主要是針對主流關(guān)系型數(shù)據(jù)的標(biāo)準(zhǔn)SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語言)語言的解析,通過詞法分析、語法分析等技術(shù)分析SQL腳本中的數(shù)據(jù)的來由。[0004]隨著現(xiàn)在各類數(shù)據(jù)庫技術(shù)的發(fā)展,分布式數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫等在SQL語法上不再囿于過往的標(biāo)準(zhǔn)SQL規(guī)范,會有很多自身擴(kuò)充的關(guān)鍵字或語法格式,因此,現(xiàn)有的基于標(biāo)準(zhǔn)SQL語法完整定義的技術(shù)難以靈活擴(kuò)充解析這些分布式數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)由來?!?br/>發(fā)明內(nèi)容】[0005]本公開鑒于以上問題中的至少一個提出了新的技術(shù)方案。[0006]本公開在其一個方面提供了一種數(shù)據(jù)血統(tǒng)分析方法,其可以靈活分析各種通用結(jié)構(gòu)化語句的數(shù)據(jù)血統(tǒng)。[0007]本公開在其另一方面提供了一種數(shù)據(jù)血統(tǒng)分析裝置,其可以靈活分析各種通用結(jié)構(gòu)化語句的數(shù)據(jù)血統(tǒng)。[0008]根據(jù)本公開,提供一種數(shù)據(jù)血統(tǒng)分析方法,包括:[0009]基于模式配置對查詢語句進(jìn)行分析,以識別其中的目標(biāo)表、目標(biāo)字段、源表與源字段;[0010]獲取各類數(shù)據(jù)庫系統(tǒng)定義的或用戶自定義的元數(shù)據(jù),并利用元數(shù)據(jù)對查詢語句的模糊字段進(jìn)行精確匹配;[0011]根據(jù)識別出的目標(biāo)字段與源字段的字段追溯順序生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系;[0012]通過多層語句解析分析出多條查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系。[0013]在本公開的一些實施例中,模式配置包括關(guān)鍵字語句模式、關(guān)鍵字集、運(yùn)算符集、函數(shù)模式。[0014]在本公開的一些實施例中,基于模式配置對查詢語句進(jìn)行分析的步驟包括:[0015]利用模式配置中的關(guān)鍵字語句模式識別與提取查詢語句中的關(guān)鍵字語句,并識別提取出的關(guān)鍵字語句中包含的目標(biāo)表、目標(biāo)字段、源表與源字段;[0016]利用模式配置中的函數(shù)模式識別查詢語句中包含的函數(shù)結(jié)構(gòu),并根據(jù)函數(shù)模式提取函數(shù)結(jié)構(gòu)中的目標(biāo)字段;[0017]根據(jù)模式配置中的關(guān)鍵字集過濾查詢語句中與數(shù)據(jù)血統(tǒng)關(guān)系無關(guān)的關(guān)鍵字;[0018]利用模式配置中的運(yùn)算符集識別目標(biāo)數(shù)據(jù)與常量集,并得出目標(biāo)字段與常量集之間的關(guān)系。[0019]在本公開的一些實施例中,利用元數(shù)據(jù)對查詢語句的模糊字段進(jìn)行精確匹配的步驟包括:[0020]從元數(shù)據(jù)中獲取數(shù)據(jù)表包含的字段信息與字段順序。[0021]在本公開的一些實施例中,根據(jù)識別出的目標(biāo)字段與源字段的字段追溯順序生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系的步驟包括:[0022]按照字段順序?qū)Σ樵冋Z句的目標(biāo)字段和源字段進(jìn)行匹配;[0023]對于查詢語句中的嵌套語句,通過遞歸追溯原始字段以生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系。[0024]在本公開的一些實施例中,通過多層語句解析分析出多條查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系的步驟包括:[0025]根據(jù)單一語句的源表、源字段與目標(biāo)表、目標(biāo)字段之間的關(guān)系在多條查詢語句間進(jìn)行比對和分析;[0026]根據(jù)源表、源字段與目標(biāo)表、目標(biāo)字段的關(guān)系設(shè)置各查詢語句的層級并形成各查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系。[0027]根據(jù)本公開,還提供了一種數(shù)據(jù)血統(tǒng)分析裝置,包括:[0028]模式適配單元,用于基于模式配置對查詢語句進(jìn)行分析,以識別其中的目標(biāo)表、目標(biāo)字段、源表與源字段;[0029]模糊字段匹配單元,用于獲取各類數(shù)據(jù)庫系統(tǒng)定義的或用戶自定義的元數(shù)據(jù),并利用元數(shù)據(jù)對查詢語句的模糊字段進(jìn)行精確匹配;[0030]字段追溯單元,用于根據(jù)識別出的目標(biāo)字段與源字段的字段追溯順序生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系;[0031]血統(tǒng)關(guān)系形成單元,用于通過多層語句解析分析出多條查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系。[0032]在本公開的一些實施例中,模式配置中包括關(guān)鍵字語句模式、關(guān)鍵字集、運(yùn)算符集、函數(shù)模式。[0033]在本公開的一些實施例中,模式適配單元包括:[0034]關(guān)鍵字模式識別子單元,用于利用模式配置中的關(guān)鍵字語句模式識別與提取查詢語句中的關(guān)鍵字語句,并識別提取出的關(guān)鍵字語句中包含的目標(biāo)表、目標(biāo)字段、源表與源字段;[0035]函數(shù)模式識別子單元,用于利用模式配置中的函數(shù)模式識別查詢語句中包含的函數(shù)結(jié)構(gòu),并根據(jù)函數(shù)模式提取函數(shù)結(jié)構(gòu)中的目標(biāo)字段;[0036]關(guān)鍵字濾除子單元,用于根據(jù)模式配置中的關(guān)鍵字集過濾查詢語句中與數(shù)據(jù)血統(tǒng)關(guān)系無關(guān)的關(guān)鍵字;[0037]常量識別子單元,用于利用模式配置中的運(yùn)算符集識別目標(biāo)數(shù)據(jù)與常量集,并得出目標(biāo)字段與常量集之間的關(guān)系。[0038]在本公開的一些實施例中,模糊字段匹配單元從元數(shù)據(jù)中獲取數(shù)據(jù)表包含的字段信息與字段順序。[0039]在本公開的一些實施例中,字段追溯單元包括:[0040]字段匹配子單元,用于按照字段順序?qū)Σ樵冋Z句的目標(biāo)字段和源字段進(jìn)行匹配;[0041]遞歸追溯子單元,對于查詢語句中的嵌套語句,用于通過遞歸追溯原始字段以生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系。[0042]在本公開的一些實施例中,血統(tǒng)關(guān)系形成單元包括:[0043]根據(jù)單一語句的源表、源字段與目標(biāo)表、目標(biāo)字段之間的關(guān)系在多條查詢語句間進(jìn)行比對和分析;[0044]根據(jù)源表、源字段與目標(biāo)表、目標(biāo)字段的關(guān)系設(shè)置各查詢語句的層級并形成各查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系。[0045]在本公開的技術(shù)方案中,由于用戶可以自定義模式配置、并且在對查詢語句進(jìn)行識別時只識別與血統(tǒng)分析相關(guān)的關(guān)鍵字、濾除與統(tǒng)計數(shù)據(jù)血統(tǒng)關(guān)系無關(guān)的關(guān)鍵字,這樣就可以通過靈活地設(shè)定模式配置來實現(xiàn)對各類查詢語句的數(shù)據(jù)血統(tǒng)分析?!緦@綀D】【附圖說明】[0046]此處所說明的附圖用來提供對本公開的進(jìn)一步理解,構(gòu)成本申請的一部分。在附圖中:[0047]圖1是本公開一個實施例的數(shù)據(jù)血統(tǒng)分析方法的流程示意圖。[0048]圖2是語句間關(guān)聯(lián)關(guān)系的一個實例的示意圖。[0049]圖3是以insert語句分析為例的數(shù)據(jù)血統(tǒng)關(guān)系示意圖。[0050]圖4是本公開一個實施例的數(shù)據(jù)血統(tǒng)分析裝置的結(jié)構(gòu)示意圖?!揪唧w實施方式】[0051]下面將參照附圖描述本公開。要注意的是,以下的描述在本質(zhì)上僅是解釋性和示例性的,決不作為對本公開及其應(yīng)用或使用的任何限制。除非另外特別說明,否則,在實施例中闡述的部件和步驟的相對布置以及數(shù)字表達(dá)式和數(shù)值并不限制本公開的范圍。另外,本領(lǐng)域技術(shù)人員已知的技術(shù)、方法和裝置可能不被詳細(xì)討論,但在適當(dāng)?shù)那闆r下意在成為說明書的一部分。[0052]為了解決上述現(xiàn)有技術(shù)中的問題,本公開下述實施例提出了一種可靈活擴(kuò)展的通用結(jié)構(gòu)化查詢語句的數(shù)據(jù)血統(tǒng)分析方法,在該方法中,首先進(jìn)行元數(shù)據(jù)的獲取,例如,可以通過元數(shù)據(jù)接口配置提取各類數(shù)據(jù)庫的系統(tǒng)定義或用戶自定義的元數(shù)據(jù);其次進(jìn)行模式識另IJ,包括語句模式識別和函數(shù)模式識別;接下來進(jìn)行詞法分析,通過過濾關(guān)鍵字集中包含的關(guān)鍵字來識別其中的目標(biāo)數(shù)據(jù)集和常量集;最后進(jìn)行血統(tǒng)關(guān)系分析,通過單個語句輸入輸出的血統(tǒng)關(guān)系進(jìn)一步計算系統(tǒng)語句間的數(shù)據(jù)血統(tǒng)關(guān)系,進(jìn)而形成完整的數(shù)據(jù)血統(tǒng)關(guān)系網(wǎng)。[0053]圖1是本公開一個實施例的數(shù)據(jù)血統(tǒng)分析方法的流程示意圖。[0054]如圖1所示,該實施例可以包括以下步驟:[0055]S102,基于模式配置對查詢語句進(jìn)行分析,以識別其中的目標(biāo)表、目標(biāo)字段、源表與源字段;[0056]其中,模式配置可以包括但不限于關(guān)鍵字語句模式、關(guān)鍵字集、運(yùn)算符集和函數(shù)模式。[0057]具體地,關(guān)鍵字語句模式給出了查詢語句中需要識別的語句模式,例如,insert<targetbale>(<targetcol>,){select}。[0058]關(guān)鍵字集可以包括但不限于insert、overwrite、table、select、from、as、where、join、on、bigint。[0059]運(yùn)算符集可以包括但不限于=、+、一、*、/、and、or、in、notin、like。[0060]函數(shù)模式可以由用戶任意定義,例如:[0061][A_Z][A-Za-zO—9]*(〈arg>,);[0062][A-Z][A-Za-zO-9]*(<arg>#keyword#keyword)。[0063]具體地,可以通過以下步驟實現(xiàn):[0064]利用模式配置中的關(guān)鍵字語句模式識別與提取查詢語句中的關(guān)鍵字語句,并識別提取出的關(guān)鍵字語句中包含的目標(biāo)表、目標(biāo)字段、源表與源字段;[0065]利用模式配置中的函數(shù)模式識別查詢語句中包含的函數(shù)結(jié)構(gòu),并根據(jù)函數(shù)模式提取函數(shù)結(jié)構(gòu)中的目標(biāo)字段;[0066]根據(jù)模式配置中的關(guān)鍵字集過濾查詢語句中與數(shù)據(jù)血統(tǒng)關(guān)系無關(guān)的關(guān)鍵字;[0067]利用模式配置中的運(yùn)算符集識別目標(biāo)數(shù)據(jù)與常量集,并得出目標(biāo)字段與常量集之間的關(guān)系。[0068]需要指出的是,如果語句中存在嵌套語句,則可以通過遞歸方法逐層進(jìn)行解析。[0069]S104,獲取各類數(shù)據(jù)庫系統(tǒng)定義的或用戶自定義的元數(shù)據(jù),并利用元數(shù)據(jù)對查詢語句的模糊字段進(jìn)行精確匹配;[0070]其中,元數(shù)據(jù)是描述數(shù)據(jù)及其環(huán)境的數(shù)據(jù),主要指數(shù)據(jù)在數(shù)據(jù)庫中的定義和描述,可以理解為數(shù)據(jù)庫中的數(shù)據(jù)字典。具體地,可以通過配置信息獲取數(shù)據(jù)庫類別,然后通過配置信息連接數(shù)據(jù)庫,最后通過配置信息獲取數(shù)據(jù)庫中的元數(shù)據(jù)。[0071]具體地,可以從元數(shù)據(jù)中獲取數(shù)據(jù)表包含的字段信息與字段順序,其中,該數(shù)據(jù)表可以為源表,可以為目標(biāo)表。[0072]S106,根據(jù)識別出的目標(biāo)字段與源字段的字段追溯順序生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系;[0073]具體地,可以通過以下步驟實現(xiàn):[0074]按照字段順序?qū)Σ樵冋Z句的目標(biāo)字段和源字段進(jìn)行匹配;[0075]對于查詢語句中的嵌套語句,通過遞歸追溯原始字段以生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系。[0076]S108,通過多層語句解析分析出多條查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系,需要指出的是,最細(xì)粒度的數(shù)據(jù)血統(tǒng)是從單一語句解析而來的,但數(shù)據(jù)血統(tǒng)解析的最終目標(biāo)是形成整個系統(tǒng)內(nèi)的所有數(shù)據(jù)的來龍去脈的關(guān)系,因此,需要基于單一語句解析往上繼續(xù)計算不同語句之間的關(guān)系,進(jìn)而形成全局關(guān)系。[0077]具體地,可以通過以下步驟實現(xiàn):[0078]根據(jù)單一語句的源表、源字段與目標(biāo)表、目標(biāo)字段之間的關(guān)系在多條查詢語句間進(jìn)行比對和分析;[0079]根據(jù)源表、源字段與目標(biāo)表、目標(biāo)字段的關(guān)系設(shè)置各語句的層級并形成各查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系。[0080]在該實施例中,由于用戶可以自定義模式配置、并且在對查詢語句進(jìn)行識別時只識別與血統(tǒng)分析相關(guān)的關(guān)鍵字、濾除與統(tǒng)計數(shù)據(jù)血統(tǒng)關(guān)系無關(guān)的關(guān)鍵字,這樣就可以通過靈活地設(shè)定模式配置來實現(xiàn)對各類查詢語句的數(shù)據(jù)血統(tǒng)分析。[0081]進(jìn)一步地,還可以對查詢語句進(jìn)行實時分析,通過不斷獲取數(shù)據(jù)處理腳本進(jìn)行實時分析,進(jìn)而實時更新數(shù)據(jù)血統(tǒng)關(guān)系網(wǎng)。[0082]接下來,通過另一實施例對本公開的技術(shù)方案作進(jìn)一步說明。該實施例可以包括以下步驟:[0083]步驟一,元數(shù)據(jù)的獲取:通過元數(shù)據(jù)接口配置提取各類數(shù)據(jù)庫的系統(tǒng)定義或用戶自定義的元數(shù)據(jù),可以提供多種接口方式、靈活支持關(guān)系型/非關(guān)系型數(shù)據(jù)庫。[0084]步驟二,關(guān)鍵語法模式配置解析:通過語句模式配置快速識別和提取腳本中的關(guān)鍵語句,例如,通過解析如下模式配置快速識別語句中包含目標(biāo)表、目標(biāo)字段、源表、源字段及相關(guān)字段的關(guān)鍵部分:[0085]insert<targettable>(<targetcol>,){select};[0086]select〈srccol>,from〈srctable>,where〈condcol>。[0087]步驟三,函數(shù)模式配置解析:通過自定義函數(shù)模式配置識別關(guān)鍵語句中包含的函數(shù)結(jié)構(gòu),例如,通過[A-Z][A-Za-zO-9—]*(〈arg>,)或[A_Z][A-Za-z0~9_]^(<arg>#keyword<arg>)等預(yù)先設(shè)置好的定義,只要符合預(yù)設(shè)的規(guī)則就認(rèn)為是函數(shù),再從中提取<arg>部分作為目標(biāo)字段進(jìn)行分析。[0088]步驟四,關(guān)鍵字過濾:對步驟二和步驟三輸出的結(jié)果進(jìn)行關(guān)鍵字過濾,濾除與數(shù)據(jù)血統(tǒng)分析無關(guān)的關(guān)鍵字,例如,overwrite、join、on、bigint與函數(shù)名等,進(jìn)而得出需進(jìn)一步解析的嵌套數(shù)據(jù)集和需進(jìn)一步識別的目標(biāo)集。[0089]步驟五,識別目標(biāo)數(shù)據(jù)集與常量集:根據(jù)運(yùn)算符集匹配得出步驟四輸出的目標(biāo)集中的目標(biāo)數(shù)據(jù)集與常量集,及其相互運(yùn)算關(guān)系。[0090]其中,目標(biāo)數(shù)據(jù)集中包含目標(biāo)表字段的集合,常量集是指語句中的常量,例如,select*fromawherea.al=l,那么I就是常量,或者a.al=“test”,那么test就是常量。[0091]步驟六,嵌套分析:對于步驟四輸出的嵌套數(shù)據(jù)集,遞歸執(zhí)行步驟二至步驟五,得出源字段的數(shù)據(jù)關(guān)系。[0092]步驟七,模糊匹配:對于語句中沒有指定的字段,例如,select*等,可以通過步驟一獲取的元數(shù)據(jù)取得數(shù)據(jù)表的具體字段順序。[0093]步驟八,單語句數(shù)據(jù)血統(tǒng)分析:根據(jù)目標(biāo)字段與源字段順序匹配字段間的數(shù)據(jù)血統(tǒng)關(guān)系,包括直接影響關(guān)系與間接影響關(guān)系。[0094]步驟九,語句間的數(shù)據(jù)血統(tǒng)分析:通過單一語句的輸入輸出關(guān)系,計算多層語句之間的血統(tǒng)關(guān)系,形成最終的數(shù)據(jù)關(guān)聯(lián)關(guān)系網(wǎng)。[0095]例如:[0096]第一條類SQL語句為:[0097]Insertoverwritetabletar_tablel(tl,t2,t3)[0098]Selectsrc_tablel.tl,src_tablel.t2,src_table2.t3[0099]Fromsrc—tablel,src—table2;[0100]第二條類SQL語句為:[0101]Insertoverwritetablesrc—tablel(tl,t2)[0102]Selectsrc_table2.tl,src_table2.t2fromsrc_table2;[0103]第三條類SQL語句為:[0104]Insertoverwritetablesrc_table2(tl,t3)[0105]Selectsum(src_table3.tl)astl,count(src_talbe3.t2)ast3[0106]Fromsrc_table3;[0107]首先,我們通過前述步驟一至步驟八解析出單條語句的關(guān)系;[0108]然后,再分析tl字段的來源,通過源數(shù)據(jù)比對tl字段是來自于表six—tablel中的tl,而src—tablel中的tl是來自于src—table2中的tl,src—table2中的tl是來自于src_table3中的tl;通過分析比對tar—tablel中的t3字段是來自于src—table2中的t3,而src—table2中的t3是來自于src—table3中的t2,就這樣逐層的解析分解得到血統(tǒng)關(guān)系網(wǎng),如圖2所示。[0109]從該實施例可以看出,在進(jìn)行數(shù)據(jù)血統(tǒng)分析時,只需要根據(jù)配置的模式識別查詢語句的關(guān)鍵部分后再進(jìn)行解析,而不需要對查詢語句的完整語法進(jìn)行解析。[0110]以insert語句為例,關(guān)鍵字語句模式僅需要配置:[0111]insert<targettable>(<targetcol>,){select};[0112]select〈srccol>,from〈srctable>,where〈condcol>;[0113]在insert語句的識別過程僅需要識別insert、select、from、where四個關(guān)鍵字,而不關(guān)注其他的語法模式,其他的關(guān)鍵字也不需要被識別,因此,只要是類似這種模式的SQL和類SQL腳本都可以被靈活地解析。其中,類SQL語句可以包括insert、ovewrite、tablel、select、columl、colum2、from、table2等。類SQL語句有自身擴(kuò)展的關(guān)鍵字、不同的語法結(jié)構(gòu)、還有擴(kuò)充的各種函數(shù)格式等。[0114]如果有其他存在數(shù)據(jù)血統(tǒng)關(guān)系的語法格式需要被解析,也可以沿用類似的模式配置進(jìn)行擴(kuò)展,以實現(xiàn)快速配置與靈活擴(kuò)展。[0115]接下來,通過一個具體實例說明如何進(jìn)行數(shù)據(jù)血統(tǒng)分析:[0116]首先,可以在模式配置中定義如下insert語句模式:[0117]{insert}=insert<targettable>[(<targetcol>,)]{select};[0118]{select}=select〈srccol>,from<srctable>,where<condcol>;[0119]<srctable>:({select})[〈srctable〉],〈condcol〉;意為<srctable>中會包含嵌套select語句的〈srctable〉子串和〈condcol〉子串;[0120]〈condcol〉:〈condcol〉,({select})[<condtable>];意為〈condcol〉會包含〈condcol〉子串和({select})[〈condtable〉]。[0121]關(guān)鍵字集可以包括但不限于:insert、overwrite、table、select、from、as、where、join、on、bigint。[0122]運(yùn)算符集可以包括但不限于:=、+、-、*、/、and、or、in、notin、like。[0123]函數(shù)模式可以包括但不限于:[0124][A-Z][A-Za-zO—9—]*(<arg>,)[0125][A-Z][A-Za-z0~9_]^(<arg>#keyword#keyword)。[0126]假設(shè)需要解析的查詢語句如下:[0127]insertoverwritetarget—table[0128]selectsrc_tablel.si,cast(src_table2.s2asbigint),src_table2.s3,!20130701'[0129]from[0130](selectcl,sifromtlwhereid>30)src—tablel[0131]join[0132](selectc2,s2,s3fromt2wheredate=,20130701f)src_table2[0133]onsrc—tablel.cl=src—table2.c2[0134]wheresrc_table2.s3in(selectc3fromt3);[0135]具體的數(shù)據(jù)血統(tǒng)分析過程如下:[0136]語句模式識別過程:[0137](I)根據(jù)模式配置中的insert、select、from、where等關(guān)鍵字識別語句的各關(guān)鍵部分;[0138]<targettable>=‘overwritetabletarget—table’[0139]<targetcol>=null,無指定[0140]<srccol>=src_tablel.sl/cast(src_table2.s2asbigint)/src_table3.S3/'20130701'[0141]〈srctable〉=;(selectcl,slfromtlwhereid>30)src—tablel[0142]join[0143](selectc2,s2,s3fromt2wheredate=,20130701f)src_table2[0144]onsrc—tablel.cl=src_table2.c2[0145]〈condcol〉=<src_table2.s3in(selectc3fromt3),[0146](2)識別函數(shù)模式,根據(jù)[A-Z][A-Za-z0-9_]^(<arg>#keyword#keyword)模式識別cast(src_table2.s2asbigint)函數(shù),得出目標(biāo)字段為src_table2.s2;[0147](3)按括號層級處理,過濾關(guān)鍵字集,例如,對〈srctable〉過濾關(guān)鍵字后,得到如下子串:[0148](selectcl,slfromtlwhereid>30)src—tablel[0149](selectc2,s2,s3fromt2wheredate=,20130701f)src_table2[0150]src—tablel.cl=src_table2.c2[0151](4)識別目標(biāo)數(shù)據(jù)集與常量集,根據(jù)運(yùn)算符集匹配得出相關(guān)字段six—tablel.cl和src_table2.c2,其相關(guān)關(guān)系為src—tablel.cl=src_table2.c2;[0152](5)對于嵌套語句,遞歸執(zhí)行(I)-(4)步,得出以下數(shù)據(jù)關(guān)系:[0153]src—tablel.sl來自于tl.sl,相關(guān)字段tl.cl和tl.1d,其相關(guān)關(guān)系為tl.1d>30和tl.cl=t2.c2;[0154]src—table2.s2來自于t2.s2,相關(guān)字段t2.c2和t2.date,其相關(guān)關(guān)系為t2.date=,20130701’和tl.cl=t2.c2;[0155]src—table2.s3來自于t2.s3,相關(guān)字段t2.c2和t2.date,其相關(guān)關(guān)系為t2.date=,20130701’和tl.cl=t2.c2;[0156](6)對于語句中沒有指定目標(biāo)字段、select*等情況,從數(shù)據(jù)庫元數(shù)據(jù)中獲取相應(yīng)信息;[0157]〈targettable〉過濾關(guān)鍵字后得出目標(biāo)表為target_table,由于〈targetcol〉無指定,因此需從數(shù)據(jù)庫元數(shù)據(jù)中查詢,得到target_table包含tl、t2、t3、t4字段。[0158](7)匹配生成最終數(shù)據(jù)血統(tǒng)關(guān)系,如圖3所示,其中,實線是直接影響關(guān)系,虛線是間接影響關(guān)系。[0159]本領(lǐng)域普通技術(shù)人員可以理解,實現(xiàn)上述方法實施例的全部和部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算設(shè)備可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟,而前述的存儲介質(zhì)可以包括ROM、RAM、磁碟和光盤等各種可以存儲程序代碼的介質(zhì)。[0160]圖4是本公開一個實施例的數(shù)據(jù)血統(tǒng)分析裝置的結(jié)構(gòu)示意圖。[0161]如圖4所示,該實施例中的裝置40可以包括模式適配單元402、模糊字段匹配單元404、字段追溯單元406和血統(tǒng)關(guān)系形成單元408。其中,[0162]模式適配單元402,用于基于模式配置對查詢語句進(jìn)行分析,以識別其中的目標(biāo)表、目標(biāo)字段、源表與源字段,其中,模式配置中可以包括但不限于關(guān)鍵字語句模式、關(guān)鍵字集、運(yùn)算符集和函數(shù)模式;[0163]模糊字段匹配單元404,用于獲取各類數(shù)據(jù)庫系統(tǒng)定義的或用戶自定義的元數(shù)據(jù),并利用元數(shù)據(jù)對查詢語句的模糊字段進(jìn)行精確匹配;[0164]字段追溯單元406,用于根據(jù)識別出的目標(biāo)字段與源字段的字段追溯順序生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系;[0165]血統(tǒng)關(guān)系形成單元408,用于通過多層語句解析分析出多條查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系。[0166]在該實施例中,由于用戶可以自定義模式配置、并且在對查詢語句進(jìn)行識別時只識別與血統(tǒng)分析相關(guān)的關(guān)鍵字、濾除與統(tǒng)計數(shù)據(jù)血統(tǒng)關(guān)系無關(guān)的關(guān)鍵字,這樣就可以通過靈活地設(shè)定模式配置來實現(xiàn)對各類查詢語句的數(shù)據(jù)血統(tǒng)分析。[0167]進(jìn)一步地,模式適配單元可以包括:[0168]關(guān)鍵字模式識別子單元,用于利用模式配置中的關(guān)鍵字語句模式識別與提取查詢語句中的關(guān)鍵字語句,并識別提取出的關(guān)鍵字語句中包含的目標(biāo)表、目標(biāo)字段、源表與源字段;[0169]函數(shù)模式識別子單元,用于利用模式配置中的函數(shù)模式識別查詢語句中包含的函數(shù)結(jié)構(gòu),并根據(jù)函數(shù)模式提取函數(shù)結(jié)構(gòu)中的目標(biāo)字段;[0170]關(guān)鍵字濾除子單元,用于根據(jù)模式配置中的關(guān)鍵字集過濾查詢語句中與數(shù)據(jù)血統(tǒng)關(guān)系無關(guān)的關(guān)鍵字;以及[0171]常量識別子單元,用于利用模式配置中的運(yùn)算符集識別目標(biāo)數(shù)據(jù)與常量集,并得出目標(biāo)字段與常量集之間的關(guān)系。[0172]進(jìn)一步地,模糊字段匹配單元從元數(shù)據(jù)中獲取數(shù)據(jù)表包含的字段信息與字段順序。[0173]進(jìn)一步地,字段追溯單元可以包括:[0174]字段匹配子單元,用于按照字段順序?qū)Σ樵冋Z句的目標(biāo)字段和源字段進(jìn)行匹配;以及[0175]遞歸追溯子單元,對于查詢語句中的嵌套語句,用于通過遞歸追溯原始字段以生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系。[0176]進(jìn)一步地,血統(tǒng)關(guān)系形成單元可以包括:[0177]根據(jù)單一語句的源表、源字段與目標(biāo)表、目標(biāo)字段之間的關(guān)系在多條查詢語句間進(jìn)行比對和分析;以及[0178]根據(jù)源表、源字段與目標(biāo)表、目標(biāo)字段的關(guān)系設(shè)置各查詢語句的層級并形成各查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系。[0179]本說明書中各個實施例均采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同和相似的部分可以相互參見。對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處可以參見方法實施例部分的說明。[0180]雖然已參照示例性實施例描述了本公開,但應(yīng)理解,本公開不限于上述的示例性實施例。對于本領(lǐng)域技術(shù)人員顯然的是,可以在不背離本公開的范圍和精神的條件下修改上述的示例性實施例。所附的權(quán)利要求的范圍應(yīng)被賦予最寬的解釋,以包含所有這樣的修改以及等同的結(jié)構(gòu)和功能?!緳?quán)利要求】1.一種數(shù)據(jù)血統(tǒng)分析方法,其特征在于,包括:基于模式配置對查詢語句進(jìn)行分析,以識別其中的目標(biāo)表、目標(biāo)字段、源表與源字段;獲取各類數(shù)據(jù)庫系統(tǒng)定義的或用戶自定義的元數(shù)據(jù),并利用所述元數(shù)據(jù)對所述查詢語句的模糊字段進(jìn)行精確匹配;根據(jù)識別出的目標(biāo)字段與源字段的字段追溯順序生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系;通過多層語句解析分析出多條查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系。2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)血統(tǒng)分析方法,其特征在于,所述模式配置中包括關(guān)鍵字語句模式、關(guān)鍵字集、運(yùn)算符集和函數(shù)模式。3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)血統(tǒng)分析方法,其特征在于,基于模式配置對查詢語句進(jìn)行分析的步驟包括:利用所述模式配置中的關(guān)鍵字語句模式識別與提取查詢語句中的關(guān)鍵字語句,并識別提取出的關(guān)鍵字語句中包含的目標(biāo)表、目標(biāo)字段、源表與源字段;利用所述模式配置中的函數(shù)模式識別所述查詢語句中包含的函數(shù)結(jié)構(gòu),并根據(jù)所述函數(shù)模式提取函數(shù)結(jié)構(gòu)中的目標(biāo)字段;根據(jù)所述模式配置中的關(guān)鍵字集過濾所述查詢語句中與數(shù)據(jù)血統(tǒng)關(guān)系無關(guān)的關(guān)鍵字;利用所述模式配置中的運(yùn)算符集識別目標(biāo)數(shù)據(jù)與常量集,并得出目標(biāo)字段與常量集之間的關(guān)系。4.根據(jù)權(quán)利要求1所述的數(shù)據(jù)血統(tǒng)分析方法,其特征在于,利用所述元數(shù)據(jù)對所述查詢語句的模糊字段進(jìn)行精確匹配的步驟包括:從所述元數(shù)據(jù)中獲取數(shù)據(jù)表包含的字段信息與字段順序。5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)血統(tǒng)分析方法,其特征在于,根據(jù)識別出的目標(biāo)字段與源字段的字段追溯順序生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系的步驟包括:按照所述字段順序?qū)λ霾樵冋Z句的目標(biāo)字段和源字段進(jìn)行匹配;對于所述查詢語句中的嵌套語句,通過遞歸追溯原始字段以生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系。6.根據(jù)權(quán)利要求1所述的數(shù)據(jù)血統(tǒng)分析方法,其特征在于,所述通過多層語句解析分析出多條查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系的步驟包括:根據(jù)單一語句的源表、源字段與目標(biāo)表、目標(biāo)字段之間的關(guān)系在多條查詢語句間進(jìn)行比對和分析;根據(jù)源表、源字段與目標(biāo)表、目標(biāo)字段的關(guān)系設(shè)置各查詢語句的層級并形成各查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系。7.一種數(shù)據(jù)血統(tǒng)分析裝置,其特征在于,包括:模式適配單元,用于基于模式配置對查詢語句進(jìn)行分析,以識別其中的目標(biāo)表、目標(biāo)字段、源表與源字段;模糊字段匹配單元,用于獲取各類數(shù)據(jù)庫系統(tǒng)定義的或用戶自定義的元數(shù)據(jù),并利用所述元數(shù)據(jù)對所述查詢語句的模糊字段進(jìn)行精確匹配;字段追溯單元,用于根據(jù)識別出的目標(biāo)字段與源字段的字段追溯順序生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系;血統(tǒng)關(guān)系形成單元,用于通過多層語句解析分析出多條查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系O8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)血統(tǒng)分析裝置,其特征在于,所述模式配置中包括關(guān)鍵字語句模式、關(guān)鍵字集、運(yùn)算符集和函數(shù)模式。9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)血統(tǒng)分析裝置,其特征在于,所述模式適配單元包括:關(guān)鍵字模式識別子單元,用于利用所述模式配置中的關(guān)鍵字語句模式識別與提取查詢語句中的關(guān)鍵字語句,并識別提取出的關(guān)鍵字語句中包含的目標(biāo)表、目標(biāo)字段、源表與源字段;函數(shù)模式識別子單元,用于利用所述模式配置中的函數(shù)模式識別查詢語句中包含的函數(shù)結(jié)構(gòu),并根據(jù)所述函數(shù)模式提取函數(shù)結(jié)構(gòu)中的目標(biāo)字段;關(guān)鍵字濾除子單元,用于根據(jù)所述模式配置中的關(guān)鍵字集過濾所述查詢語句中與數(shù)據(jù)血統(tǒng)關(guān)系無關(guān)的關(guān)鍵字;常量識別子單元,用于利用所述模式配置中的運(yùn)算符集識別目標(biāo)數(shù)據(jù)與常量集,并得出目標(biāo)字段與常量集之間的關(guān)系。10.根據(jù)權(quán)利要求7所述的數(shù)據(jù)血統(tǒng)分析裝置,其特征在于,所述模糊字段匹配單元從所述元數(shù)據(jù)中獲取數(shù)據(jù)表包含的字段信息與字段順序。11.根據(jù)權(quán)利要求10所述的數(shù)據(jù)血統(tǒng)分析裝置,其特征在于,所述字段追溯單元包括:字段匹配子單元,用于按照所述字段順序?qū)λ霾樵冋Z句的目標(biāo)字段和源字段進(jìn)行匹配;遞歸追溯子單元,對于所述查詢語句中的嵌套語句,用于通過遞歸追溯原始字段以生成查詢語句的數(shù)據(jù)血統(tǒng)關(guān)系。12.根據(jù)權(quán)利要求7所述的數(shù)據(jù)血統(tǒng)分析裝置,其特征在于,所述血統(tǒng)關(guān)系形成單元包括:根據(jù)單一語句的源表、源字段與目標(biāo)表、目標(biāo)字段之間的關(guān)系在多條查詢語句間進(jìn)行比對和分析;根據(jù)源表、源字段與目標(biāo)表、目標(biāo)字段的關(guān)系設(shè)置各查詢語句的層級并形成各查詢語句之間的數(shù)據(jù)血統(tǒng)關(guān)系。【文檔編號】G06F17/30GK104424269SQ201310385157【公開日】2015年3月18日申請日期:2013年8月30日優(yōu)先權(quán)日:2013年8月30日【發(fā)明者】陳翀,陳康,向勇,張青,吳旭,劉春,高智衡,陶彩霞,關(guān)迎輝申請人:中國電信股份有限公司