处理 Power Query 中的错误
在 Power Query 中,可能会遇到两种类型的错误:
- 步骤级错误
- 单元格级错误
本文提供了有关如何修复每个级别可能发现的最常见错误的建议,并介绍了每个级别的错误原因、错误消息和错误详细信息。
步骤级别错误
步骤级错误可防止查询加载并在黄色窗格中显示错误组件。

- 错误原因:冒号前的第一节。 在前面的示例中,错误原因是 Expression.Error。
- 错误消息:紧随原因之后的部分。 在前一个示例中,错误消息是未找到表中名为“Column”的列。
- 错误详细信息:详细信息:字符串后面的部分。 在前面的示例中,错误详细信息为 Column。
Power Query Online 显示略有不同的详细信息。 错误详细信息仍然是 Column,但联机错误消息还包含错误原因(Expression.Error)和错误代码(10224)。

常见步骤级错误
在所有情况下,建议仔细查看错误原因、错误消息和错误详细信息,以了解导致错误的原因。 可以选择“ 显示详细信息 ”按钮(如果可用),以显示有关错误的更多详细信息。
无法找到数据源 – DataSource.NotFound
当用户无法访问数据源、用户没有访问数据源的正确凭据或源移动到其他位置时,通常会发生此错误。
示例:用户 A 创建了一个查询,其数据来自 D 盘中的文本文件。用户 A 将查询共享给用户 B,但用户 B 的环境中没有这个 D 盘路径。用户 B 执行查询时会得到 DataSource.NotFound 错误。

可能的解决方案:可以将文本文件的文件路径更改为两个用户都有权访问的路径。 作为用户 B,可以将文件路径更改为同一文本文件的本地副本。
未找到该表的列
当步骤直接引用查询中不存在的列名时,通常会触发此错误。
示例:你有一个来自文本文件的查询,其中一个列名为 Column。 在查询中,有一个步骤可将该列重命名为 “日期”。 但原始文本文件中发生了更改,并且它不再具有列标题 名称 Column,因为它已手动更改为 日期。 Power Query 找不到名为 Column 的列标题,因此无法重命名任何列。 它显示下图中显示的错误。

可能的解决方案:解决方法取决于你希望执行的操作。在此示例中,文本文件已经提供了正确的 Date 列标题,因此只需删除重命名列的步骤,查询就可以继续运行。
其他常见步骤级错误
在多个数据源之间合并或追加数据时,可能会收到 Formula.Firewall 错误,如下图所示。
此错误因各种原因而发生,例如数据源之间的数据隐私级别或合并这些数据源的方式。 有关如何诊断此问题的详细信息,请转到 数据隐私防火墙。
单元格级错误
单元格级错误不会阻止查询加载,而是在单元格中将错误值显示为 Error 。 选择单元格中的空白会显示数据预览下方的错误窗格。

注释
数据分析工具能够利用列质量功能,使您更容易识别单元格级别的错误。 有关详细信息,请转到 数据分析工具。
在单元格级别处理错误
遇到任何单元格级错误时,Power Query 会提供一组函数来处理这些错误,方法是删除、替换或保留错误。
后续部分使用同一个示例查询作为起点。该查询具有 Sales 列,其中一个单元格因类型转换失败而出错:它的值是 NA,将列转换为整数时,Power Query 无法将 NA 转成数字,因此显示下面的错误。

删除错误
若要删除 Power Query 中出现错误的行,请先选择包含错误的列。 在“ 开始 ”选项卡上的 “减少行 ”组中,选择“ 删除行”。 从下拉菜单中选择“ 删除错误”。

该操作的结果如下表所示。

替换错误
如果希望用固定值替换错误,而不是删除出错的行,也可以这样处理。先选择包含错误的列,再在“转换”选项卡的“任意列”组中选择“替换值”,并从下拉菜单选择“替换错误”。

在 “替换错误 ”对话框中,输入值 10 ,因为你想要将所有错误替换为值 10。

该操作的结果如下表所示。

保留错误
即使未修复错误,Power Query 也可以用作一个很好的审核工具,以识别任何出现错误的行。 这种情况下,保留错误可能会有所帮助。 若要保留具有错误的行,请首先选择包含错误的列。 在“ 开始 ”选项卡上的“ 减少行 ”组中,选择“ 保留行”。 从下拉菜单中,选择“ 保留错误”。

该操作的结果如下表所示。

常见单元格级错误
与任何步骤级错误一样,我们建议仔细查看单元格级别提供的错误原因、错误消息和错误详细信息,以了解导致错误的原因。 以下部分讨论了 Power Query 中一些最频繁的单元格级错误。
数据类型转换错误
通常在更改表中列的数据类型时触发。 列中找到的某些值无法转换为所需的数据类型。
示例:你有一个包含名为 Sales 的列的查询。 该列中的一个单元格具有 NA 作为单元格值,而其余的单元格将整数作为值。 你决定将列的数据类型从文本转换为整数,但具有 NA 值的单元格会导致错误。

可能的解决方案:识别出错的行后,可以修改数据源,用正确的值替代 NA;也可以应用“替换错误”操作,为因 NA 导致的错误提供替代值。
操作错误
尝试执行不受支持的操作时(例如将文本值与数值相乘),就会发生错误。
示例:你想创建一个自定义列,将文本 Total Sales: 与 Sales 列中的值连接起来。错误的原因是连接运算只支持文本值,不支持直接连接数值。

可能的解决方案:在创建自定义列之前,请将 Sales 列的数据类型更改为文本。

嵌套值显示为错误
使用包含嵌套结构化值(如表、列表或记录)的数据时,有时可能会遇到以下错误:
Expression.Error: We cannot return a value of type {value} in this context
Details: In the past we would have returned a text value of {value}, but we now return this error. Please see https://go.microsoft.com/fwlink/?linkid=2099726 for more information.
这些错误通常有两个原因:
- 数据隐私防火墙缓冲数据源时,嵌套的非标量值会自动转换为错误。
- 当
Any类型的列包含非标量值时,这些值会在加载到 Excel 工作簿或 Power BI Desktop 数据模型的过程中报错。
可能的解决方案:
- 删除出错的列,或为这些列设置
Any以外的数据类型。 - 将所涉及的数据源的隐私级别更改为允许它们组合在一起,而无需缓冲。
- 在执行合并之前平展表,以消除包含嵌套结构化值的列(例如表、记录或列表)。














暂无评论内容