本申請(qǐng)涉及通信
技術(shù)領(lǐng)域:
:,特別涉及一種數(shù)據(jù)表生成方法。本申請(qǐng)同時(shí)還涉及一種數(shù)據(jù)表生成設(shè)備。
背景技術(shù):
::數(shù)據(jù)倉(cāng)庫(DataWarehouse,又稱為DW或DWH)是為企業(yè)所有級(jí)別的決策制定過程提供所有類型數(shù)據(jù)支持的戰(zhàn)略集合。數(shù)據(jù)倉(cāng)庫是一個(gè)提供用戶用于決策支持的當(dāng)前和歷史數(shù)據(jù)的環(huán)境,這些數(shù)據(jù)在傳統(tǒng)的操作型數(shù)據(jù)庫中很難或不能得到。數(shù)據(jù)倉(cāng)庫技術(shù)是為了有效的把操作形數(shù)據(jù)集成到統(tǒng)一的環(huán)境中以提供決策型數(shù)據(jù)訪問的各種技術(shù)和模塊的總稱,其最終的目的是為了讓用戶更快更方便查詢所需要的信息,以及提供決策支持。基礎(chǔ)層(又稱為ODS層)是數(shù)倉(cāng)建設(shè)過程中將從業(yè)務(wù)系統(tǒng)庫抽取過來的數(shù)據(jù)建立的一層貼源的數(shù)據(jù)層,從而方便后續(xù)數(shù)據(jù)整合。在目前的數(shù)據(jù)倉(cāng)庫建設(shè)過程中,ODS層與表相關(guān)的建設(shè)是基礎(chǔ)層建設(shè)的重要組成部分,需要將通過同步中心引入的增量數(shù)據(jù)合并為一份全量數(shù)據(jù),從而為后續(xù)的保留歷史、數(shù)據(jù)整合、數(shù)據(jù)分析、數(shù)據(jù)應(yīng)用等功能提供支持。目前,建立基礎(chǔ)層相關(guān)的表需要在生產(chǎn)建表語句之后編寫腳本以及配置調(diào)度信息,之后才能將腳本以及任務(wù)發(fā)布并執(zhí)行。發(fā)明人在實(shí)現(xiàn)本申請(qǐng)的過程中發(fā)現(xiàn),現(xiàn)有的任務(wù)腳本種類以及數(shù)量繁多,技術(shù)人員在采用腳本時(shí)非常容易遺漏或出錯(cuò);而且現(xiàn)有的數(shù)據(jù)表生成都是非?;A(chǔ)且需要人工完成的工作,不僅消耗開發(fā)資源大,而且人工開發(fā)效率比較低下。由此可見,如何結(jié)合現(xiàn)有的數(shù)據(jù)倉(cāng)庫建設(shè)過程自動(dòng)生成與ODS層所關(guān)聯(lián)的表,從而減少人力消耗以及提高數(shù)據(jù)倉(cāng)庫建設(shè)效率,成為本領(lǐng)域技術(shù)人員亟待解決的技術(shù)問題。技術(shù)實(shí)現(xiàn)要素:本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)表生成方法,用以針對(duì)現(xiàn)有的數(shù)據(jù)庫高效準(zhǔn)確地建立基礎(chǔ)層的數(shù)據(jù)表,從而減少人力消耗以及提高數(shù)據(jù)倉(cāng)庫建設(shè)效率。該方法包括:根據(jù)增量表的結(jié)構(gòu)元數(shù)據(jù)信息以及預(yù)設(shè)的任務(wù)模板生成當(dāng)前的數(shù)據(jù)表任務(wù);根據(jù)所述任務(wù)模板對(duì)所述數(shù)據(jù)表任務(wù)的調(diào)度信息進(jìn)行配置;根據(jù)所述數(shù)據(jù)表任務(wù)以及所述調(diào)度信息執(zhí)行建表語句以及初始化腳本,以生成數(shù)據(jù)表。相應(yīng)地,本申請(qǐng)還提出了一種數(shù)據(jù)表生成設(shè)備,包括:生成模塊,用于根據(jù)增量表的結(jié)構(gòu)元數(shù)據(jù)信息以及預(yù)設(shè)的任務(wù)模板生成當(dāng)前的數(shù)據(jù)表任務(wù);配置模塊,用于根據(jù)所述任務(wù)模板對(duì)所述數(shù)據(jù)表任務(wù)的調(diào)度信息進(jìn)行配置;執(zhí)行模塊,用于根據(jù)所述數(shù)據(jù)表任務(wù)以及所述調(diào)度信息執(zhí)行建表語句以及初始化腳本,以生成數(shù)據(jù)表。通過應(yīng)用本申請(qǐng)的技術(shù)方案,首先根據(jù)增量表的結(jié)構(gòu)元數(shù)據(jù)信息以及預(yù)設(shè)的任務(wù)模板生成當(dāng)前的數(shù)據(jù)表任務(wù),在根據(jù)任務(wù)模板對(duì)數(shù)據(jù)表任務(wù)的調(diào)度信息進(jìn)行配置之后,即可根據(jù)數(shù)據(jù)表任務(wù)以及調(diào)度信息執(zhí)行建表語句以及初始化腳本,從而能夠快速準(zhǔn)確地的完成數(shù)據(jù)表的生成工作,從而減少人力消 耗以及提高數(shù)據(jù)倉(cāng)庫建設(shè)效率。附圖說明圖1為本申請(qǐng)?zhí)岢龅囊环N數(shù)據(jù)表生成方法的流程示意圖;圖2為本申請(qǐng)具體實(shí)施例提出的一種數(shù)據(jù)表生成方法的流程示意圖;圖3為本申請(qǐng)?zhí)岢龅囊环N數(shù)據(jù)表生成設(shè)備的結(jié)構(gòu)示意圖。具體實(shí)施方式為便于對(duì)本申請(qǐng)的技術(shù)方案進(jìn)行清除的闡述,在介紹本申請(qǐng)的技術(shù)方案之前,首先針對(duì)目前數(shù)據(jù)倉(cāng)庫中的一些內(nèi)容進(jìn)行介紹:(1)表表是數(shù)據(jù)倉(cāng)庫最重要的組成部分。一個(gè)表記錄由key,度量,屬性數(shù)據(jù)組成(例如員工表由員工號(hào)(key),員工姓名,年齡等等員工屬性數(shù)據(jù)組成)。在本申請(qǐng)的技術(shù)方案中,數(shù)據(jù)倉(cāng)庫的建設(shè)存在以下兩種類型的表:增量表:為了提高性能,對(duì)于大數(shù)據(jù)量表根據(jù)記錄變更時(shí)間戳字段(一般是gmt_modify)采用增量同步,增量表每個(gè)快照保留一份增量數(shù)據(jù),表命名方式為tablename_{yyyymmdd}_delta或tablename_delta(分區(qū)字段dt=y(tǒng)yyymmdd);全量表:每個(gè)快照均會(huì)保留一份全量表,該全量表可以是從生產(chǎn)庫全量同步過來,也可以是將從生產(chǎn)庫同步過來的增量數(shù)據(jù)跟全量表的昨日快照數(shù)據(jù)進(jìn)行fullouterjoin后,保留一份最新全量,全量表的結(jié)構(gòu)跟增量表一致,表命名方式為tablename_{yyyymmdd}或tablename(分區(qū)字段dt=y(tǒng)yyymmdd)。(2)視圖視圖是一個(gè)虛擬表,其內(nèi)容由查詢定義。同真實(shí)的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。需要說明的是,視圖并不在數(shù)據(jù)庫中以存儲(chǔ)的數(shù)據(jù)值集形式存在。(3)元數(shù)據(jù)元數(shù)據(jù)為描述數(shù)據(jù)的數(shù)據(jù),本質(zhì)為對(duì)數(shù)據(jù)及信息資源的描述性信息,包括業(yè)務(wù)表結(jié)構(gòu)信息、數(shù)據(jù)倉(cāng)庫表結(jié)構(gòu)信息等。其中在數(shù)據(jù)倉(cāng)庫建設(shè)中較為重要的有調(diào)度元數(shù)據(jù)、SQL執(zhí)行日志元數(shù)據(jù)、表結(jié)構(gòu)元數(shù)據(jù)、同步中心元數(shù)據(jù)、定時(shí)任務(wù)元數(shù)據(jù)等。(4)Merge任務(wù)Merge任務(wù)為數(shù)據(jù)倉(cāng)庫建設(shè)中所不可或缺的方式,其作用在于將增量表的數(shù)據(jù)跟全量表的昨日快照數(shù)據(jù)進(jìn)行合并,生成一份最新的全量快照表數(shù)據(jù)。(5)同步中心同步中心為將生產(chǎn)數(shù)據(jù)同步到數(shù)據(jù)倉(cāng)庫或?qū)?shù)據(jù)倉(cāng)庫數(shù)據(jù)回流給生產(chǎn)系統(tǒng)的裝置或設(shè)備?;谏鲜鰞?nèi)容以及本申請(qǐng)的
背景技術(shù):
:,在數(shù)據(jù)倉(cāng)庫建設(shè)或重構(gòu)過程中,按照數(shù)據(jù)模型建設(shè)架構(gòu)需要建立基礎(chǔ)層,有些從生產(chǎn)庫同步過來的增量數(shù)據(jù)表需要在數(shù)據(jù)倉(cāng)庫的ODS層合并一份全量表,以保留一份最新全量快照數(shù)據(jù),而這個(gè)過程涉及生成全量表建表語句、merge任務(wù)腳本、調(diào)度依賴、數(shù)據(jù)初始化、發(fā)布等操作。而本申請(qǐng)的技術(shù)方案則旨在通過merge任務(wù)實(shí)現(xiàn)批量生成基礎(chǔ)層數(shù)據(jù)表(全量表),從而在保障工作質(zhì)量的前提下,降低數(shù)據(jù)倉(cāng)庫建設(shè)的復(fù)雜度、提升開發(fā)效率。如圖1所示,為本申請(qǐng)?zhí)岢龅囊环N數(shù)據(jù)表生成方法的流程示意圖,包括以下步驟:S101,根據(jù)增量表的結(jié)構(gòu)元數(shù)據(jù)信息以及預(yù)設(shè)的任務(wù)模板生成當(dāng)前的數(shù)據(jù)表任務(wù)。如
背景技術(shù):
:所述,現(xiàn)有數(shù)據(jù)庫中基礎(chǔ)層的全量表建設(shè)需求多且配置繁瑣,因此在本申請(qǐng)?jiān)趦?yōu)選的實(shí)施例中針對(duì)類型為基礎(chǔ)層全量表的數(shù)據(jù)表進(jìn)行生成處理。為了后續(xù)能夠快速地進(jìn)行數(shù)據(jù)表的生產(chǎn)操作,技術(shù)人員可以在該步驟 之前進(jìn)行統(tǒng)一數(shù)據(jù)表生成的初始化操作,即根據(jù)所述結(jié)構(gòu)元數(shù)據(jù)信息生成與所述數(shù)據(jù)表對(duì)應(yīng)的建表語句以及所述數(shù)據(jù)初始化腳本。在具體的應(yīng)用場(chǎng)景中,增量數(shù)據(jù)表命名方式為:ods_{源系統(tǒng)表名}_delta;而全量數(shù)據(jù)表的命名方式為:ods_{源系統(tǒng)表名}。由于現(xiàn)有的基礎(chǔ)層全量表大部分通過全量表merge任務(wù)來實(shí)現(xiàn),因此在本申請(qǐng)的一個(gè)優(yōu)選實(shí)施例中,技術(shù)人員可以將任務(wù)模板具體設(shè)置為merge任務(wù)模板,并在該步驟中根據(jù)增量表結(jié)構(gòu)元數(shù)據(jù)信息和批量merge任務(wù)模板成merge任務(wù)代碼,隨后將merge任務(wù)代碼作為所述數(shù)據(jù)表任務(wù)上傳至預(yù)設(shè)的代碼庫。在具體的應(yīng)用場(chǎng)景中,批量生成基礎(chǔ)層全量表merge任務(wù)模板格式如下表1所示:表1此外,由于數(shù)據(jù)倉(cāng)庫ODS層全量表的建立方法和裝置是一個(gè)高度集成的方案,其中有涉及元數(shù)據(jù)、在云端代碼庫、調(diào)度依賴、數(shù)據(jù)merge任務(wù)、數(shù) 據(jù)初始化、發(fā)布上線等一系列過程。因此為了進(jìn)一步地提高自動(dòng)化水平以及處理效率,可以在根據(jù)增量表的結(jié)構(gòu)元數(shù)據(jù)信息以及預(yù)設(shè)的任務(wù)模板生成當(dāng)前的數(shù)據(jù)表任務(wù)之前針對(duì)增量表的結(jié)構(gòu)元數(shù)據(jù)信息進(jìn)行預(yù)處理。具體地,在本申請(qǐng)的一個(gè)優(yōu)選實(shí)施例中,在該步驟之前將增量表同步至數(shù)據(jù)倉(cāng)庫,并獲取增量表的結(jié)構(gòu)元數(shù)據(jù)信息,以此建立能夠提供數(shù)據(jù)倉(cāng)庫的表結(jié)構(gòu)信息的元數(shù)據(jù)服務(wù),便于后續(xù)的處理。如圖2所示,為本申請(qǐng)具體實(shí)施例所提出的數(shù)據(jù)表生成方法的流程示意圖,該圖中除了包含上文所介紹的同步中心模塊、元數(shù)據(jù)模塊之外,還涉及到以下模塊:中間層:數(shù)據(jù)倉(cāng)庫建設(shè)中利用同步過來的基礎(chǔ)層數(shù)據(jù)進(jìn)行整合沉淀的一個(gè)數(shù)據(jù)層,目的在于方便后續(xù)應(yīng)用使用業(yè)務(wù)數(shù)據(jù);在云端:數(shù)據(jù)倉(cāng)庫開發(fā)的集成開發(fā)環(huán)境,通過在云端可以進(jìn)行數(shù)據(jù)同步配置、模型設(shè)計(jì)、ETL開發(fā)、單元測(cè)試、任務(wù)發(fā)布、運(yùn)維等操作。調(diào)度:將數(shù)據(jù)倉(cāng)庫任務(wù)根據(jù)配置進(jìn)行自動(dòng)調(diào)起執(zhí)行的系統(tǒng)?;谏鲜瞿K,該具體實(shí)施例在前期執(zhí)行以下步驟:步驟1:由同步中心同步增量數(shù)據(jù)至數(shù)據(jù)倉(cāng)庫;步驟2.1:元數(shù)據(jù)模塊根據(jù)增量表結(jié)構(gòu)信息生成全量表建表語句,并將其發(fā)送至在云端模塊;步驟2.2:元數(shù)據(jù)模塊根據(jù)模板和增量表結(jié)構(gòu)生成Merge任務(wù)。在上述步驟中,增量數(shù)據(jù)表的命名格式為:ods_{源系統(tǒng)表名}_delta;全量數(shù)據(jù)表的命名格式為:ods_{源系統(tǒng)表名}。各個(gè)模塊以此對(duì)表進(jìn)行建立以及查詢。在同步中心同步的過程中,同步任務(wù)的命名格式為:imp_{ODPS的表名};合并任務(wù)的命名格式為:mrg_{ODPS的表名}。由于元數(shù)據(jù)模塊能夠提供數(shù)據(jù)倉(cāng)庫的表結(jié)構(gòu)信息,而在云端代碼庫模塊能夠根據(jù)增量表結(jié)構(gòu)元數(shù)據(jù)信息和批量merge任務(wù)模板,生成merge任務(wù)代 碼并通過在云端代碼庫服務(wù)提交代碼庫保存,因此在根據(jù)批量生成基礎(chǔ)層全量表merge任務(wù)模板維護(hù)好信息后,即可將通過Excel文件上傳至專用于數(shù)據(jù)表生成的系統(tǒng),并通過調(diào)用元數(shù)據(jù)模塊并根據(jù)增量表的結(jié)構(gòu)信息生成基礎(chǔ)層全量表的建表語句和數(shù)據(jù)初始化腳本、調(diào)用在云端代碼庫模塊生成Merge任務(wù)。S102,根據(jù)所述任務(wù)模板對(duì)所述數(shù)據(jù)表任務(wù)的調(diào)度信息進(jìn)行配置。通過S101以及S102的處理即完成了針對(duì)數(shù)據(jù)表生成的前期準(zhǔn)備,該步驟主要用于針對(duì)具體生成所需要的節(jié)點(diǎn)、腳本等內(nèi)容進(jìn)行配置。為了實(shí)現(xiàn)針對(duì)數(shù)據(jù)表生成的調(diào)度配置服務(wù),在本申請(qǐng)優(yōu)選的實(shí)施例中,本步驟根據(jù)所述merge任務(wù)模板生成與所述數(shù)據(jù)表任務(wù)對(duì)應(yīng)的前置依賴節(jié)點(diǎn)、任務(wù)輸出名、調(diào)度任務(wù)基線、調(diào)度任務(wù)owner。在圖2的具體實(shí)施例中,在通過步驟2.2接收了Merge任務(wù)之后,在云端模塊在步驟2.3中根據(jù)模板配置調(diào)度信息為Merge任務(wù)配置相關(guān)信息,并調(diào)用調(diào)度配置服務(wù)生成調(diào)度依賴和merge任務(wù)輸出名稱。以表1所示的內(nèi)容為例,該具體實(shí)施例中根據(jù)批量merge任務(wù)模板,調(diào)用調(diào)度配置服務(wù)生成merge任務(wù)的前置依賴節(jié)點(diǎn)、任務(wù)輸出名、調(diào)度任務(wù)基線、調(diào)度任務(wù)owner。S103,根據(jù)所述數(shù)據(jù)表任務(wù)以及所述調(diào)度信息執(zhí)行建表語句以及初始化腳本,以生成數(shù)據(jù)表。在通過S101生成了數(shù)據(jù)表任務(wù)以及通過S102配置完畢調(diào)度信息之后,調(diào)度模塊在步驟3中指示系統(tǒng)將建表語句、初始化腳本、merge任務(wù)打包并發(fā)布到線上。隨后在云端模塊通過步驟4.1指示系統(tǒng)執(zhí)行建表語句,在系統(tǒng)執(zhí)行建表語句和初始化腳本之后,在云端模塊通過步驟4.2進(jìn)行初始化數(shù)據(jù)處理。通過以上流程,實(shí)現(xiàn)了數(shù)據(jù)表的快速生成以及創(chuàng)建,替代了傳統(tǒng)的手工 準(zhǔn)備建表語句、手工編寫基礎(chǔ)層全量表merge任務(wù)、手工配置調(diào)度依賴、手工編寫數(shù)據(jù)初始化腳本、手工打包、手工發(fā)布、手工執(zhí)行建表語句和初始化腳本的等需要人工完成的工作,實(shí)現(xiàn)了數(shù)據(jù)表的自動(dòng)生成,提高了數(shù)據(jù)倉(cāng)庫的工作效率。為達(dá)到以上技術(shù)目的,本申請(qǐng)還提出了一種數(shù)據(jù)表生成設(shè)備,如圖2所示,包括:生成模塊210,用于根據(jù)增量表的結(jié)構(gòu)元數(shù)據(jù)信息以及預(yù)設(shè)的任務(wù)模板生成當(dāng)前的數(shù)據(jù)表任務(wù);配置模塊220,用于根據(jù)所述任務(wù)模板對(duì)所述數(shù)據(jù)表任務(wù)的調(diào)度信息進(jìn)行配置;執(zhí)行模塊230,用于根據(jù)所述數(shù)據(jù)表任務(wù)以及所述調(diào)度信息執(zhí)行建表語句以及初始化腳本,以生成數(shù)據(jù)表。在具體的應(yīng)用場(chǎng)景中,所述數(shù)據(jù)表具體為基礎(chǔ)層全量表,還包括:初始化模塊,用于根據(jù)所述結(jié)構(gòu)元數(shù)據(jù)信息生成與所述數(shù)據(jù)表對(duì)應(yīng)的建表語句以及所述數(shù)據(jù)初始化腳本。在具體的應(yīng)用場(chǎng)景中,還包括:同步模塊,用于將所述增量表同步至數(shù)據(jù)倉(cāng)庫,并獲取所述增量表的所述結(jié)構(gòu)元數(shù)據(jù)信息。在具體的應(yīng)用場(chǎng)景中,所述生成模塊具體用于:根據(jù)增量表結(jié)構(gòu)元數(shù)據(jù)信息和批量merge任務(wù)模板成merge任務(wù)代碼,并將所述merge任務(wù)代碼作為所述數(shù)據(jù)表任務(wù)上傳至預(yù)設(shè)的代碼庫。在具體的應(yīng)用場(chǎng)景中,所述配置模塊具體用于:根據(jù)所述merge任務(wù)模板生成與所述數(shù)據(jù)表任務(wù)對(duì)應(yīng)的前置依賴節(jié)點(diǎn)、任務(wù)輸出名、調(diào)度任務(wù)基線、調(diào)度任務(wù)owner。通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可以通過硬件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺(tái)的方式來實(shí)現(xiàn)?;谶@樣的理解,本申請(qǐng)的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)(可以是CD-ROM,U盤,移動(dòng)硬盤等)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施場(chǎng)景所述的方法。本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施場(chǎng)景的示意圖,附圖中的模塊或流程并不一定是實(shí)施本申請(qǐng)所必須的。本領(lǐng)域技術(shù)人員可以理解實(shí)施場(chǎng)景中的裝置中的模塊可以按照實(shí)施場(chǎng)景描述進(jìn)行分布于實(shí)施場(chǎng)景的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施場(chǎng)景的一個(gè)或多個(gè)裝置中。上述實(shí)施場(chǎng)景的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。上述本申請(qǐng)序號(hào)僅僅為了描述,不代表實(shí)施場(chǎng)景的優(yōu)劣。以上公開的僅為本申請(qǐng)的幾個(gè)具體實(shí)施場(chǎng)景,但是,本申請(qǐng)并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本申請(qǐng)的保護(hù)范圍。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3