excel创建数据库的方式(复杂Excel的解析与导入数据库)

excel导入数据库,很多BI工具,或者ETL工具都内置了。确实,它们有这个功能,但是绝大部分只能解决如下这种标准(简单)格式的:

excel创建数据库的方式(复杂Excel的解析与导入数据库)(1)

能被ETL或者BI工具直接识别的excel基本都是这种简单格式

数据入库后,表结构基本就是:

【日期,价1,价2,价3,价4,价5,价6】

的形式,指标只能是的。

这种格式,甚至都不需要用工具,在N列,自己手工拼接出一个“insert into table_a(****) values(***) ”的语句,然后copy到dbeaver或者其他数据库查询工具中执行一下就结束。

然而,现实世界中有太多复杂的excel。例如券商研究所的分析师会给买方基金经理提供各式各样格式非常自由的数据文件,这种文件完全没有格式可言,里面就是按照个人喜好、习惯,随意整的一些数据。比如下面的:

excel创建数据库的方式(复杂Excel的解析与导入数据库)(2)

自由格式的文件

这样的数据,用ETL工具或者编程,是可以导入到数据库的表中的。但不太好处理B列包含的丰富信息。B列的值,会被压平到表的单独一列中。数值因为原始值和同比混杂,无论工具还是编程都要费点功夫进行处理。

遇到这种文件应该怎么处理呢?我们来分析一下。

excel创建数据库的方式(复杂Excel的解析与导入数据库)(3)

先看日期

这个文件上是年份和月份。格式比较标准。

excel创建数据库的方式(复杂Excel的解析与导入数据库)(4)

两种指标类型

B列包含了指标名称。里面是一个蕴含层级信息的维度。5-34行是累计数据,37-64行是当月数据。“累计 or 当月”可以看做指标类型,它是一个存量和增量的概念。

excel创建数据库的方式(复杂Excel的解析与导入数据库)(5)

不同的品类

B列中,还按照品类做了拆分。这些品类包括“superX,纯生,喜力”等。每个品牌对应2个指标,一个是销量,一个是销量同比。

excel创建数据库的方式(复杂Excel的解析与导入数据库)(6)

不同档位

B列中,还区分了不同的档位,包括“次高档,普高,高档,中档”。不同的品牌归属在不同的档位下。

excel创建数据库的方式(复杂Excel的解析与导入数据库)(7)

两种不同的总销量值

最后,还有两个与具体品牌无关的总销量的值,B6和B37单元格中分别存的是累计当月的总销量,是一个合计值。

这个Excel文件,如果解析到数据库中,应该保留文件中的所有层级关系。它们都是销量数据的维度信息。独立出来有利于在数据分析中进行筛选。如果用算法进行深度学习,这些(维度)标签也是非常必要的前提。

最终展示为这样的表结构:

excel创建数据库的方式(复杂Excel的解析与导入数据库)(8)

经过标准化后的数据表格式

CLASS是品牌。总销量值的时候里面放“合计”的中文;

LEVEL是档位。总销量值的时候里面放“合计”的中文;

SALES,SALES_YOY是当月销量和当月销量同比;

ACCU_SALES和ACCU_SALES_YOY是累计销量和累计销量同比;

当原始Excel中的数据被标准化为这种形式后,数据的可阅读性可分析性都会大大提升。可以反向从Excel中,把数据从数据库中再抽回来,

excel创建数据库的方式(复杂Excel的解析与导入数据库)(9)

excel中从数据库再抽回来的标准化数据

在这种标准格式的基础上,很方便就可以利用Excel数据透视功能,迅速的计算例如不同品牌的销量均值:

excel创建数据库的方式(复杂Excel的解析与导入数据库)(10)

在excel中的数据透视表

Excel数据的解析及入库,不是把单元格的值抠出来放到表中就算结束了,这种只能算最低level的数据治理。只有经过上述的步骤,将数据的维度信息充分提炼出来,富含业务内涵的解析才是有效的。数据从原先只能被肉眼看的形式,转变为了有多种维度更适合比如BI工具分析的形式,易于进行深度的数据研究。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页