深入解析 Power BI 中的 Power Query 编辑器:数据转换与清洗的艺术

作为一名数据分析师或业务 intelligence 爱好者,你是否曾面对过杂乱无章的原始数据感到无从下手?或者在 Excel 中手动复制粘贴、清洗数据直到深夜?别担心,今天我们将一起深入探索 Power BI 中最强大的幕后英雄——Power Query 编辑器。在这个教程中,我们将不仅是学习如何点击按钮,更是要掌握一套系统化的数据清洗与转换逻辑,这将彻底改变你的数据处理工作流。

什么是 Power Query 编辑器?

Power Query 编辑器是 Power BI Desktop 中用于数据获取、清洗和转换的核心引擎。你可以把它想象成一个“数据厨房”的备菜区:在这里,我们将原材料(原始数据)进行清洗、去皮、切片(转换),最终烹饪成美味的佳肴(数据模型),供前台(报表展示)使用。

它不仅仅是一个工具,更是一种语言(M 语言)的图形化界面。当我们从互联网、Excel 文件、SQL 服务器或任何其他来源上传数据时,上传的数据往往不是我们理想的格式。数据转换有助于通过删除不必要的行、拆分列和更改格式来清理和组织数据,然后才能将其加载到 Power BI 中进行分析。值得注意的是,Power Query 编辑器不仅仅是桌面工具的一部分,它在 Power BI 在线服务(Power BI Service)中同样起着关键作用,尽管主要的转换工作通常是在 Desktop 端完成的。

启动 Power Query 编辑器

让我们从最基础的开始。要打开 Power Query 编辑器,我们通常有两种方式:

  • 加载数据时:当你点击“获取数据”并选择源后,通常会直接跳转到编辑器。
  • 手动启动:在 Power BI Desktop 的 主页 选项卡下,点击 转换数据 按钮。

!lauch.pngLaunching Power Query Editor

点击后,一个独立的窗口将会弹出。在这里,你不会看到任何可视化图表,只有纯粹的数据逻辑。别被这枯燥的界面吓倒,这才是赋予数据灵魂的地方。

导入数据与实战准备

为了让我们接下来的探讨更具实际意义,我们需要一份“实战演练”的数据。在 Power Query 编辑器中,你可以点击 主页 选项卡下的 新建源 来从 Excel、SQL 或 Web 等不同来源添加数据。

在本次演示中,我们将使用一个名为 My movie list.xlsx 的 Excel 文件。这是一份包含电影信息的清单,格式如下:

!list.pngMy Movie List.xlsx

在查询编辑器上加载此数据后,它显示如下:

!list-2.pngExcel sheet in the power query editor

注意到了吗?原始数据往往包含标题行、空行,或者列名不够直观。现在,既然我们已经将 Excel 表格和数据导入到了 Power Query 编辑器中,让我们开始执行真正的“手术”操作。

深入常见的数据转换操作

1. 重命名:让数据说话

Power Query 编辑器为我们提供了极其灵活的重命名功能。清晰、规范的命名是数据建模的最佳实践。我们可以重命名数据源、表、列和查询。不要小看这一步,一个名为 “Column1” 的列和名为 “CustomerFullName” 的列,在后期维护时的难度是天壤之别。

#### 重命名步骤与查询

在 Power Query 的左侧面板,你可以看到所有的“查询”。每个查询代表一组数据表。在 查询设置 窗格下,有一个“属性”区域。

  • 操作:在“查询设置”窗格的“名称”框中,直接输入新名称。例如,我们将默认的 “Sheet1” 重命名为 “Movie Data”。这不仅影响左侧面板的显示,也会决定在数据模型中该表的名称。

![email protected]Renamed source to "Movie Data"

#### 重命名列

列名应当具有描述性且不含特殊字符(尽管 Power Query 允许特殊字符,但在 DAX 编写时可能会带来麻烦)。

  • 操作:右键单击要更改名称的列标题,然后选择 重命名。在这里,我们将列 “TITLE” 重命名为 “MOVIE NAME”。这不仅仅是个名字,它是我们在编写 DAX 公式时将要引用的字段。

!rename-b.pngRenamed column to "MOVIE NAME"

#### 深度理解:M 语言背后的变化

当你进行重命名操作时,注意观察右侧的 公式栏。你会看到类似这样的代码:

= Table.RenameColumns({"TITLE", "MOVIE NAME"})

这是 Power Query 自动生成的 M 语言代码。每一个我们在界面上的点击,都会转化为这样的一行行代码。这意味着你的数据清洗过程是可重复可追溯的。

2. 将第一行作为标题

很多时候,我们从数据库导出的 CSV 文件,第一行其实是描述信息,真正的表头在第二行;或者数据本身没有表头,第一行就是数据。

  • 操作:在功能区的 转换 选项卡下,找到 将第一行用作标题

!40.pngSet First Row as Headers

  • 技术细节:这个操作实际上做了两件事:提升第一行作为列名,并删除原来的第一行(因为它现在变成了列名,不再是数据行)。如果这一步做错了,你可以随时点击左侧“应用的步骤”中的叉号来回滚,这在 Excel 中是无法做到的。

3. 更改数据类型:避免分析错误

这是初学者最容易踩的坑。如果你的“销售额”列被识别为“文本”类型,那么你无法对其进行求和计算,只能进行计数。在 Power Query 中确定正确的数据类型是至关重要的。

常见的数据类型包括:

  • Decimal Number (十进制数):适用于货币、百分比。
  • Whole Number (整数):适用于ID、计数。
  • Text (文本):适用于名称、描述。
  • Date/Time (日期/时间):适用于时间序列分析。
  • 操作:右键单击该列,选择 更改类型 并选择适当的数据类型。例如,我们将 “RANK” 列从整数 (1, 2, 3) 更改为小数 (1.2, 2.3, 3.4) 以便更精确地展示评分。

!20.pngChanged data type to "Decimal Number"

💡 实战见解: 尽量在 Power Query 编辑器中完成数据类型的更改,而不是在数据视图中。这样做可以减少模型在加载时的计算压力,并且避免了后续刷新数据时类型重置的问题。

4. 格式操作:文本的精细化处理

脏数据往往充斥着空格、大小写不一等问题。这会导致在进行关联查询或筛选时出现错误(例如 “Apple” 和 “apple ” 被视为两个不同的值)。

转换 选项卡中的 格式 功能提供了强大的文本处理能力:

  • 大写/小写:统一文本格式。
  • 修剪:这是最常用的功能之一,它不仅能删除前导和尾随空格,还能处理文本中间的不可打印字符。
  • 清除:删除非打印字符,通常用于处理从旧系统导出的数据。
  • 添加前缀/后缀:用于快速给数据打标签,比如给所有ID加上 “EMP-” 前缀。

要使用这些功能,只需选中相关列,单击对应选项即可。在此示例中,我们对电影标题应用了 大写 转换,以确保视觉上的一致性。

!30.pngFormatting the text to UPPERCASE

M 语言代码示例:

当你点击“大写”时,后台生成的逻辑如下:

= Table.TransformColumns({{"MOVIE NAME", Text.Upper, type text}})

这行代码告诉 Power BI:在当前表中,找到 “MOVIE NAME” 列,对其应用 Text.Upper 函数,并将结果类型设定为文本。理解这一点,你就能利用 M 语言做更复杂的自定义转换了。

5. 删除操作:精简数据

在数据准备阶段,我们需要遵循“垃圾进,垃圾出”的原则。及时剔除无用数据至关重要。

主页 选项卡中的 减少行 功能允许我们在 Power BI 中执行以下操作:

  • 删除前几行/后几行:用于去除页眉或页脚的签名信息。
  • 保留前几行:用于快速获取 Top N 数据进行测试。
  • 删除重复项:基于选中的列去重。注意,这是基于当前列的值去重,保留第一个出现的行。
  • 筛选行:这是最强大的删除方式。例如,我们要删除所有“排名”为空的数据,只需点击列头的下拉箭头,取消勾选 “null”。

!50.pngRemoving rows

⚠️ 性能优化建议:

如果你的数据源有数百万行,尽量在 查询设置 的“应用的步骤”中尽早执行“删除行”或“筛选行”操作。Power Query 的执行顺序是线性的,提前减少数据量可以显著加快后续转换步骤的执行速度。

实战案例:构建一个完整的数据转换流程

让我们把上述知识点串联起来。假设我们要分析这份电影列表,我们需要完成以下任务:

  • 规范化命名:将查询命名为 “MoviesAnalysis”。
  • 清洗标题:将首行设为标题,并将标题转为大写。
  • 数据类型修正:确保 “RANK” 是数字,“RELEASE DATE” 是日期。
  • 剔除无效数据:移除排名为空的行。

代码逻辑与最佳实践:

在 Power Query 编辑器左侧的 查询设置 面板中,你可以看到所有步骤的记录。这被称为“应用的步骤”。

// 这只是一个逻辑演示,实际代码由编辑器自动生成
// 源 = Excel.Workbook(File.Contents("C:\My movie list.xlsx"), null, true),
// 导入的表 = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
// 提升的标题 = Table.PromoteHeaders(导入的表, [PromoteAllScalars=true]),
// 大写转换 = Table.TransformColumns(提升的标题,{{"MOVIE NAME", Text.Upper, type text}}),
// 类型更改 = Table.TransformColumnTypes(大写转换,{{"RANK", Int64.Type}, {"RELEASE DATE", type date}}),
// 筛选的行 = Table.SelectRows(类型更改, each ([RANK]  null))

通过这种方式,我们建立了一个自动化的 ETL(提取、转换、加载)流程。当下个月你拿到了新的 “My movie list v2.xlsx” 时,你只需要点击“刷新”,所有的清洗步骤都会自动在新数据上执行一遍。这才是 Power BI 真正的威力所在——一次构建,永久复用

总结与下一步

在这篇文章中,我们一起深入探讨了 Power BI 中的 Power Query 编辑器。我们从启动编辑器的基础操作讲起,逐步深入到重命名、标题提升、类型更改、格式清洗以及行删除等核心功能。正如你所见,Power Query 编辑器不仅仅是数据清洗的工具,它是构建稳健数据模型的基石。

关键要点:

  • 结构优于混乱:始终先制定好清洗的步骤顺序。
  • 类型即一切:在加载模型前确定正确的数据类型。
  • 步骤可逆:利用“应用的步骤”面板随时回退或修改逻辑。

下一步建议:

现在你已经掌握了基础的数据清洗,我建议你尝试探索更高级的功能,例如 合并查询(类似于 SQL 的 JOIN)和 追加查询(类似于 SQL 的 UNION)。此外,试着在高级编辑器中写一点简单的 M 代码,你会发现一个全新的世界。

希望这篇指南能帮助你从繁琐的手动数据处理中解放出来。现在,打开你的 Power BI Desktop,试着去加载一份你手头一直懒得处理的“脏数据”,用今天学到的技巧去驯服它吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/30493.html
点赞
0.00 平均评分 (0% 分数) - 0