最近在「空白女俠」公號(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ù)類型、字段說明、是不可以為空、唯一主鍵、表分區(qū)等寫在里面(可以根據(jù)實(shí)際情況進(jìn)行調(diào)整)
模板組成分為三個(gè)部分:
- 1-3行是表名、表中文描述和模板列說明
- 4-19行為創(chuàng)建表字段的基本信息
- 20行為分區(qū)字段

實(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)容