Excel DAX - 运算符



DAX 是一种公式语言,包含函数、运算符和值,可用于公式或表达式中,计算并返回一个或多个值。

您可以使用DAX运算符来比较值、执行算术计算和连接字符串。在本章中,您将学习DAX运算符及其使用方法。

DAX运算符类型

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

DAX运算符优先级顺序

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

DAX默认运算符优先级如下表所示。

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

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中的运算符优先级顺序相同。但是,Excel支持的运算符百分比 (%) 和数据范围不受DAX支持。此外,DAX支持表作为数据类型,而Excel则不支持。

此外,在Excel公式中,您可以引用单个单元格、数组或单元格范围。在DAX公式中,您不能引用任何这些。DAX公式引用的数据应该是表、列、计算字段和计算列。

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

您将在后续章节中了解更多关于这些内容。

广告