Excel DAX - 运算符

DAX 是一种公式语言,由可在公式或表达式中使用的函数、运算符和值组成,以计算和返回一个或多个值。

您可以使用 DAX 运算符 来比较值、执行算术计算和连接字符串。 在本章中,您将了解 DAX 运算符以及如何使用它们。


DAX 运算符的类型

DAX支持以下类型的运算符 −


DAX 运算符优先顺序

您可以使用包含多个 DAX 运算符的 DAX 公式来组合多个值或表达式。 在这种情况下,最终结果将取决于执行操作的顺序。 DAX 为您提供默认的运算符优先顺序以及覆盖默认优先顺序的方法。

下表列出了 DAX 默认运算符优先级。

优先顺序 运算符 操作
1 ^ 求幂
2 Sign
3 * and / 乘除法
4 ! NOT
5 + and – 加减法
6 & 连接
7 =, <, >, <=, >= and <> 等于、小于、大于、小于或等于、大于或等于和不等于

DAX 表达式语法

您需要先了解 DAX 表达式语法以及如何使用操作数和运算符完成表达式求值。

  • 所有表达式始终以等号 (=) 开头。 等号表示后面的字符构成一个表达式。

  • 在等号右侧,您将拥有由 DAX 运算符连接的操作数。 例如,= 5 + 4 > 5。

    = 5 * 6 - 3.

  • 表达式总是从左到右读取,并且根据上一节中给出的 DAX 运算符优先级按该顺序进行计算。

  • 如果 DAX 运算符具有相同的优先级值,它们将从左到右进行评估。 例如,=5*6/10。 * 和 / 具有相同的先例顺序。 因此,表达式的计算结果为 30/10 = 3。

  • 如果表达式中的 DAX 运算符具有不同的优先级值,则按从左到右的优先级顺序计算它们。

    • = 5 + 4 > 7。 默认优先级是 + 首先 > 下一个。 因此,表达式是从左到右计算的。 首先计算 5 + 4,结果为 9,然后计算 9 > 5,结果为 TRUE。

    • = 5 * 6 - 3. 默认优先级是 * 第一和 - 接下来。 因此,表达式是从左到右计算的。 - 先计算 5 * 6 得到 30,然后计算 30 - 计算 3 得到 27。

    • = 2 * 5 - 6 * 3。默认优先级为 * 首先,* 接下来,然后 -。 因此,表达式的计算结果为 10 – 18,然后为 -8。 请注意,不是 10 - 6 得到 4,然后 4*3 得到 12。


使用括号控制DAX计算顺序

您可以更改 DAX 默认运算符优先顺序,方法是使用括号、对操作数和运算符进行分组以控制计算顺序。

例如,= 5 * 6 - 3 使用 DAX 默认运算符优先顺序计算为 27。 如果使用括号将操作数和运算符分组为 = 5 * (6 - 3),则首先计算 6 - 3,结果为 3,然后计算 5 * 3,结果为 15。

= 2 * 5 - 6 * 3 使用 DAX 默认运算符优先顺序计算为 -8。 如果使用括号将操作数和运算符分组为 = 2 * (5 - 6) * 3,则首先计算 5 - 6,结果为 -1,然后计算 2 * (-1) * 3,结果为 -6 .

如您所见,使用相同的操作数和运算符,根据对它们的分组方式可能会产生不同的结果。 因此,在DAX公式中使用DAX运算符时,需要注意计算顺序。


Excel 和 DAX 的区别

虽然 DAX 与 Excel 公式有相似之处,但两者之间存在某些显着差异。

  • DAX 比 Excel 更强大,因为它具有底层内存常驻计算引擎。

  • DAX 支持的数据类型比 Excel 多。

  • DAX 提供关系数据库、数据模型的其他高级功能,包括对日期和时间类型的更丰富支持。

在某些情况下,DAX 中的计算结果或函数行为可能与 Excel 中的不同。 这是由于以下方面的差异 −

  • 数据类型转换
  • 数据类型

数据类型转换的区别

在 DAX 中,当您有一个表达式 =value1 运算符 value2 时,两个操作数 value1 和 value2 应该是相同的数据类型。 如果数据类型不同,DAX 会先将它们隐式转换为通用数据类型。 有关详细信息,请参阅"DAX 语法"一章。

例如,您必须比较两个不同数据类型的操作数,比如从公式得出的数字,例如 =[Amount] * 0.08 和一个整数。 第一个数字可以是有很多小数位的小数,而第二个数字是整数。 那么 DAX 处理如下 −

  • 首先,DAX 会使用可以存储两种数字的最大数字格式将两个操作数转换为实数。

  • 接下来,DAX 将比较这两个实数。

相比之下,Excel 会尝试比较不同数据类型的值,而不是先将它们强制转换为通用数据类型。 因此,对于相同的比较表达式,您可能会在 DAX 和 Excel 中发现不同的结果。

数据类型的差异

DAX 和 Excel 中的运算符优先顺序相同。 但是,DAX 不支持 Excel 支持的运算符百分比 (%) 和数据范围。 此外,DAX 支持表作为数据类型,而在 Excel 中则不支持。

此外,在 Excel 公式中,您可以引用单个单元格、数组或单元格区域。 在 DAX 公式中,您不能引用其中任何一个。 DAX公式对数据的引用应按表、列、计算字段、计算列。

如果您从 Excel 复制公式并将其粘贴到 DAX 中,请确保 DAX 公式的正确性,因为 DAX 语法不同于 Excel 公式语法。 此外,即使函数在 DAX 和 Excel 中具有相同的名称,其参数也可能不同,函数的结果也可能不同。

您将在后续章节中了解有关所有这些的更多信息。