[]
首先来看分析表达式的一般表现形式:
表达式函数(参数1,参数2,……)
分析表达式是通过函数来串联的,函数由函数名和参数构成,可能有多个参数。
表达式函数的参数可以是另一个分析表达式,通过嵌套就用分析表达式来表示非常复杂的业务逻辑来表示现实中需要的某种计算。
我们使用分析表达式来计算表中的数值,可以聚合、计算和搜索数字等,但最终所有的计算都涉及表和列。
因此,要学习的第一个语法是如何引用表中的列。
引用列的一般格式是将表名用单引号括起来,后跟方括号中的列名,如下所示:
'订单'[利润]
表示对'订单'表的'利润'这一列的引用。
关于名称的规定:
使用数据集的话,所有数据在一张大表当中。
而使用使用模型时,一个数据模型通常包含多个表,这些表和表中的列一起构成了存储在数据库服务器中的数据库。
在该数据库中,所有的表名必须唯一。每个表中的列名也必须是唯一的。
添加到现有数据模型的计算列和度量值也必须属于特定表。表中的原始列/计算列/度量值名称也必须是唯一的。
注意
关于大小写的规定:
在表达式中,除关键字和变量名外,其他对象均大小写敏感(如引用表名、列名时要和模型或数据集上严格保持一致)。
计算列和度量值是分析表达式中两个最重要的词汇,我们最终也是通过计算列和度量值来表现计算结果。
有关计算列和度量值的详细介绍,请见度量值和计算列。
它可以是原始表也可以是通过分析表达式表函数返回的表。
通常它出现在聚合或窗口函数的第一个参数中。我们的仪表板将根据用户输入的查询数据使用表功能自动生成表。
通常情况下,表函数使用时会层层嵌套,这意味着表函数的第一个参数也可以是表函数。
来自数据库表的原始列。
它描述了分析表达式所处的环境,即表达式所处的环境可以使用哪些维度进行分组,使用哪些过滤器来过滤数据。
上下文包括维度上下文和过滤上下文。
维度上下文可以理解为将维度发送给表达式,在SQL范围内,表示需要分组的元素;过滤上下文可以理解为过滤表达式原表的数据。在 SQL 范围内,表示过滤条件或需要内连接的表。
它是分析表达式逻辑的一个单元,用于计算并返回结果。
表达式是通过使用模型或数据集对象(表、列或度量)、函数、运算符或常量构建的。通常,我们使用许多函数(聚合、窗口、表操作等)和许多运算符(算术、逻辑)来生成表达式。
函数带有参数,可以向函数中传入参数。表达式可以使用许多函数调用,可能在其他函数中嵌套函数。在一个公式中,函数名称后面必须有圆括号。在括号内,传入参数。
表达式中支持调用仪表板参数,方法如下:
单击表达式编辑窗口右上角的“ 参数 ”按钮,然后选择已有的仪表板参数即可将其添加到表达式中。
单值参数使用示例:
多值参数使用示例:
多值参数仅可以用 In 和 NotIn 函数中。
注意
建议为参数预先设置默认值,以免在某些场景下提示错误信息。
另外,表达式中仅支持来源于静态值的参数,也就是说数据来源设置为“查询结果”或“数据列”的参数不可以在表达式中使用。
您就可以将用户上下文信息或组织上下文信息绑定到仪表板参数中,然后在表达式中应用参数,以实现在表达式中使用用户信息的效果。
另外,使用仪表板参数可以辅助实现动态维度或动态度量等效果,相关示例请见动态维度、动态度量值。
在正式开始学习使用分析表达式之前,我们先来看一个经典的简单示例,来充分了解分析表达式的基础知识。
分析表达式
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
接下来我们来分析这个表达式的含义。
EVALUATE (必须)
在最基本的层面上看,这个分析表达式查询是一个包含表表达式的 EVALUATE 语句。
分析表达式
EVALUATE <table>
table 是一个表或者由表函数返回的表。
ORDER BY (可选)
可选的 ORDER BY 关键字定义了一个或多个用于对查询结果进行排序的表达式。
例如:
分析表达式
EVALUATE
'Product'
ORDER BY
'Product'[Product Name]
返回 Product 表中的所有行和列,并按产品名称排序。最终作为一个表。