使用 Power Query 编辑器清理和转换数据

已完成

使用 Microsoft Power BI Desktop 连接到数据源后,必须根据需要调整数据。 有时,调整表示通过某种方式转换数据,例如,重命名列或表、将文本更改为数字、删除行或将第一行设为标题。

Power BI Desktop 中的 Power Query 编辑器 除了在功能区中提供任务,还广泛使用快捷菜单(也称右键菜单或上下文菜单)。 在功能区的“转换”选项卡中可以选择的大部分选项也可通过以下方式来访问:右键单击某项(例如某列),然后在显示的快捷键菜单中选择一个命令。

为数据塑型

Power Query 编辑器 中为数据塑型时,需在 Power Query 编辑器 加载并呈现该数据时,提供可由其执行的用于调整数据的分步指令。 原始数据源不受影响。 只有数据的此特定视图会进行调整或塑型。

指定的步骤(例如重命名表、转换数据类型或删除列)由 Power Query 编辑器 记录。 每当此查询连接到数据源时,都会执行这些步骤,因此数据始终以指定的方式塑型。 每当在 Power BI Desktop 中使用查询时,都会执行此过程;每当他人使用你的共享查询时(例如在 Power BI 服务 中使用),也会执行此过程。 将在“Power Query 设置”窗格中的“已应用的步骤”下按顺序捕获这些步骤。

下图显示了一个已塑型的查询的“查询设置”窗格。 接下来的几个段落会介绍其中的每个步骤。

查询设置

返回到退休数据(连接到 Web 数据源后可以看到),根据需要对该数据塑型。

备注

如果尚未下载样本数据集,请参阅上一个单元页面。

我们需要数字类型的数据。 此示例中的数据类型很合适。但是如果需要更改数据类型,只需右键单击列标题,然后即可选择“更改类型”>“整数”。 如果必须更改多个列,则请选择其中一个列,然后在按住 Shift 键的同时,选择其他的相邻列。 然后右键单击列标题,更改所有选定的列。 也可使用 Ctrl 键选择不相邻的列。

应用的步骤更改类型

备注

通常情况下,Power Query 会检测某个文本列是否为数字,并会在将表引入 Power Query 编辑器时自动更改数据类型。 在本例中,“已应用的步骤”下有一个步骤指出 Power Query 已执行哪种操作。

也可使用功能区中的“转换”选项卡将这些列从文本更改或转换为标题。 下图显示了“转换”选项卡。红色框突出显示“数据类型”按钮,可用于将当前数据类型转换为另一种数据类型。

“转换”功能区和“数据类型”按钮

注意,“查询设置”窗格中的“已应用的步骤”列表反映所做的所有更改。 若要从塑型过程中删除任一步骤,只需选择该步骤,然后选择其左侧的“X”即可。

“查询设置”窗口

连接到数据

有关各州的数据十分丰富,可用于生成其他分析活动和查询。 但有一个问题:这里的大部分数据使用了双字母缩写来表示州代码,而未使用完整的州名。 因此,我们需要通过某种方式将州名与其缩写相关联。

幸运的是,另有一个公共数据源可执行这种关联,但在将该数据源连接到退休资料表之前,需要完成相当多的塑型操作。 下面是州名缩写的 Web 资源:

http://en.wikipedia.org/wiki/List_of_U.S._state_abbreviations

Power Query 编辑器 的功能区中的“开始”选项卡上,选择“新建源”>“Web”。 然后输入地址并选择“确定”。 “导航器”窗口会显示它在该网页上找到的信息。

网站中的美国州名缩写

之所以选择“代码和缩写...”表,是因为它包含所需的数据,但需要完成大量的塑型才能削减该数据。

选择“加载”将数据引入 Power Query 编辑器,以便对其塑型。 然后,执行以下步骤:

  • 删除前三行 - 这些行反映网页表的创建方式,我们并不需要它们。 若要删除它们,请在功能区的“开始”选项卡中选择“删除行”>“删除前几行”。 在显示的对话框中输入 3 作为要删除的行数。

    删除前几行

  • 删除后 26 行 - 这些行都是地区,不需要包含它们。 删除过程与上面的过程相同,但这次请选择“删除行”>“删除后几行”,然后输入 26 作为要删除的行数。

    删除后几行

  • 筛选掉“华盛顿特区”- 退休资料统计表不包含华盛顿特区,因此需将其从列表中排除。 选择“联邦国家”列旁边的下拉箭头,然后清除“联邦特区”复选框。

    删除包含特定值的行

  • 删除一些不需要的列 - 我们只需要每个州与其正式的双字母缩写的映射,该信息在第一列和第四列提供。 因此只需保留这两列,可以删除所有其他列。 选择要删除的第一列,然后按住 Ctrl 键并选择要删除的其他列(这样可以选择多个不相邻的列)。 然后,在功能区的“开始”选项卡中选择“删除列”>“删除列”。

    删除特定的列

  • 将第一行用作标题 - 由于我们删除了前三行,因此当前最上面的行是所需的标题。 选择“将第一行用作标题”按钮。

    将第一行用作标题

    备注

    特此提醒,Power Query 编辑器 中应用的步骤的顺序非常重要,它可能会影响数据的塑型方式。 另外,必须考虑一个步骤对另一个后续步骤可能造成的影响。 如果从“已应用的步骤”列表中删除某个步骤,则后续步骤可能不会按最初的预期方式运行,因为它们受查询步骤顺序的影响。

  • 重命名列和表本身 - 像往常一样,可通过多种方式来重命名列。 可以根据偏好来选择所需的方式。 让我们将列重命名为“州名”和“州代码”。 若要重命名表,只需在“查询设置”窗格中的“名称”字段中输入名称即可。 让我们将此表命名为 StateCodes

    重命名列

组合数据

StateCodes 表塑型后,可将两个表组合成一个。 由于现有的表是针对数据应用查询后的结果,因此这些表通常称为“查询”。

可通过以下两种主要方式来组合查询:“合并”和“追加”。

若要将一个或多个列添加到另一个查询,请 合并 查询。 若要将其他数据行添加到现有查询,请 追加 查询。

在本例中,我们需要合并查询。 若要开始,请选择需将另一查询合并到其中的查询。 然后,在功能区的“开始”选项卡中选择“合并查询”。 首先需要选择退休资料查询。 然后,将该查询重命名为 RetirementStats

“合并查询”按钮

此时会显示“合并”对话框,并会提示我们选择要合并到选定表中的表,以及要用于合并的匹配列。

RetirementStats 表(查询)中选择“州”,然后选择“StateCodes”查询。 (在本例中可以轻松进行选择,因为另外只有一个查询。 但如果连接到多个数据源,则要在许多查询中进行选择。)选择适当的匹配列(从“RetirementStats”中选择“州”,从“StateCodes”中选择“州名”)后,“合并”对话框的外观如下所示,且“确定”按钮会变得可用。

“合并”对话框

将在查询的末尾创建“NewColumn”,其中包含与现有查询合并的表(查询)的内容。 合并的查询中的所有列将压缩到 NewColumn 中,但你可以 扩展 表,使之包含你所需要的任何列。 若要扩展已合并的表并选择要包含的列,请选择扩展图标(扩展图标)。 此时会显示“扩展”对话框。

“扩展”对话框

在本例中,我们只需“州代码”列。 因此,只选择该列,然后选择“确定”。 也可清除“使用原始列名作为前缀”复选框。 如果将它保留选中状态,则合并的列将命名为“NewColumn.State Code”(原始列名或 NewColumn,后接一个句点,再后接引入到查询中的列名)。

备注

可以根据需要体验如何将数据引入 NewColumn 表中。 如果对结果不满意,只需从“查询设置”窗格的“已应用的步骤”列表中删除“扩展”步骤即可。 查询会返回到应用该步骤之前的状态。 可以免费重来并执行任意次,直到扩展过程符合预期。

现在,我们在单个查询(表)中组合了两个数据源,每个数据源都已根据需要塑型。 此查询可以充当其他各种数据连接(例如,任何一州的房屋成本统计、人口统计或工作机会)的基础。

若要在 Power Query 编辑器 中应用更改并将更改载入 Power BI Desktop,请在功能区的“开始”选项卡中选择“关闭并应用”。

关闭并应用数据设置

现在可以处理模型中的数据了。 接下来,我们将为报表创建一些视觉对象。

我们目前已有足够的数据,可以创建一些精彩的报表,所有这些操作均在 Power BI Desktop 中完成。 这是一个里程碑,因此让我们保存此 Power BI Desktop 文件。 在功能区的“开始”选项卡中选择“文件”>“保存”以保存报表 - 我们会将其命名为“Power BI Desktop 入门”。

很好! 现在请继续学习下一单元,我们会创建一些精彩的视觉对象。