Excel DAX - 公式错误



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

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

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

DAX错误:计算中止

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

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

运行时原因

当将包含DAX时间智能函数的计算字段放置在透视表的值区域中,并且在选择年份之前选择月份或季度等日期字段作为切片器或筛选器时,可能会显示此错误。例如,如果您有2014年、2015年和2016年三年的数据,并且您尝试仅使用月份“三月”而不选择“年份”字段,则这些值不是连续数据值,您将收到错误。

如何在运行时修复错误?

在上面的例子中,

  • 首先添加“年份”作为切片器或筛选器并选择年份。

  • 然后,添加“月份”或“季度”作为切片器或筛选器。

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

设计时原因

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

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

如何在设计时修复此错误?

请执行以下操作以在设计时修复错误:

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

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

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

DAX语义错误 - 示例

以下DAX错误是语义错误:

“在用作表筛选器表达式的真假表达式中使用了函数“CALCULATE”。这是不允许的。”

原因

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

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

如何修复此类错误?

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

广告