📜  Excel DAX-运算符

📅  最后修改于: 2020-12-01 04:41:59             🧑  作者: Mango


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

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

DAX运算符的类型

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

DAX操作员优先顺序

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

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

Precedence Order Operator(s) Operation
1 ^ Exponentiation
2 Sign
3 * and / Multiplication and Division
4 ! NOT
5 + and – Addition and Subtraction
6 & Concatenation
7 =, <, >, <=, >= and <> Equal to, Less than, Greater than, Less than or equal to, Greater than or equal to and Not equal to

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。默认优先级是*首先,*接下来和-。因此,表达式的计算结果为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中具有相同的名称,其参数也可能不同,并且函数的结果也可能不同。

您将在随后的章节中了解所有这些信息。