powerquery从文件夹导入文本(PowerQuery入门数据导入与展开)

对于Excel用户来说,经常会遇到下列情况而烦躁不安,数字和文本混在一个单元格里、数据表中大量使用合并单元格、数据表是一个不方便进一步统计的二维表,甚至数据表被分散到了不同的工作表或不同的工作簿……这时,Power Query横空出世了。

自从微软公司发布Power Query for Excel以来,从最早的加载项形式,到如今与Excel完美结合,历经了多个版本的更新,现在已经成为Excel用于数据查询和数据清洗的重要功能,极大地提高了用户的工作效率。今天小编先和大家一起来了解Power Query中数据处理的准备工作——导入与展开。

处理数据需要数据源表,就拿一个JSON文件“开刀”吧。JSON是JavaScript Object Notation的缩写,这是近年来的主流数据格式之一,采用独特规则的文本格式来存储和表示数据,这种格式的文件扩展名就 是“.json”。

示例文件(素材:02 -展开数据.json)是一个从网上下载的JSON文件,如果用记事本程序打开的话,里面的数据和乱码看上去没有太大区别,如图 1-1 所示。但是,Power Query却可以把它“收拾” 得服服帖帖。

powerquery从文件夹导入文本(PowerQuery入门数据导入与展开)(1)

图 1-1 用记事本打开 JSON 示例文件的原始数据

导入 JSON 文件

先新建一个Excel工作簿,在【数据】选项卡下,依次选择【获取数据】→【来自文件】→【从 JSON】选项,然后打开【导入数据】对话框,定位目标文件,找到刚才的JSON文件后,单击【导入】按钮,如图 1-2 所示。但是接下来并没有如期地出现【导航器】窗口,而是直接就进入了Power Query。

powerquery从文件夹导入文本(PowerQuery入门数据导入与展开)(2)

图 1-2 从 JSON 文件中导入数据到Power Query

要点提示:从JSON文件导入数据到Power Query

Excel界面→【数据】→【获取数据】→【来自文件】→【从JSON】→定位目标文件→【导入】

【Power Query编辑器】→【主页】→【 新 建源】→【文件】→【JSON】→ 定位目标文件 → 【导入】

不过这次Power Query的状态有点怪,【转换】和【添加列】选项卡下所有的命令按钮都呈现不可用的状态。此外,还多出来一个【列表工具转换】选项卡,如图 1-3 所示,这是“闹哪样”呢?从这个多出来的选项卡可以看到,这次导入的是一个【列表】,而不是【查询表】。

powerquery从文件夹导入文本(PowerQuery入门数据导入与展开)(3)

图 1-3 【列表】状态

列表里的每一条记录都是“Record”,表示这是被折叠的数据。单击任意一个“Record”以后可以将其展开,但是能看到的也只是众多数据中的一个,对处理数据毫无帮助。所以,刚才的单击步骤必须“咔嚓”删除。删除步骤的操作非常简单,只要在【查询设置】的【应用的步骤】窗格里单击最后一个“导航”步骤左边的删除符号,这个列表就被“打回原形”了,如图 1-4 所示。

powerquery从文件夹导入文本(PowerQuery入门数据导入与展开)(4)

图 1-4 删除步骤

难道只能“望表兴叹”了?当然不是,只要把【列表】转换成【查询表】就行了。在新冒出来的 【列表工具转换】选项卡下单击【到表】按钮,在弹出的【到表】对话框里虽然还有一些设置,但基本上都可以忽略,直接单击【确定】按钮,然后这个【列表】就华丽地变身为【查询表】了,如图 1-5 所示。如此一来,【转换】和【添加列】选项卡里也不再是“灰蒙蒙”的一片了。

powerquery从文件夹导入文本(PowerQuery入门数据导入与展开)(5)

图 1-5 将【列表】转换为【查询表】

要点提示:将列表转换为查询表

【Power Query编辑器】→选取列表→【列表工具转换】→【到表】→输入分隔符→处理附加列→ 【确定】

展开数据

不过刚才的操作只是转换,并没有对表里的内容做任何修改,所以查询表里仍然是一堆 “Record”。要处理这些数据肯定不能逐个单击,而是要单击标题右端的【展开】按钮,如图 1-6 所示,或者单击【转换】选项卡下的【展开】按钮来处理整列。使用这两种展开方式所弹出的窗格(对话框)虽然有细微的差异,但总体功能还是一致的。

powerquery从文件夹导入文本(PowerQuery入门数据导入与展开)(6)

图 1-6 将折叠的数据整列展开

展开后窗格(对话框)的“长相”有点类似于筛选窗格,其选择方式也和“筛选”如出一辙,需要展开哪些列,只要勾选标题名前的复选框即可。此处当然是要选择所有列,保持默认设置即可,最后单击【确定】按钮,一整列的“Record”就全部展开了。

这里有两个设置需要关注。一个是当数据列数很多的时候,供选择的列并不会全部显示出来, 所以会有一个【列表可能不完整】的警示标记,只要单击右边的【加载更多】按钮就可以显示完整的列表。

另一个就是“前缀”的问题。数据表的每一列都有一个“标题”,也就是俗称的“表头”,查询表也不例外。但是Power Query里任何一种表的标题都必须是唯一的,不能重复,所以展开窗格里默认会为原标题加上前缀以避免重复。例如,原来的“AccountNumber”,展开以后会变成“Column 1 . AccountNumber”(使用【转换】选项卡下的【展开】命令,在弹出的对话框中可以自定义前缀内容)。但是这样一来,标题难免会变得巨长,这时可以取消勾选【使用原始列名作为前缀】复选框,让前缀不显示。只是当展开的数据中有与原表中一模一样的标题时,第二次出现的标题会在原标题后面自动加“. 1”来避免重复。

要点提示:展开整列数据

【Power Query编辑器】→【展开】→【加载更多】→选择展开列→选择是否需要【使用原始列名 作为前缀】→【确定】

【Power Query编辑器】→选取对象→【转换】→【展开】→【加载更多】→选择展开列→修改或删除【默认的列名前缀】→【确定】

接下来再单击列标题右端的【展开】按钮时,会有一个选项,这里选择【扩展到新行】即可,如图 1-7 所示。

powerquery从文件夹导入文本(PowerQuery入门数据导入与展开)(7)

图 1-7 将 List 转换为 Record

在历经了五次【展开】或【扩展到新行】操作以后,最终的数据才会完全显露出来,一共 1000 行、11 列。

在实际的数据处理过程中,会遇到各种问题,小编讲解的上述技巧,你学会了吗?

,

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

    分享
    投诉
    首页