首页 > 代码库 > 用Excel获取数据——不仅仅只是打开表格
用Excel获取数据——不仅仅只是打开表格
引言:看到标题,你是否有些困惑?在Excel上具备数据获取的能力是指什么?难道不是把csv格式的表格和Excel格式的表格打开就好了吗?然而并非这样。
本文选自《数据化运营速成手册》。
其实标题中有两层意思:第一层意思是在一些数据库管理不那么严格的中小型企业,可以通过Excel中的ODBC数据接口,与数据库或者数据仓库建立连接,直接快速取数,提高工作效率;第二层意思是Excel 2016中有相当强大的数据获取工具,即便不能从数据库直接获取,也能从多个本地的数据表中将数据抽取、整理和转化,并做到实时更新,也能提高工作效率。
下面就用简短的篇幅介绍Excel中的“数据查询”功能。如图1所示,在“数据”选项卡下面单击“新建查询”下拉菜单,就能看到Excel提供的数据获取抓手非常丰富。可以从本地的其他工作簿,也可以从SQLServer、MySQL、Oracle等数据库,还可以从Hadoop的HDFS文件查询获取数据。本节以从本地文件查询和从Web端查询为例介绍。
图1 数据查询功能
延续之前的例子,我们将表A、表B和表C分别建立成3个Excel文件。在“新建查询”中单击“从工作簿”后,选择我们要的表A,就会出现一个连接的“导航器”,如图2所示。若直接单击“加载”按钮,则表A的数据会全部进入打开的工作表,并建立一个查询连接。若我们单击“编辑”按钮,则会弹出编辑查询的设置界面。在“查询编辑”面板中,可以可视化地实现SQL,诸如选择列、添加筛选条件、构造新的字段等,如图3所示。
图2 新建数据查询
图3 编辑数据查询
我们的目的是将表A、表B和表C三张表合并。那么,最合理的做法是将表B作为主表,把表A和表C的内容合并上去。首先,我们分别建立了针对三张表的查询,如图4所示。
图4 新建与源数据的查询
第二步开始设置表B的查询,点开设置面板后,单击“合并查询”按钮,如图5所示。
图5 应用合并查询
第三步,在“合并查询”的设置面板中,选好两张表对应的键,即“用户ID”,然后在“联接种类”中选择“左外部(第一个中的所有行,第二个中的匹配行)”,这就是一个“LEFT JOIN”,如图6所示。
图6 合并中设置匹配列和联接种类
单击“确定”按钮后,查询设置界面上出现一个“NewColumn”,如图7所示,点开它右边的按钮,在下拉列表框中选择要匹配进表B的字段,选择“用户姓名”、“所在区域”、“性别”和“注册来源”。
图7 选择要匹配的字段
完成这一步,实际上表A和表B已经成功合并了,我们再次单击“合并查询”选项,如图8所示,按刚才的操作,将表C中的“事件”字段进行“LEFT JOIN”,终于大功告成,如图9所示。
图8 新的合并中再次设置匹配列和联接种类
图9 完成合并后的效果
经过上述步骤,不同的表建立查询后,作为数据源的表一旦有变动,我们只要右键单击查询设置页面中上方的“刷新”按钮,数据就会更新。不需要反复地复制粘贴,更不需要手动写函数转化,大大提高了工作效率。
对这个内容再做一点小小的延伸。在工作中,作者会根据分析需求,先用查询工具将各个来源的表连接成一个主表;然后由这个主表做透视表和数据透视图,数据透视表的数据源就是引用整张表对象,而不是一个区域。这样能实现数据报表的半自动化。只要数据源进行了更新,那么打开制作报表的Excel工作簿,将查询链接更新一下,再将数据透视表更新一下,新的报表就完成了。用这个方法,可将原来半天的工作量压缩为30分钟,效率的提升是非常可观的。
除了在本地文件之间建立查询,再简单介绍如何从网页上爬取数据。我们从NBA数据统计网站上拉取某个页面上呈现的上个赛季东西部球队的战绩情况,如图10所示。
图10 NBA数据统计网站
过程其实非常简单。首先,建立一个从Web端的数据查询。单击图11所示的“从Web”选项后,在弹窗中输入URL,单击“确定”按钮。接着,Excel就会自动访问这个网页,并将网页中存储在
标签内的数据内容抓取出来。然后,熟悉的页面出现了。如图12所示,在“导航器”中,我们看到了网页中呈现的数据。直接单击“加载”按钮,数据就会出现在我们的Excel工作表中。
图11 从Web端建立数据查询
图12 从Web端爬取NBA战绩数据
在Excel中,获取数据的功能其实非常强大,而作者只使用了其中的“冰山一角”。希望大家在日常工作中多学多用,并把有价值的经验分享出来。
本文选自《数据化运营速成手册》,点此链接可在博文视点官网查看此书。
想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
用Excel获取数据——不仅仅只是打开表格