调整初始数据

已完成

Power BI Desktop 中的 Power Query 编辑器使你能够调整(转换)导入的数据。 你可以完成如下操作:重命名列或表、将文本更改为数字、删除行,以及将第一行设为标头等。 务必对数据进行调整,从而确保它满足你的需求并且适合在报表中使用。

你已将两个源中的原始销售数据加载到一个 Power BI 模型中。  某些数据来自销售团队在 Microsoft Excel 中手动创建的 .csv 文件。  其他数据是通过连接到你组织的企业资源计划 (ERP) 系统来加载的。  现在,当在 Power BI Desktop 中查看数据时,你注意到数据是杂乱的;不需要的某些数据和所需的某些数据的格式都不正确。

在开始生成报表之前,需要使用 Power Query 编辑器对数据进行清理和调整。

使用查询编辑器转换数据

Power Query 编辑器入门

若要开始调整数据,请在 Power BI Desktop 的“开始”选项卡上选择“转换数据”选项来打开 Power Query 编辑器。

打开的 Power Query 编辑器

在 Power Query 编辑器中,所选查询中的数据会显示在屏幕中间,而在屏幕左侧,“查询”窗格会列出可用的查询(表)。

在 Power Query 编辑器中工作时,你对数据进行调整的所有步骤都会被记录下来。 随后,每当查询连接到数据源时,它会自动应用你的步骤,从而使你的数据始终按你指定的方式调整。  Power Query 编辑器仅对数据的特定视图进行更改,因此,你无需担心会对原始数据源造成任何更改。 可以在屏幕右侧的“查询设置”窗格中查看你的步骤列表以及查询的属性。

Power Query 编辑器功能区包含许多可用于选择、查看和调整数据的按钮。

若要了解有关可用特性和功能的详细信息,请参阅查询功能区

注意

在 Power Query 编辑器中,右键单击上下文菜单,然后单击功能区中的“转换”选项卡,这会提供许多相同的选项。

识别列标头和名称

对初始数据进行调整的第一步是标识数据内的列标头和名称,然后评估它们所在的位置以确保它们位于正确的位置。

在下面的屏幕截图中,SalesTarget(一个未提供的示例)的 csv 文件中的源数据有一个按产品分类的目标,以及按月份拆分的一个子类别,这两者都被整理成了列。

原始 Excel 数据

然而,你会注意到数据没有按预期导入。

识别列标头和名称

这使数据难以阅读。 在数据处于当前状态时会发生问题,因为列标头位于不同的行中(标记为红色),并且若干列有未描述的名称,例如“Column1”和“Column2”等。

在识别了列标头和名称所在的位置后,可以进行更改以重新整理数据。

提升标头

当表在 Power BI Desktop 中创建后,Power Query 编辑器会假设所有数据都属于表行。 但是,数据源的第一行可能会包含列名称,这是之前 SalesTarget 示例中发生的情况。  若要更正此误差,需要将第一个表行提升为列标头。

可以通过两种方式提升标头:在“开始”选项卡上选择“将第一行用作标头”选项,或选择“Column1”旁边的下拉菜单按钮,然后选择“将第一行用作标头”。

将第一行用作标头的不同选项

下图说明了“将第一行用作标头”功能会对数据造成哪些影响:

“将第一行用作标头”结果

重命名列

调整数据的下一步是检查列标头。 你可能会发现,一列或多列的标头错误、标头拼写错误,或者标头命名约定不一致或对用户不友好。

请参阅前面的屏幕截图,上面显示了“将第一行用作标头”功能的影响。 请注意,包含子类别“Name”数据的列现在的标头变成了“Month”。 此列标头不正确,因此需要对它进行重命名。

可以通过两种方式对列标头进行重命名。 一种方法是右键单击标头,选择“重命名”,编辑名称,然后按 Enter。 或者,可以双击列标头,然后使用正确的名称覆盖该名称。

还可以通过以下方法解决此问题:删除(跳过)前两行,然后将列重命名为正确名称。

删除前几行

在调整数据时,可能需要删除前几行,例如,当这些行为空白或者包含报表中不需要的数据时。

继续使用 SalesTarget 示例时,可以注意到,第一行为空白(没有数据),第二行的数据已不再需要。

删除前几行

若要删除这些多余的行,请在“开始”选项卡上选择“删除行”>“删除前几行”。

“删除前几行”功能

删除列

数据调整过程中的一个关键步骤是删除不必要的列。  越早删除这些列越好。 删除列的一种方式是在从数据源获取数据时限制列。 例如,如果使用 SQL 从关系数据库中提取数据,则需要在 SELECT 语句中使用列列表对提取的列进行限制。

在此过程的早期阶段删除列(而不是之后再进行删除)是最好的,特别是在表之间建立了关系的情况下。 删除不必要的列将有助于你专注于所需的数据,并有助于改进 Power BI Desktop 语义模型和报表的整体性能。

检查每一列,并询问自己是否真的需要里面所含的数据。 如果不打算在报表中使用这些数据,那么这些列对你的数据模型而言没有任何价值。 因此,应该删除这些列。  如果你的需求随着时间改变了,你之后可以随时添加这些列。

可以通过两种方式删除列。 第一种方法是选择要删除的列,然后在“开始”选项卡上选择“删除列”。

“删除列”功能

或者,可以选择要保留的列,然后在“开始”选项卡上选择“删除列”>“删除其他列”。

“删除其他列”功能

逆透视列

逆透视是 Power BI 一项有用的功能。 此功能可用于任意数据源中的数据,但你通常会在从 Excel 导入数据时使用此功能。 下面的示例显示了包含销售数据的示例 Excel 文档。

需要逆透视的 Excel 数据

尽管数据最初可能是有意义的,但难以通过这些数据创建从 2018 年到 2019 年合并的所有销售总额。 你的目标是通过三列在 Power BI 中使用这些数据:Month、Year 和 SalesAmount。

将数据导入到 Power Query 中时,它将类似下图所示。

原始 Power Query 数据

接着,将第一列重命名为 Month。 此列未被正确标记,因为在 Excel 中,该标头标记的是 2018 和 2019 列。 突出显示 2018 和 2019 列,在 Power Query 中选择“转换”,然后选择“逆透视”。

Power Query 中的逆透视结果

可以将 Attribute 列重命名为 Year,将 Value 列重命名为 SalesAmount。

逆透视简化了稍后针对数据创建 DAX 度量值的过程。 完成此过程后,即表示你现在创建了一种通过 Year 和 Month 列来切分数据的更简单的方式。

列透视

如果要调整的数据是平面数据(换句话说,即它包含许多详细信息,但未按任何方式整理或分组),结构的缺少可以会使你难以识别数据中的模式。

可以使用“透视列”功能将平面数据转换成一个表,其中包含列中每个唯一值的聚合值。 例如,你可能需要使用此功能来通过使用不同的数学函数对数据进行汇总,例如“Count”、“Minimum”、“Maximum”、“Median”、“Average”或“Sum”。

在 SalesTarget 示例中,可以对列进行透视以获取每一产品类别中产品子类别的数量。

在“转换”选项卡上,选择“转换”>“透视列”。

透视列

在显示的“透视列”窗口中,从“值列”列表中选择一列,例如“Subcategory name”。 展开高级选项,从“聚合值函数”列表中选择一个选项,例如“Count (All)”,然后选择“确定”。

聚合值函数

下图说明了“透视列”功能如何改变数据的组织方式。

“透视列”功能更改数据的整理方式

Power Query 编辑器会记录对数据进行调整所采取的全部步骤,步骤的列表会显示在“查询设置”窗格中。 如果进行了所需的全部更改,请选择“关闭并应用”关闭 Power Query 编辑器,将更改应用到你的数据模型。 然而,在选择“关闭并应用”之前,可以在 Power Query 编辑器中采取进一步的步骤来清理和转换数据。  本模块中随后将介绍这些额外的步骤。