常见的数据挑战和 Power Query 转换
需要清除的导出数据的一个常见示例是汇总包含空行或空白行的数据的文件。
空白行或空行
将此类型的数据集引入 Power Query 时,这些空白或空单元格的值将显示为 null。
如果将鼠标悬停在列标题下面的状态栏上,“列分析”状态栏将显示与该列数据相关的信息。 在下例中,表包含 22 个空值,指示 43% 的记录包含“Region”列的空白值。 根据小计显示的位置,用户可以向上或向下填充一个列(或同时填充多个列)。
如果对多个列执行此操作,首先需要通过按下 Ctrl 键同时左键单击每个需要的列来选择要更新的列标题。 选定列后,右键单击标题可查看列菜单编辑选项。 选择“填充”,然后选择是向下还是向上应用值。 选择“向下”选项等效于查找非空值,然后将其复制到每个空白单元格中,直到找到新值;选择“向上”选项则是反向操作。
注意
“填充”>“向上/向下”选项依赖于数据顺序。 某些数据库导入函数将异步流式传输数据,这意味着数据的顺序可能会不一致。
交叉表格式
采用交叉表格式的表(例如,区域或产品行标题和日期时间列标题)在电子表格和报表中很常见。 从外观上看,交叉表格式以一种易于大众理解和吸收信息的方式组织数据。 虽然这种格式可能对用户有利,但并不适合用于数据建模。 Power Query 包含用于逆透视数据的工具,可将其从简短而宽的表转置为长而窄的表。 长而窄的数据集更有利于为数据模型创建度量。
“逆透视”功能在 Power Query 函数中引入了一种关键概念,这些功能涉及如何选择要对其执行操作的列,无论是在已选的列上还是在未选列上。 由创建者决定哪种方法适合于数据集和相应的情况。 导入数据集后,选择包含行标题的列。 转到功能区上的“转换”选项卡,选择“逆透视列”下拉列表,然后选择“逆透视其他列”。 此过程将生成一个属性和一个值列,可以通过双击列标题进行重命名。
清理和格式化数据
主菜单具有包含常见数据清理技术的 UI 按钮,如以下屏幕截图所示。
下图是“拆分列”函数的一个示例(它与 Excel 中的“文本到列”类似)。
若要拆分列,请执行以下步骤:
选择想要拆分的列。
选择“拆分列”下拉列表。
选择“按分隔符”>“自定义”,然后输入正斜杠 (/)。
选择“确定”。
丰富你的数据
可以使用 Power Query 添加补充字段以实现更深入的分析。 “添加列”菜单包含用于增强当前数据集的各种方式。 使用“添加列”菜单上的按钮操作时,操作结果将作为新列添加到“Power Query 编辑器”窗口的数据“预览”区域。
使用“示例中的列”功能,你可以通过为新列提供一个或多个示例值向数据模型添加新列。 可以通过所选内容创建新列示例,或基于表中的所有现有列提供输入。
选择此功能的实际原因在于它:
用户友好:你只需输入预期结果的几个示例,Power Query 将为你完成其余工作。
快速:即使你知道如何编写转换,输入几个示例的速度还是要快于开发和测试文本操作逻辑。
使用“添加条件列”功能,你可以定义 IF-THEN-ELSE 条件,以便基于一系列具有用户友好向导的逻辑检查来显示给定列的值,而无需进行括号管理。
使用“自定义列”功能,可以直接编写 M 表达式来创建新列。 对于“示例中的列”或简单的“条件列”中的文本操作以外的其他复杂的添加操作,此选项很有用。 使用此功能,你可以利用无法从功能区访问的 M 函数,利用丰富的智能,并充分发挥你的创造力。
注意
Power Query 编辑器中的每个按钮选择都将在“查询设置”窗格的“已应用步骤”中创建一个 M 表达式作为一个步骤。 M 是 Power Query 编辑器的公式语言。 虽然使用 Power Query 并不需要学习 M 公式语言,但它很强大且很有用。