第3章 使用基本表函数
3.1 表函数简介
3.2 EVALUATE语法简介
3.3 理解FILTER
3.4 ALL和ALLEXCEPT
3.5 了解VALUES,DISTINCT和空行
3.6 将表用作标量值
3.7 ALLSELECTED介绍
EVALUATE语法简介
查询工具(例如DAX Studio)对于编写复杂的表表达式很有用。在这种情况下,用于检查表表达式结果的公共语句是EVALUATE:
EVALUATE
FILTER (
'Product',
'Product'[Unit Price] > 3000
)
可以在任何执行DAX查询的工具(DAX Studio,Microsoft Excel,SQL Server Management Studio,Reporting Services等)中执行上述DAX查询。DAX查询是返回表的DAX表达式,该表与EVALUATE语句一起使用。EVALUATE具有复杂的语法,我们将在第13章中全面介绍。这里,我们仅介绍常用的EVALUATE语法,如下所示:
[DEFINE { MEASURE <tableName>[<name>] = <expression> }]
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]} [, ...]]
开头的DEFINE MEASURE部分可用于定义查询本地的度量值。当我们调试公式时,它变得很有用,因为我们可以定义局部度量值,对其进行测试,在达到预期效果时将其部署到模型中。大多数语法是可选的,最简单的查询可以取得一个现有表中的所有行和列,如图3-1所示:
图3-1在DAX Studio中执行查询的结果
ORDER BY子句控制排序顺序:
EVALUATE
FILTER (
'Product',
'Product'[Unit Price] > 3000
)
ORDER BY
'Product'[Color],
'Product'[Brand] ASC,
'Product'[Class] DESC
请注意,模型中定义的“按列排序”属性不会影响DAX查询中的排序。EVALUATE指定的排序列只能使用结果中包含的列。因此,生成动态DAX查询的客户端应读取模型元数据中的“按列排序”属性及查询中的排序列,然后生成相应的ORDER BY条件。
评估本身并不是一个强大的语句。使用DAX进行查询的功能来自使用该语言提供的许多DAX表函数的功能。在下一部分中,您将学习如何通过使用和组合不同的表函数来创建高级计算。