- Excel DAX 教程
- DAX - 首页
- DAX - 概述
- DAX - 计算列
- DAX - 计算字段/度量值
- DAX - 编辑计算字段
- DAX - 删除计算字段
- DAX - 语法
- DAX - 运算符
- DAX - 标准参数
- DAX - 函数
- DAX - 理解DAX函数
- DAX - 计算上下文
- DAX - 公式
- 更新DAX公式的结果
- 更新数据模型中的数据
- DAX - 重新计算DAX公式
- DAX公式重新计算故障排除
- DAX - 公式错误
- DAX - 时间智能
- DAX - 筛选器函数
- DAX - 场景
- 执行复杂计算
- DAX - 使用文本和日期
- 条件值和错误测试
- DAX - 使用时间智能
- DAX - 排名和比较值
- Excel DAX有用资源
- DAX - 快速指南
- DAX - 有用资源
- DAX - 讨论
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中函数的名称相同,其参数也可能不同,函数的结果也可能不同。
您将在后续章节中了解更多关于这些内容。