📜  Excel DAX-公式错误

📅  最后修改于: 2020-12-01 04:48:50             🧑  作者: Mango


使用错误的语法编写DAX公式时,可能会出错。计算字段和计算列可以包含需要特定类型参数的DAX函数。 DAX函数的参数可以是表,列或其他DAX函数(嵌套DAX函数)。由于DAX函数可以返回表和列,因此应注意检查是否将正确类型的参数传递给DAX函数。

DAX公式错误可以是语法错误或语义错误。错误可能在设计时或运行时发生。

在本章中,您将了解一些常见的DAX错误,其原因以及如何修复这些错误。

DAX错误:计算已中止

尝试使用DAX时间智能函数创建(设计时)或使用(运行时)计算字段时,可能会发生以下错误。在每种情况下,都会将不连续的日期范围传递给时间智能函数。

“ DAX错误:中止计算:MdxScript(实例)(00,0)函数’DATEADD’仅适用于连续的日期选择。”

运行时原因

当将具有DAX时间智能函数的计算字段放在数据透视表的“值”区域中,并且在选择年份之前,将日期字段(例如月份或季度)选择为切片器或过滤器时,会显示此错误。例如,如果您拥有三年数据(2014年,2015年和2016年),而您尝试仅使用3月而不选择Year(年份)字段,则这些值不是连续的数据值,并且会出现错误。

如何在运行时修复错误?

在上面的示例中,

  • 首先将Year添加为切片器或过滤器,然后选择年份。

  • 然后,将Month或Quarter添加为切片器或过滤器。

  • 然后,选择一个或多个月份或季度以对所选年份进行切片或过滤。

设计时原因

DAX时间智能功能需要为date参数指定一个date列。日期列必须具有连续的日期范围。如果日期列中的一个或多个行中的日期值与上一行和后续行中的数据值不连续,则可以返回此错误。

如果从数据源中导入了包含日期的表,请记住,许多组织都运行特殊的过程,这些过程会扫描数据库中的表以获取无效值并将其替换为特定值。也就是说,如果找到了无效的日期,则会为其分配一个特定的日期值,该值可能与该列中的其他数据值不连续。

如何在设计时解决此错误?

执行以下操作以在设计时纠正错误-

  • 如果您的日期表是从数据源导入的,请使用“ Power Pivot”窗口中的“刷新”重新导入在源中找到的所有更改。

  • 检查日期列中的值,以确保它们是连续的。如果发现任何值不正确,则必须在源处更正该值,并且必须刷新日期表。

  • 在数据模型中创建一个单独的日期表和日期列。在导致错误的公式中,将新的date列指定为date参数。日期表很容易创建并添加到数据模型中。

DAX语义错误-示例

以下DAX错误是语义错误-

“函数’CALCULATE’已在用作表过滤器表达式的真假表达式中使用。这是不允许的。”

原因

当无法在计算字段或计算列表达式的上下文中使用一个或多个过滤器表达式时,会出现此错误。

在大多数情况下,此错误是由指定为DAX CALCULATE函数的参数的过滤器表达式引起的。 CALCULATE函数需要定义为布尔表达式或表表达式的过滤器。

如何修复此类错误?

您可以使用DAX FILTER函数将过滤器定义为表表达式,然后将其用作DAX CALCULATE函数的参数来修复此类错误。