Databricks Runtime 表达式
表达式是一个公式,它使用函数或运算符根据文本或者对列、字段或变量的引用来计算结果。
语法
{ literal |
column_reference |
field_reference |
parameter_reference |
CAST expression |
CASE expression |
expr operator expr |
operator expr |
expr [ expr ] |
function_invocation |
( expr ) |
scalar_subquery }
scalar_subquery
( query )
括号 [ expr ] 是真实括号,不指示可选语法。
parameters
literal
数据类型中介绍了类型的文本。
column_reference
对表中的列或列别名的引用。
field_reference
对 STRUCT 类型中的字段的引用。
-
使用函数正文对 SQL 用户定义函数的参数的引用。 引用可以使用参数的非限定名称,或者可以使用函数名称来限定名称。 解析标识符时,参数将构成最外层范围。
-
将参数强制转换为不同类型的表达式。
-
允许条件求值的表达式。
expr
与
operator结合的表达式自身,或充当函数参数的表达式。-
一元运算符或二进制运算符。
-
对数组元素或映射键的引用。
-
调用内置函数或用户定义函数的表达式。
每个内置函数和运算符的页面介绍了其参数所需的数据类型。 Databricks Runtime 使用 SQL 数据类型规则执行隐式强制转换为所需类型的操作。 如果运算符或函数对于提供的参数无效,Databricks Runtime 会引发错误。 函数还会阐述哪些参数是必需或可选的。
调用 SQL 用户定义的函数时,如果尾随参数定义了默认值,则你可以省略这些参数的自变量。
( expr )
重写运算符优先级的强制优先级。
-
( query )
基于查询的表达式,该查询必须返回单列且最多返回一行。
每个函数和运算符的页面介绍了其参数所需的数据类型。 Databricks Runtime 使用 SQL 数据类型规则执行隐式强制转换为所需类型的操作。 如果运算符或函数对于提供的参数无效,Databricks Runtime 会引发错误。
常数表达式
仅基于不带参数的文本或确定性函数的表达式。 Databricks Runtime 可以执行表达式并在通常需要文本的位置使用结果常量。
布尔表达式 (Boolean expression)
结果类型为 BOOLEAN 的表达式。 布尔表达式有时也称为“条件”或“谓词”。
标量子查询
( query ) 形式的表达式。 查询必须返回一个包含一列且最多一行的表。
如果查询未返回任何行,则结果为 NULL。
如果查询返回多行,Databricks Runtime 将返回错误。
否则,结果即为查询返回的值。
简单表达式
不包含 query 的表达式,例如标量子查询或 EXISTS 谓词。
示例
> SELECT 1;
1
> SELECT (SELECT 1) + 1;
2
> SELECT 1 + 1;
2
> SELECT 2 * (1 + 2);
6
> SELECT 2 * 1 + 2;
4
> SELECT substr('Spark', 1, 2);
Sp
> SELECT c1 + c2 FROM VALUES(1, 2) AS t(c1, c2);
3
> SELECT a[1] FROM VALUES(array(10, 20)) AS T(a);
20
> SELECT true;
true