systemFunctions
title: "系统(内置)函数"
Flink 1.12 Table API & SQL 为用户提供了一组用于数据转换的内置函数。本页简要概述了这些函数。如果您需要的函数尚未支持,您可以实现用户定义的函数。如果您认为该函数足够通用,请为其打开 Jira 问题并附上详细描述。
标量函数
标量函数以零个、一个或多个值作为输入,并返回单个值作为结果。
比较函数
比较函数 | 说明 |
---|---|
value1 = value2 | 如果value1等于value2返回true。 |
value1 <> value2 | 如果value1不等于value2返回true。 |
value1 > value2 | 如果value1大于value2返回true。 |
value1 >= value2 | 如果value1大于或等于value2返回true。 |
value1 < value2 | 如果value1小于value2返回true。 |
value1 <= value2 | 如果value1小于等于value2返回true。 |
value IS NULL | 如果值为NULL返回true。 |
value IS NOT NULL | 如果值不为NULL返回true。 |
value1 IS DISTINCT FROM value2 | value1和value2的数据类型和值不相同,则返回true。所有NULL值视为彼此相等。 |
value1 IS NOT DISTINCT FROM value2 | value1和value2的数据类型和值相同,则返回true。所有NULL值视为彼此相等。 |
value1 BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3 | 默认或使用ASYMMETRIC关键字的情况下,如果value1大于等于value2且小于等于value3返回true。 |
value1 NOT BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3 | 默认或使用ASYMMETRIC关键字的情况下,如果value1小于value2或大于 value3,则返回true。 |
string1 LIKE string2 [ ESCAPE char ] | 如果string1匹配string2返回true。 |
string1 NOT LIKE string2 [ ESCAPE char ] | 如果string1与string2不匹配返回true。 |
string1 SIMILAR TO string2 [ ESCAPE char ] | 如果string1匹配SQL正则表达式string2返回true。 |
string1 NOT SIMILAR TO string2 [ ESCAPE char ] | 如果string1与SQL正则表达式string2不匹配返回true。 |
value1 IN (value2 [, value3]* ) | 在给定列表 (value2, value3, …) 中存在 value1返回true。 |
value1 NOT IN (value2 [, value3]* ) | 在给定列表 (value2, value3, …) 中不存在value1返回true。 |
EXISTS (sub-query) | 如果子查询至少返回一行则返回true。 |
value IN (sub-query) | 如果value等于子查询结果集中的一行则返回true。 |
value NOT IN (sub-query) | 如果value不包含于子查询返回的行则返回true。 |
逻辑函数
逻辑函数 | 说明 |
---|---|
boolean1 OR boolean2 | 如果boolean1为true或boolean2为true返回true。 |
boolean1 AND boolean2 | 如果boolean1和boolean2都为true返回true。 |
NOT boolean | 如果布尔值为FALSE返回true;如果布尔值为true返回FALSE;如果布尔值为UNKNOWN返回UNKNOWN。 |
boolean IS FALSE | 如果布尔值为FALSE返回true;如果 boolean为true或UNKNOWN返回FALSE。 |
boolean IS NOT FALSE | 如果boolean为true或UNKNOWN返回true;如果boolean为FALSE返回FALSE。 |
boolean IS TRUE | 如果boolean为true返回true;如果 boolean为FALSE或UNKNOWN返回FALSE。 |
boolean IS NOT TRUE | 如果boolean为FALSE或UNKNOWN返回true;如果布尔值为true返回FALSE。 |
boolean IS UNKNOWN | 如果布尔值为UNKNOWN返回true;如果boolean为true或FALSE返回FALSE。 |
boolean IS NOT UNKNOWN | 如果boolean为true或FALSE返回true;如果布尔值为UNKNOWN返回FALSE。 |
算术函数
算术函数 | 说明 |
---|---|
+ numeric | 返回numeric。 |
- numeric | 返回numeric的相反数。 |
numeric1 + numeric2 | 返回numeric1加numeric2。 |
numeric1 - numeric2 | 返回numeric1减numeric2。 |
numeric1 * numeric2 | 返回numeric1乘以numeric2。 |
numeric1 / numeric2 | 返回numeric1除以numeric2。 |
numeric1 % numeric2 | 返回numeric1除以numeric2的余数。 |
POWER(numeric1, numeric2) | 返回numeric1的numeric2次方。 |
ABS(numeric) | 返回numeric的绝对值。 |
MOD(numeric1, numeric2) | 返回 numeric1 除以 numeric2 的余数(模数)。仅当 numeric1 为负时,结果才为负。 |
SQRT(numeric) | 返回numeric的平方根。 |
LN(numeric) | 返回numeric的自然对数(以e为底)。 |
LOG10(numeric) | 返回以10为底的numeric的对数。 |
LOG2(numeric) | 返回以2为底的numeric的对数。 |
LOG(numeric2) LOG(numeric1, numeric2) | 当用一个参数调用时,返回 numeric2 的自然对数。当使用两个参数调用时,此函数返回 numeric2 以 numeric1 为底的对数。numeric2 必须大于 0,numeric1 必须大于 1。 |
EXP(numeric) | 返回e的numeric次幂。 |
CEIL(numeric) CEILING(numeric) | 向上取整,并返回大于或等于numeric的最小整数。 |
FLOOR(numeric) | 向下取整,并返回小于或等于numeric的最大整数。 |
SIN(numeric) | 返回numeric的正弦值。 |
SINH(numeric) | 返回numeric的双曲正弦值。返回类型为 DOUBLE。 |
COS(numeric) | 返回numeric的余弦值。 |
TAN(numeric) | 返回numeric的正切值。 |
TANH(numeric) | 返回numeric的双曲正切值。返回类型为 DOUBLE。 |
COT(numeric) | 返回numeric的余切值。 |
ASIN(numeric) | 返回numeric的反正弦值。 |
ACOS(numeric) | 返回numeric的反余弦值。 |
ATAN(numeric) | 返回numeric的反正切值。 |
ATAN2(numeric1, numeric2) | 返回坐标 (numeric1, numeric2) 的反正切。 |
COSH(numeric) | 返回numeric的双曲余弦值。返回值类型为DOUBLE。 |
DEGREES(numeric) | 返回弧度numeric的度数表示。 |
RADIANS(numeric) | 返回度数numeric的弧度表示。 |
SIGN(numeric) | 返回numeric的符号。 |
ROUND(numeric, integer) | 返回numeric四舍五入保留INT小数位的值。 |
PI | 返回无比接近pi的值。 |
E() | 返回无比接近e的值。 |
RAND() | 返回[0.0, 1.0) 范围内的伪随机双精度值。 |
RAND(integer) | 返回范围为[0.0, 1.0) 的伪随机双精度值,初始种子为INT。 |
RAND_INTEGER(integer) | 返回[0, INT) 范围内的伪随机整数。 |
RAND_INTEGER(integer1, integer2) | 返回范围为[0, INT2) 的伪随机整数,初始种子为INT1。 |
UUID() | 根据RFC 4122 类型 4(伪随机生成)UUID,返回UUID(通用唯一标识符)字符串。 |
BIN(integer) | 以二进制格式返回INTEGER的字符串表示形式。 |
HEX(numeric) HEX(string) | 以十六进制格式返回整数numeric值或 STRING的字符串表示形式。 |
TRUNCATE(numeric1, integer2) | 返回截取integer2位小数的数字。 |
PI() | 返回expr的percentage百分位值。 |
字符串函数
字符串函数 | 说明 |
---|---|
string1 || string2 | 返回STRING1和STRING2的连接。 |
CHAR_LENGTH(string) CHARACTER_LENGTH(string) | 返回字符串中的字符数。 |
UPPER(string) | 以大写形式返回字符串。 |
LOWER(string) | 以小写形式返回字符串。 |
POSITION(string1 IN string2) | 返回 STRING2 中第一次出现STRING1的位置(从 1 开始);如果在STRING2中找不到STRING1返回 0。 |
TRIM([ BOTH | LEADING | TRAILING ] string1 FROM string2) | 返回从STRING2中删除以字符串STRING1开头、结尾或开头且结尾的字符串的结果。 处理TRAILING参数时,会移除字符串末尾的所有字符,直到遇到一个不在TRAILING参数中的字符为止。 例如,TRIM(TRAILING 'fe' from 'abcdef')返回abcd。 |
LTRIM(string) | 返回从STRING中删除左边空格的字符串。 |
RTRIM(string) | 返回从STRING中删除右边空格的字符串。 |
REPEAT(string, integer) | 返回INT个string连接的字符串。 |
REGEXP_REPLACE(string1, string2, string3) | 使用REGEXP_REPLACE函数,用目标字符串替换指定字符串,并返回新的字符串。 |
OVERLAY(string1 PLACING string2 FROM integer1 [ FOR integer2 ]) | 返回一个字符串,该字符串从位置INT1用 STRING2替换STRING1的INT2(默认为 STRING2的长度)字符。 |
SUBSTRING(string FROM integer1 [ FOR integer2 ]) | 返回STRING从位置INT1开始,长度为INT2(默认到结尾)的子字符串。 |
REPLACE(string1, string2, string3) | 返回一个新字符串,它用STRING1中的 STRING3(非重叠)替换所有出现的 STRING2。 |
REGEXP_EXTRACT(string1, string2[, integer]) | 将字符串STRING1按照STRING2正则表达式的规则拆分,返回指定INTEGER1处位置的字符串。 |
INITCAP(string) | 返回新形式的 STRING,其中每个单词的第一个字符转换为大写,其余字符转换为小写。这里的单词表示字母数字的字符序列。 |
CONCAT(string1, string2,...) | 返回连接string1,string2, … 的字符串。如果有任一参数为NULL,则返回NULL。 |
CONCAT_WS(string1, string2, string3,...) | 返回将STRING2,STRING3, … 与分隔符 STRING1连接起来的字符串。 |
LPAD(string1, integer, string2) | 返回从string1靠左填充string2到INT长度的新字符串。 |
RPAD(string1, integer, string2) | 返回从string1靠右边填充string2到INT长度的新字符串。 |
FROM_BASE64(string) | 返回字符串string1的base64解码的结果。 |
TO_BASE64(string) | 返回字符串string的base64编码的结果。 |
ASCII(string) | 返回字符串string第一个字符的数值。 |
CHR(integer) | 返回二进制等于integer的ASCII字符。 |
DECODE(binary, string) | 使用提供的字符集(US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE或UTF-16)解码。 |
ENCODE(string1, string2) | 使用提供的字符集(US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE或UTF-16)编码。 |
INSTR(string1, string2) | 返回string2在 string1中第一次出现的位置。 |
LEFT(string, integer) | 返回字符串中最左边的长度为integer值的字符串。 |
RIGHT(string, integer) | 返回字符串中最右边的长度为integer值的字符串。 |
LOCATE(string1, string2[, integer]) | 返回string2中string1在位置integer之后第一次出现的位置。 |
PARSE_URL(string1, string2[, string3]) | 使用PARSE_URL函数,返回目标URL中指定部分解析后的值。 |
REGEXP(string1, string2) | 使用REGEXP函数,对指定的字符串执行一个正则表达式搜索,并返回一个Boolean值表示是否找到指定的匹配模式。 |
REVERSE(string) | 返回反转的字符串。 |
SPLIT_INDEX(string1, string2, integer1) | 使用SPLIT_INDEX函数,将目标字符串按照指定分隔符分割成若干段,返回指定位置的字段信息。 |
STR_TO_MAP(string1[, string2, string3]]) | 使用分隔符将string1拆分为键值对后返回一个 map。 |
SUBSTR(string[, integer1[, integer2]]) | 返回字符串的子字符串,从位置integer1开始,长度为integer2。 |
时间函数
时间函数 | 说明 |
---|---|
DATE string | 以yyyy-MM-dd的形式返回从字符串解析的 SQL日期。 |
TIME string | 以HH:mm:ss的形式返回从字符串解析的SQL 时间。 |
TIMESTAMP string | 以yyyy-MM-dd HH:mm:ss[.SSS]的形式返回从字符串解析的SQL时间戳。 |
INTERVAL string range | 从dd hh:mm:ss.fff形式的字符串解析SQL 毫秒间隔或者从yyyy-mm形式的字符串解析 SQL月数间隔。 |
CURRENT_DATE | 返回本地时区中的当前SQL日期。 |
CURRENT_TIME | 返回本地时区的当前SQL时间,这是 LOCAL_TIME的同义词。 |
CURRENT_TIMESTAMP | 返回本地时区的当前SQL时间戳 |
LOCALTIME | 返回本地时区的当前SQL时间,返回类型为 TIME(0)。 |
LOCALTIMESTAMP | 返回本地时区的当前SQL时间,返回类型为 TIMESTAMP(3)。 |
EXTRACT(timeintervalunit FROM temporal) | 返回从时间的时间间隔单位部分提取的long值。 |
YEAR(date) | 从SQL日期date返回年份。 |
QUARTER(date) | 从SQL日期date 返回一年中的季度。 |
MONTH(date) | 从SQL日期date返回一年中的月份。 |
WEEK(date) | 从SQL日期date返回一年中的第几周。 |
DAYOFYEAR(date) | 从SQL日期date返回一年中的第几天。 |
DAYOFMONTH(date) | 从SQL日期date返回一个月中的第几天。 |
DAYOFWEEK(date) | 从SQL日期date返回一个星期中的第几天。 |
HOUR(timestamp) | 从SQL时间戳timestamp返回小时单位部分的小时数。 |
MINUTE(timestamp) | 从SQL时间戳timestamp返回分钟单位的分钟数。 |
SECOND(timestamp) | 从SQL时间戳timestamp返回秒单位部分的秒数。 |
FLOOR(timepoint TO timeintervalunit) | 返回将时间点timepoint向下取值到时间单位 timeintervalunit的值。 |
CEIL(timepoint TO timeintervalunit) | 返回将时间点timespoint向上取值到时间单位 TIMEINTERVALUNIT的值。 |
(timepoint1, temporal1) OVERLAPS (timepoint2, temporal2) | 如果由 (timepoint1, temporal1) 和 (timepoint2, temporal2)定义的两个时间间隔重叠,则返回true。 |
DATE_FORMAT(timestamp, string) | 使用DATE_FORMAT函数将字符串类型的日期从原格式转换至目标格式。 |
TIMESTAMPADD(timeintervalunit, interval, timepoint) | 将指定时间间隔单位的时间加上指定的间隔时间,返回一个新的时间点。 |
TIMESTAMPDIFF(timepointunit, timepoint1, timepoint2) | 返回timepoint1和timepoint2之间时间间隔。 |
CONVERT_TZ(string1, string2, string3) | 将日期时间string1(具有默认ISO时间戳格式yyyy-MM-dd HH:mm:ss)从时区string2转换为时区string3的值。 |
FROM_UNIXTIME(numeric[, string]) | 使用FROM_UNIXTIME函数返回VARCHAR类型的日期值。 |
UNIX_TIMESTAMP() | 使用UNIX_TIMESTAMP函数,将入参转换为长整型的时间戳。 |
UNIX_TIMESTAMP(string1[, string2]) | 使用表配置中指定的时区将格式为 string2 的日期时间字符串 string1(如果未指定默认情况下:yyyy-MM-dd HH:mm:ss) |
TO_DATE(string1[, string2]) | 使用TO_DATE函数,将INT类型或者VARCHAR类型的日期转换成DATE类型。 |
TO_TIMESTAMP(string1[, string2]) | 将UTC+0时区下格式为string2(默认为yyyy-MM-dd HH:mm:ss)的字符串string1转换为时间戳。 |
NOW() | 返回本地时区的当前SQL时间戳,这是 CURRENT_TIMESTAMP的同义词。 |
条件函数
条件函数 | 说明 |
---|---|
CASE value WHEN value1_1 [, value1_2 ]* THEN result1 [ WHEN value2_1 [, value2_2 ]* THEN result2 ]* [ ELSE resultZ ] END | 当第一个时间值包含在 (valueX_1, valueX_2, …) 中时,返回resultX。 |
CASE WHEN condition1 THEN result1 [ WHEN condition2 THEN result2 ]* [ ELSE resultZ ] END | 满足第一个条件X时返回resultX。 |
NULLIF(value1, value2) | 如果value1等于value2返回NULL,否则返回 value1。 |
COALESCE(value1, value2 [, value3 ]* ) | 从value1, value2, … 返回第一个不为NULL的值。 |
IF(condition, true_value, false_value) | 如果满足条件,则返回true_value,否则返回 false_value。 |
IS_ALPHA(string) | 如果字符串中的所有字符都是字母,则返回true,否则返回false。 |
IS_DECIMAL(string) | 如果string可以解析为有效数字,则返回true,否则返回false。 |
IS_DIGIT(string) | 如果字符串中的所有字符都是数字,则返回true,否则返回false。 |
类型转换函数
类型转换函数 | 说明 |
---|---|
CAST(value AS type) | 返回被强制转换为类型type的新值。 |
集合函数
集合函数 | 说明 |
---|---|
CARDINALITY(array) | 返回数组中元素的数量。 |
array ‘[’ integer ‘]’ | 返回数组中INT位置的元素。 |
ELEMENT(array) | 返回数组的唯一元素(其基数应为1)。 |
CARDINALITY(map) | 返回map中的entries数量。 |
map ‘[’ value ‘]’ | 返回map中指定key对应的值。 |
值构建函数
值构建函数 | 说明 |
---|---|
| 返回从值列表 (value1, value2, …) 创建的行。 |
ARRAY ‘[’ value1 [, value2 ]* ‘]’ | 返回从值列表 (value1, value2, …) 创建的数组。 |
MAP ‘[’ value1, value2 [, value3, value4 ]* ‘]’ | 返回从键值对列表 ((value1, value2), (value3, value4), …) 创建的map。 |
值获取函数
值获取函数 | 说明 |
---|---|
tableName.compositeType.field | 按名称从Flink复合类型(例如,Tuple,POJO)返回字段的值。 |
tableName.compositeType.* | 返回Flink复合类型(例如,Tuple,POJO)的平面表示,将其每个直接子类型转换为单独的字段。 |
分组函数
分组函数 | 说明 |
---|---|
GROUP_ID() | 返回唯一标识分组键组合的整数。 |
GROUPING(expression1 [, expression2]* ) GROUPING_ID(expression1 [, expression2]* ) | 返回给定分组表达式的位向量。 |
哈希函数
哈希函数 | 说明 |
---|---|
MD5(string) | 以32个十六进制数字的字符串形式返回string的MD5哈希值。 |
SHA1(string) | 以40个十六进制数字的字符串形式返回string 的SHA-1哈希值。 |
SHA224(string) | 以56个十六进制数字的字符串形式返回string的SHA-224哈希值。 |
SHA256(string) | 以64个十六进制数字的字符串形式返回string的SHA-256哈希值。 |
SHA384(string) | 以96个十六进制数字的字符串形式返回string的SHA-384哈希值。 |
SHA512(string) | 以128个十六进制数字的字符串形式返回string的SHA-512哈希值。 |
SHA2(string, hashLength) | 使用SHA-2系列散列函数(SHA-224,SHA-256,SHA-384或SHA-512)返回散列值。 |
聚合函数
聚合函数将所有行的表达式作为输入,并返回一个聚合值作为结果。
聚合函数 | 说明 |
---|---|
COUNT([ ALL ] expression | DISTINCT expression1 [, expression2]*) | 默认情况下或使用关键字ALL,返回不为NULL的表达式的输入行数。 |
COUNT(*) COUNT(1) | 返回输入行数。 |
AVG([ ALL | DISTINCT ] expression) | 默认情况下或使用关键字ALL,返回所有输入行中表达式的平均值(算术平均值)。 |
SUM([ ALL | DISTINCT ] expression) | 默认情况下或使用关键字ALL,返回所有输入行的表达式总和。 |
MAX([ ALL | DISTINCT ] expression) | 默认情况下或使用关键字ALL,返回所有输入行中表达式的最大值。 |
MIN([ ALL | DISTINCT ] expression) | 默认情况下或使用关键字ALL,返回所有输入行中表达式的最小值。 |
STDDEV_POP([ ALL | DISTINCT ] expression) | 默认情况下或使用关键字ALL,返回所有输入行中表达式的总体标准偏差。 |
STDDEV_SAMP([ ALL | DISTINCT ] expression) | 默认情况下或使用关键字ALL,返回所有输入行中表达式的样本标准偏差。 |
VAR_POP([ ALL | DISTINCT ] expression) | 默认情况下或使用关键字ALL,返回所有输入行中表达式的总体方差(总体标准差的平方)。 |
VAR_SAMP([ ALL | DISTINCT ] expression) | 默认情况下或使用关键字ALL,返回所有输入行中表达式的样本方差(样本标准差的平方)。 |
COLLECT([ ALL | DISTINCT ] expression) | 默认情况下或使用关键字ALL,返回跨所有输入行的多组表达式。 |
VARIANCE([ ALL | DISTINCT ] expression) | VAR_SAMP() 的同义方法。 |
RANK() | 返回值在一组值中的排名。 |
DENSE_RANK() | 返回值在一组值中的排名。结果是一加先前分配的等级值。 |
ROW_NUMBER() | 在窗口分区内根据rows的排序为每一行分配一个唯一的序列号,从一开始。 |
LEAD(expression [, offset] [, default] ) | 返回窗口中当前行之后第offset行处的表达式值。 |
LAG(expression [, offset] [, default]) | 返回窗口中当前行之前第offset行处的表达式值。 |
FIRST_VALUE(expression) | 返回指定数据流的第1条非NULL数据。 |
LAST_VALUE(expression) | 返回指定数据流的最后1条非NULL数据。 |
LISTAGG(expression [, separator]) | 连接字符串表达式的值并在它们之间放置分隔符值。字符串末尾不添加分隔符时则分隔符的默认值为“,”。 |
时间间隔单位和时间点单位标识符
下表列出了时间间隔单位和时间点单位标识符。
对于 Table API,请使用 _
代替空格(例如 DAY_TO_HOUR
)。
时间间隔单位 | 时间点单位 |
---|---|
MILLENIUM (SQL-only) | |
CENTURY (SQL-only) | |
YEAR | YEAR |
YEAR TO MONTH | |
QUARTER | QUARTER |
MONTH | MONTH |
WEEK | WEEK |
DAY | DAY |
DAY TO HOUR | |
DAY TO MINUTE | |
DAY TO SECOND | |
HOUR | HOUR |
HOUR TO MINUTE | |
HOUR TO SECOND | |
MINUTE | MINUTE |
MINUTE TO SECOND | |
SECOND | SECOND |
MILLISECOND | |
MICROSECOND | |
DOY (仅适用SQL) | |
DOW (仅适用SQL) | |
SQL_TSI_YEAR (仅适用SQL) | |
SQL_TSI_QUARTER (仅适用SQL) | |
SQL_TSI_MONTH (仅适用SQL) | |
SQL_TSI_WEEK (仅适用SQL) | |
SQL_TSI_DAY (仅适用SQL) | |
SQL_TSI_HOUR (仅适用SQL) | |
SQL_TSI_MINUTE (仅适用SQL) | |
SQL_TSI_SECOND (仅适用SQL) |
列函数
列函数用于选择或取消选择表列。
语法 | 说明 |
---|---|
withColumns(...) | 选择指定的列 |
withoutColumns(...) | 取消选择指定的列 |
详细语法如下:
columnFunction:
withColumns(columnExprs)
withoutColumns(columnExprs)
columnExprs:
columnExpr [, columnExpr]*
columnExpr:
columnRef | columnIndex to columnIndex | columnName to columnName
columnRef:
columnName(The field name that exists in the table) | columnIndex(a positive integer starting from 1)
列函数的用法如下表所示。(假设我们有一个有5列的表:(a:Int,b:Long,c:String,d:String,e:String)
):
API | 使用 | 说明 |
---|---|---|
withColumns(*)|* | select("withColumns(*)") | select("*") = select("a, b, c, d, e") | 所有列 |
withColumns(m to n) | select("withColumns(2 to 4)") = select("b, c, d") | 从m到n的列 |
withColumns(m, n, k) | select("withColumns(1, 3, e)") = select("a, c, e") | m、n、k列 |
withColumns(m, n to k) | select("withColumns(1, 3 to 5)") = select("a, c, d ,e") | 上述两种表示法的混合 |
withoutColumns(m to n) | select("withoutColumns(2 to 4)") = select("a, e") | 取消选择从m到n的列 |
withoutColumns(m, n, k) | select("withoutColumns(1, 3, 5)") = select("b, d") | 取消选择列m、n、k |
withoutColumns(m, n to k) | select("withoutColumns(1, 3 to 5)") = select("b") | 上述两种表示法的混合 |
列函数可用于所有需要列字段的地方,例如“select、groupBy、orderBy、UDF等”,例如:
table
.groupBy("withColumns(1 to 3)")
.select("withColumns(a to b), myUDAgg(myUDF(withColumns(5 to 20)))")
列函数仅在表API中使用。