列和度量值引用

作为数据建模器,DAX 表达式将引用模型列和度量值。 列和度量值始终与模型表关联,但这些关联是不同的,因此我们对如何在表达式中对它们进行引用有不同的建议。

列是表级别对象,列名称在表中必须是唯一的。 因此,可以在模型中多次使用相同的列名称,前提是它们属于不同的表。 还有一个规则:列名称不能与同一个表中存在的度量值名称或层次结构名称同名。

通常,DAX 不会对列强制使用完全限定的引用 。 完全限定的引用表示表名称在列名称之前。

下面是仅使用列名称引用的一个计算列定义示例。 “销售额”和“成本”列都属于名为“订单”的表 。

Profit = [Sales] - [Cost]

可以用完全限定的列引用来重写相同的定义。

Profit = Orders[Sales] - Orders[Cost]

但有时,当 Power BI 检测到歧义时,将要求使用完全限定的列引用。 输入公式时,红色的波浪和错误消息会发出警报。 此外,某些 DAX 函数(如 LOOKUPVALUE DAX 函数)要求使用完全限定的列。

建议始终完全限定列引用。 建议部分中列明了原因。

度量值

度量值是模型级别对象。 因此,度量值名称在模型中必须是唯一的。 但是,在“字段”窗格中,报表作者将看到与单个模型表关联的每个度量值 。 此关联是出于装饰原因设置的,你可以通过设置度量值的“主表”属性来对其进行配置 。 有关详细信息,请参阅 Power BI Desktop 中的度量值(组织度量值)

可以在表达式中使用完全限定的度量值。 DAX intellisense 甚至会提供建议。 但是,没必要这样做,也不建议这样做。 如果更改了度量值的主表,则使用完全限定的度量值引用的任何表达式都将中断。 然后需要对每个中断的公式进行编辑,以删除(或更新)度量值引用。

建议不要限定度量值引用。 建议部分中列明了原因。

建议

我们的建议简单易记:

  • 始终使用完全限定的列引用
  • 一定不要使用完全限定的度量值引用

原因如下:

  • 公式输入:将接受表达式,因为没有任何不明确的引用需要解析。 此外,你还将满足需要完全限定的列引用的 DAX 函数的要求。
  • 稳定性:即使更改了度量值主表属性,表达式仍将继续工作。
  • 可读性:表达式是快速的且易于理解,你将根据是否为完全限定来快速确定它是列还是度量值。