- 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 | ! | 不是 |
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。默认优先级是 * 第一个和 - 接下来。因此,表达式是从左到右计算的。- 首先计算 5 * 6,得到 30,然后计算 30 - 3,得到 27。
= 2 * 5 - 6 * 3。默认优先级是 * 首先, * 接下来,然后 -。因此,表达式的计算结果为 10 – 18,然后为 -8。请注意,不是 10 - 6 得到 4,然后 4*3 得到 12。
使用括号控制 DAX 计算顺序
您可以通过使用括号来更改 DAX 默认运算符优先顺序,对操作数和运算符进行分组以控制计算顺序。
例如,按照 DAX 默认运算符优先顺序,= 5 * 6 - 3 的计算结果为 27。如果使用括号将操作数和运算符分组为 = 5 * (6 - 3),则首先计算 6 - 3,结果为 3,然后计算 5 * 3,结果为 15。
根据 DAX 默认运算符优先顺序,= 2 * 5 - 6 * 3 的计算结果为 -8。如果使用括号将操作数和运算符分组为 = 2 * (5 - 6) * 3,则首先计算 5 - 6,结果为 -1,然后计算 2 * (-1) * 3,结果为 -6 。
正如您所看到的,对于相同的操作数和运算符,通过对它们进行分组的方式可能会产生不同的结果。因此,当您在 DAX 公式中使用 DAX 运算符时,应注意计算顺序。
Excel 和 DAX 之间的差异
尽管 DAX 与 Excel 公式有相似之处,但两者之间存在某些显着差异。
DAX 比 Excel 更强大,因为它具有底层内存驻留计算引擎。
DAX 支持比 Excel 更多的数据类型。
DAX 提供了关系数据库数据模型的附加高级功能,包括对日期和时间类型的更丰富的支持。
在某些情况下,DAX 中的计算结果或函数的Behave可能与 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 中的函数具有相同的名称,其参数也可能不同,函数的结果也可能不同。
您将在后续章节中了解有关所有这些的更多信息。