附模板和代码 | Excel数据模型自动生成Hive建表语句

简介: 在日常数据开发过程中,会经常需要根据数据模型编写建表语句,每次写建表语句都会用几分钟的时间,而且还容易出一些低级的错误,于是打算做个 Excel 模板,把表字段、表分区、表名写在里面,通过程序自动生成建表语句

最近在「空白女侠」公号上看到她回答了大家会困扰的精力问题,比如为什么我(空白女侠)能同时做那么多事情,精力那么充沛?工作中遵循一个真理:

复杂的事情简单化,简单的事情标准化,标准的事情流程化,流程化的事情工具化,工具化的事情自动化,无法自动化的事情外包化。

数据开发过程中,有些过程是可以工具化来提高工作效率,腾出更多的时间和精力去提高自己(摸鱼~)

工具化


在日常数据开发过程中,会经常需要根据数据模型编写建表语句,每次写建表语句都会用几分钟的时间,而且还容易出一些低级的错误,于是打算做个 Excel 模板,把表字段、表分区、表名写在里面,通过程序自动生成建表语句。效果如下图:

数据模型生成建表语句制作模板


主要包括表名、表中文描述、字段名、数据类型、字段说明、是否可以为空、唯一主键、表分区等写在里面(可以根据实际情况进行调整)

模板组成分为三个部分:

  • 1-3行是表名、表中文描述和模板列说明
  • 4-19行为创建表字段的基本信息
  • 20行为分区字段

数据模型模板实现思路


获取指定目录下的数据模型文件,约定为以「数据模型.xls」或「数据模型.xlsx」文件名结尾的 Excel 文件

循环遍历每个模板文件,根据模板组成规范,解析文件,拼接 SQL 语句,生成建表语句文件

生成结果


CREATE EXTERNAL TABLE ods_cbonddescription (
    object_id string  COMMENT '对象ID',
    b_info_fullname string  COMMENT '债券名称',
    s_info_name string  COMMENT '债券简称',
    b_info_issuer string  COMMENT '发行人',
    b_issue_announcement string  COMMENT '发行公告日',
    b_issue_firstissue string  COMMENT '发行起始日',
    b_issue_lastissue string  COMMENT '发行截至日',
    b_issue_amountplan bigint  COMMENT '计划发行总量(亿元)',
    b_issue_amountact bigint  COMMENT '实际发行总量(亿元)',
    b_info_issueprice bigint  COMMENT '发行价格',
    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 '计息方式',
    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';


结语


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


相关文章
|
5月前
|
XML 物联网 API
服务端和客户端 RESTful 接口上传 Excel 的 Python 代码
本文作者木头左是物联网工程师,分享如何使用 Python 和 Flask-RESTful 构建一个简单的 RESTful API,实现文件上传功能,特别支持Excel文件。通过安装Flask和Flask-RESTful库,创建Flask应用,实现文件上传接口,并将其添加到API。该方法具有简单易用、灵活、可扩展及社区支持等优点。
服务端和客户端 RESTful 接口上传 Excel 的 Python 代码
|
2月前
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
69 6
基于Python访问Hive的pytest测试代码实现
Excel中用宏VBA实现GBT 4761-2008 家庭关系代码转换
Excel中用宏VBA实现GBT 4761-2008 家庭关系代码转换
|
2月前
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
70 6
|
1月前
|
Java Apache
Apache POI java对excel表格进行操作(读、写) 有代码!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
34 0
|
3月前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
237 0
|
3月前
|
SQL
SQL SERVER 查询表结构,导出到Excel 生成代码用
SQL SERVER 查询表结构,导出到Excel 生成代码用
42 0
|
4月前
|
数据格式 Python
Python代码示例,读取excel表格,将行数据转为列数据。(10)
【7月更文挑战第10天】Python代码示例,读取excel表格,将行数据转为列数据。
156 2
|
5月前
|
Python
【代码】Python实现Excel数据合并
【代码】Python实现Excel数据合并
|
5月前
|
开发工具
Excel VBA 笔记 第一次写代码-For循环 (Excel基础)
Excel VBA 笔记 第一次写代码-For循环 (Excel基础)