前言
因为工作原因,最近经常会给运营人员导出一些报表数据,所以常常跟 Excel 数据打交道。处理的多了,久而久之,发现 Excel 本身也可以做一些高级复杂的数据处理。
比如,根据业务需要,需同时导出相关业务的多张报表,而这些基础数据会存放到不同的数据库及数据表中,所以导致数据难以查询,分组,合并。
根据以往经验,我们一般选择把几个不同数据库的数据都导出到同一个库中,方便我们进行连表查询,得到想要的数据。
然而把多个数据库中的数据导出,再导到同一个库的操作非常繁琐,复杂。
所以,在这里给大家分享另一种思路来处理这些麻烦的数据:使用 Excel 。
使用 Excel 怎么处理这些复杂的数据呢? 万变不离其宗,处理这些数据,依然会使用到我们熟悉的SQL,对,你没有看错,就是在 Excel 中执行SQL。
![5bc46a5881a86f6f1bfc7640157a0b33.png](https://i-blog.csdnimg.cn/blog_migrate/eb94c66eb3a8979fa9567ff14f481ad2.jpeg)
接下来,举个栗子,来具体展示一下,在 Excel 中如何使用SQL处理多个表中数据。
场景
假设我们有一个用户中心子系统,该系统会记录用户的每次登录,退出记录到日志库logDB的access_log表中,同时用户信息保存在userDB的user_info表中。
![b28a3f1b29bf9e52e461b414a9c78e71.png](https://i-blog.csdnimg.cn/blog_migrate/d0f0801a4bf3c597e3e371c96b891593.jpeg)
userDB的user_info表结构
![526796c1547d6ef77d600287182b65ab.png](https://i-blog.csdnimg.cn/blog_migrate/c4c9960ae4cc2867a48f91b15347b3b8.jpeg)
logDB的access_log表结构
现在要求导出“张三,李四,王五3个用户的所有登录登出记录”。
首先,我们将张三,李四,王五的用户信息导出到excel:user_info.xlsx 中。如图:
![a59a4baf92bd03a4fd0086f86c99550b.png](https://i-blog.csdnimg.cn/blog_migrate/a8cbfcc477a9523b95784f78d529f1da.jpeg)
user_info.xlsx
然后,将 张三,李四,王五对应的登录记录导出到 excel : access_log.xlsx中。如图:
![0dfaa332a51b7f5050e443b9a838eb18.png](https://i-blog.csdnimg.cn/blog_migrate/49b7afcccb408384edd2d9f52d418a5e.jpeg)
access_log.xlsx
接下来我们就开始使用Excel对 user_info.xlsx , access_log.xlsx 2个表进行SQL查询。
第三步,点击Excel 菜单栏:数据 -> 来自其他源 -> 来自Microsoft Query,如图:
![da838d678d59ab6460e13b9ca34c2caf.png](https://i-blog.csdnimg.cn/blog_migrate/e9815e9ea77f33abe506b96004400a33.jpeg)
然后选择数据源中的"Excel File* ",并点击确定按钮。
![a4b53572142abdf236d3c6e0c82ae7d0.png](https://i-blog.csdnimg.cn/blog_migrate/9b6d9a99600a582f72719123461c6c65.jpeg)
接着,选择Excel文件所在位置,并点击确定。
![59f734e125bb4e8ad17e36d063db72ac.png](https://i-blog.csdnimg.cn/blog_migrate/d59903f77ffd843e671b79e55fca6569.jpeg)
然后,点击"选项",勾选"系统表",再点击确定。
![31e1342786980af29d389dd4923c2259.png](https://i-blog.csdnimg.cn/blog_migrate/b69a023551d8492809eadaa01c0fc9e2.jpeg)
![75fb447be12e6c403deec284cadbe3e4.png](https://i-blog.csdnimg.cn/blog_migrate/8ba944247e1e39452992c3541e942b6e.jpeg)
点击确定后,我们就能在"可用的表和列"中看到我们的Excel Sheet页,选择需要的列加入到右侧,点击下一步
![58cc0ad39605cff8906af72425e7ac84.png](https://i-blog.csdnimg.cn/blog_migrate/861c950151d483d544f62962b85ac1e4.jpeg)
这时,可以看到2个表及表中的数据。然后连接2个表中相同的列,如下图所示:
![c5ec721dcbbed5c829df353fc2eaa1be.png](https://i-blog.csdnimg.cn/blog_migrate/fc139fb96038c095468d44603cf94c7c.jpeg)
点击下图所示按钮"SQL",弹出SQL编辑框,这样就可以随意修改SQL来查询我们需要的数据。
![a7d8c1dd393b2e5f5627b4fe74b75957.png](https://i-blog.csdnimg.cn/blog_migrate/e231e6216e8ed92272c8f8dede9f054f.jpeg)
最后,点击下图按钮,选择保存到"新工作表",就得到我们最终想要的数据。
![1c0bd0a36ac759c603663836c37d51ad.png](https://i-blog.csdnimg.cn/blog_migrate/21ae67a0d3c57187a8ada036f72736a0.jpeg)
![6c1dbc2fb8571e93df6657f4bdb016cb.png](https://i-blog.csdnimg.cn/blog_migrate/f767c9ae97a3236b9bb32715272d9c65.jpeg)
结语
以上示例只是简单的演示了一下Excel的SQL查询功能,实际工作中遇到的报表会比这复杂的多,将会更好的体现该功能的强大。
这种使用Excel + SQL处理数据的方式可以弥补一些无法使用数据库直接操作数据的特殊情况。
虽然这不是处理数据的最优方式,但也可以作为一种备选,以应对一些紧急数据情况。
以上分享提供一种新的思路来处理数据,大家如果有别的思路或想法,可以在下方留言,一起交流学习。