Excel數(shù)據(jù)模型自動(dòng)生成Hive建表語(yǔ)句

最近在「空白女俠」公號(hào)上看到她回答了大家會(huì)困擾的精力問題,比如為什么我(空白女俠)能同時(shí)做那么多事情,精力那么充沛?工作中遵循一個(gè)真理:

復(fù)雜的事情簡(jiǎn)單化,簡(jiǎn)單的事情標(biāo)準(zhǔn)化,標(biāo)準(zhǔn)的事情流程化,流程化的事情工具化,工具化的事情自動(dòng)化,無(wú)法自動(dòng)化的事情外包化。

數(shù)據(jù)開發(fā)過程中,有些過程是可以工具化來提高工作效率,騰出更多的時(shí)間和精力去提高自己(摸魚~)

工具化

在日常數(shù)據(jù)開發(fā)過程中,會(huì)經(jīng)常需要根據(jù)數(shù)據(jù)模型編寫建表語(yǔ)句,每次寫建表語(yǔ)句都會(huì)用幾分鐘的時(shí)間,而且還容易出一些低級(jí)的錯(cuò)誤,于是打算做個(gè) Excel 模板,把表字段、表分區(qū)、表名寫在里面,通過程序自動(dòng)生成建表語(yǔ)句。效果如下圖:

數(shù)據(jù)模型生成建表語(yǔ)句

制作模板

主要包括表名、表中文描述、字段名、數(shù)據(jù)類型、字段說明、是不可以為空、唯一主鍵、表分區(qū)等寫在里面(可以根據(jù)實(shí)際情況進(jìn)行調(diào)整)

模板組成分為三個(gè)部分:

  • 1-3行是表名、表中文描述和模板列說明
  • 4-19行為創(chuàng)建表字段的基本信息
  • 20行為分區(qū)字段
數(shù)據(jù)模型模板

實(shí)現(xiàn)原理

獲取指定目錄下的數(shù)據(jù)模型文件,約定為以「數(shù)據(jù)模型.xls」或「數(shù)據(jù)模型.xlsx」文件名結(jié)尾的 Excel 文件

循環(huán)遍歷每個(gè)模板文件,根據(jù)模板組成規(guī)范,解析文件,拼接 SQL 語(yǔ)句,生成建表語(yǔ)句文件

生成結(jié)果

CREATE EXTERNAL TABLE ods_cbonddescription (
    object_id string  COMMENT '對(duì)象ID',
    b_info_fullname string  COMMENT '債券名稱',
    s_info_name string  COMMENT '債券簡(jiǎn)稱',
    b_info_issuer string  COMMENT '發(fā)行人',
    b_issue_announcement string  COMMENT '發(fā)行公告日',
    b_issue_firstissue string  COMMENT '發(fā)行起始日',
    b_issue_lastissue string  COMMENT '發(fā)行截至日',
    b_issue_amountplan bigint  COMMENT '計(jì)劃發(fā)行總量(億元)',
    b_issue_amountact bigint  COMMENT '實(shí)際發(fā)行總量(億元)',
    b_info_issueprice bigint  COMMENT '發(fā)行價(jià)格',
    b_info_par bigint  COMMENT '面值',
    b_info_term_year int  COMMENT '債券期限(年)',
    b_info_term_day int  COMMENT '債券期限(天)',
    b_info_paymentdate int  COMMENT '兌付日',
    b_info_paymenttype int  COMMENT '計(jì)息方式',
    s_info_exchmarket string  COMMENT '交易所'
)
COMMENT '債券基本信息' 
PARTITIONED BY(dt string) 
ROW FORMAT DELIMITED '\t' 
STORED AS ORC 
LOCATION 'hdfs://host:8020/dw/ods/ods_cbonddescription';

結(jié)語(yǔ)

如果大家在工作中使用了什么樣的模板,可以一起交流如何形成一定的工具化的腳本來提高我們工作的效率。

最后,關(guān)注公眾號(hào),回復(fù)「603」獲取模板和代碼。

歡迎關(guān)注公眾號(hào):HelloTech,獲取更多內(nèi)容

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容