相关文章推荐
千年单身的柚子  ·  Configure the Windows ...·  1 年前    · 
豪气的枕头  ·  Electron App 在 MacOS ...·  2 年前    · 
活泼的手术刀  ·  Cannot connect to ...·  2 年前    · 

本文提供了有关如何修复可能在每个级别发现的最常见错误的建议,并介绍了每个级别的错误原因、错误消息和错误详细信息。

步骤级别错误

步骤级错误会阻止加载查询,并在黄色窗格中显示错误组件。

  • 错误原因 :冒号前的第一节。 在上面的示例中,错误原因是 Expression.Error
  • 错误消息 :原因后面的部分。 在上面的示例中,错误消息为 找不到表的列“Column”。
  • 错误详细信息 :紧接在 Details: 字符串后面的部分。 在上面的示例中,错误详细信息为 Column
  • 常见步骤级别错误

    在所有情况下,建议仔细查看错误原因、错误消息和错误详细信息,以了解导致错误的原因。 可以选择“ 转到错误 ”按钮(如果可用)以查看发生错误的第一步。

    找不到源 - DataSource.Error

    当用户无法访问数据源、用户没有访问数据源的正确凭据或源已移到其他位置时,通常会发生此错误。

    示例 :您具有位于驱动器 D 中的文本磁贴的查询,该查询由用户 A 创建。用户 A 与用户 B 共享该查询,用户 B 无权访问驱动器 D。当此人尝试执行查询时,他们会收到 DataSource.Error ,因为其环境中没有驱动器 D。

    可能的解决方案 :可以将文本文件的文件路径更改为两个用户都有权访问的路径。 作为用户 B,可以将文件路径更改为同一文本文件的本地副本。 如果错误窗格中提供了 “编辑设置” 按钮,则可以选择它并更改文件路径。

    找不到表的列

    当步骤直接引用查询中不存在的列名时,通常会触发此错误。

    示例 :您有一个来自某个文本文件的查询,其中一个列名为 Column 。 在查询中,有一个步骤将该列重命名为 Date 。 但是原始文本文件中发生了更改,并且它不再具有名为 Column 的列标题,因为它已手动更改为 Date 。 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 值提供值。

    尝试应用不支持的操作(例如将文本值乘以数值)时,会发生错误。

    示例 :要通过创建包含短语“总销售额:”的文本字符串来为查询创建自定义列,该短语与 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 数据类型。
  • 将涉及的数据源的隐私级别更改为允许它们在不缓冲的情况下进行组合的隐私级别。
  • 在执行合并之前平展表,以消除包含嵌套结构化值的列 (,例如表、记录或列表) 。
  •