Excel DAX 运算符


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

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

DAX 运算符的类型


DAX 支持以下类型的算子:

  • DAX 算术运算符
  • DAX 比较运算符
  • DAX 文本连接运算符
  • DAX 逻辑运算符

DAX 运算符优先顺序


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

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

优先顺序 操作员 手术
1 ^ 求幂
2 Sign
3 * and / 乘法和除法
4 ! NOT
5 + and – 加减
6 & 级联
7 =、<、>、<=、>= 和 <> 等于、小于、大于、小于或等于、大于或等于和不等于

DAX 表达式语法


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

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

  • 在等号的右侧,你将通过 DAX 运算符连接操作数。例如,= 5 + 4 > 5。

    = 5 * 6 - 3。

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

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

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

    • = 5 + 4 > 7。默认优先级为 + first 和 > next。因此,表达式是从左到右计算的。 - 首先计算 5 + 4,得到 9,然后计算 9 > 5,得到 TRUE。

    • = 5 * 6 - 3。默认优先级是 * first 和 - next。因此,表达式是从左到右计算的。 - 首先计算 5 * 6,得到 30,然后计算 30 - 3,得到 27。

    • = 2 * 5 - 6 * 3。默认优先级是 * first,* next 然后 -。因此,表达式的计算结果为 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 中具有相同的名称,它的参数也可能不同,函数的结果也可能不同。

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