Excel DAX – 运算符
Excel DAX – 运算符
DAX 是一种公式语言,由可用于公式或表达式的函数、运算符和值组成,用于计算和返回一个或多个值。
您可以使用DAX 运算符来比较值、执行算术计算和连接字符串。在本章中,您将了解 DAX 运算符以及如何使用它们。
DAX 运算符的类型
DAX 支持以下类型的运算符 –
DAX 运算符优先顺序
您可以拥有一个 DAX 公式,其中许多 DAX 运算符结合了多个值或表达式。在这种情况下,最终结果将取决于执行操作的顺序。DAX 为您提供默认运算符优先顺序以及覆盖默认优先顺序的方法。
下表列出了 DAX 默认运算符优先级。
Precedence Order | 操作员 | 手术 |
---|---|---|
1 | ^ | 求幂 |
2 | —— |
符号 |
3 | * 和 / | 乘法和除法 |
4 | ! | 不是 |
5 | + 和 – | 加减 |
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 中具有相同的名称,其参数也可能不同,函数的结果也可能不同。
您将在后续章节中了解更多关于所有这些的信息。