EVALUATE 是执行查询必须的 DAX 语句。EVALUATE 用于表表达式之前,并返回该表达式的结果。而且一个或多个 EVALUATE 前面可以添加 DEFINE 关键字,用来定义本地表、列、度量值和变量,所有这些本地定义的可用范围覆盖与其一起执行的整个 EVALUATE 语句。
- -- 定义部分(可选)
- [DEFINE { MEASURE <tableName>[<name>] = <expression> }
- { VAR <name> = <expression>}]
- -- 查询表达式
- EVALUATE <table>
- -- 结果修饰符(可选)
- [ORDER BY {<expression> [{ASC | DESC}]}[, …]
- [START AT {<value>|<parameter>} [, …]]]
复制代码
一条 EVALUATE 语句分为三个部分:
- 定义部分:由 DEFINE 关键字引入,它包括表、列、变量和度量值等局部实体的定义。一个 DEFINE 可以覆盖一个或多个查询
- 查询表达式:由 EVALUATE 关键字引入,它包含要计算的表表达式,并返回其结果。查询表达式可以有多个,每个查询表达式由 EVALUATE 引入,每个查询表达式都有自己的一组结果修饰符
- 结果修饰符:EVALUATE 的一个可选的附加部分,由关键字 ORDER BY 引入。它可以对结果的排序和定义要返回的行(使用 START AT 定义起始点)
其中第一部分和第三部分是可选项。因此,你可以直接使用 EVALUATE 来生成查询。例如,最简单的查询是从现有表中检索所有列和行:
产品表的查询结果
包含完整的三个部分的查询示例:
- DEFINE
- VAR MinimumAmount = 2000000
- VAR MaximumAmount = 8000000
- EVALUATE
- FILTER (
- ADDCOLUMNS (
- SUMMARIZE ( Sales, 'Product'[Category] ),
- "CategoryAmount", [Sales Amount]
- ),
- AND (
- [CategoryAmount] >= MinimumAmount,
- [CategoryAmount] <= MaximumAmount
- )
- )
- ORDER BY [CategoryAmount]
复制代码
关于 EVALUATE 的更多内容,可以参考其他 DEFINE、ORDER BY 等其他查询关键字。 |