Table of Contents

计算对象需要表达式

概览

此最佳做法规则会识别缺少 DAX 表达式的度量值、计算列和计算项。 所有计算对象都必须包含有效且非空的表达式,才能正常运行,并避免在模型部署和查询执行期间发生错误。

  • 类别:错误预防

  • 严重性:高(3)

适用范围

  • 度量值
  • 计算列
  • 计算项

为何这很重要

没有表达式的计算对象会导致严重故障:

  • 模型验证错误:模型在保存或部署时将无法通过验证
  • 查询失败:在查询中尝试使用该对象将产生错误
  • 依赖关系中断:引用该对象的其他度量值或计算将失败
  • 部署受阻:Power BI Service 和 Analysis Services 会拒绝包含空表达式的模型
  • 意外行为:该对象可能会出现在字段列表中,但不返回任何结果

空表达式通常源于对象创建未完成、复制/粘贴操作,或以编程方式生成模型时出现错误。

该规则何时触发

当以下任一对象的表达式为空或仅包含空白字符时,将触发此规则:

string.IsNullOrWhiteSpace(Expression)

适用于:

  • 度量值:应包含 DAX 聚合或计算
  • 计算列:应包含行上下文的 DAX 表达式
  • 计算项:应包含用于修改基础度量值的 DAX 表达式

如何修复

手动修复

  1. TOM Explorer 中,找到相应的度量值、计算列或计算项
  2. 双击打开 DAX编辑器
  3. 输入有效的 DAX 表达式
  4. 验证语法并保存

常见原因

原因 1:创建未完成

对象已创建,原本打算稍后再定义,但最后忘了。

原因 2:基于模板创建

脚本或模板创建了对象,但未包含表达式。

原因 3:复制操作失败

复制了对象,但表达式没有一并复制过来。

示例

修复前

度量值: [Total Revenue]
  Expression: [empty]
  FormatString: $#,0.00

查询时出错:"度量值 '[Total Revenue]' 的表达式无效。"

修复后

度量值: [Total Revenue]
  Expression: SUM('Sales'[Revenue])
  FormatString: $#,0.00

结果:度量值可正常工作,并返回汇总后的收入。

兼容级别

本规则适用于兼容级别为 1200 及以上的模型。