blob: ecf8b690ab8adddaac876f32a1e29a28df1087c8 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License
comparison:
- sql: value1 = value2
table: value1 === value2
description: 如果 value1 等于 value2 返回 `TRUE`;如果 value1 或者 value2 为 `NULL` 返回 `UNKNOW`。
- sql: value1 <> value2
table: value1 !== value2
description: 如果 value1 不等于 value2 返回 `TRUE`;如果 value1 或 value2 为 `NULL` 返回 `UNKNOWN`。
- sql: value1 > value2
table: value1 > value2
description: 如果 value1 大于 value2 返回 `TRUE`;如果 value1 或 value2 为 `NULL` 返回 `UNKNOWN`。
- sql: value1 >= value2
table: value1 >= value2
description: 如果 value1 大于或等于 value2 返回 `TRUE`;如果 value1 或 value2 为 `NULL` 返回 `UNKNOWN`。
- sql: value1 < value2
table: value1 < value2
description: 如果 value1 小于 value2 返回 `TRUE`;如果 value1 或 value2 为 `NULL` 返回 `UNKNOWN`。
- sql: value1 <= value2
table: value1 <= value2
description: 如果 value1 小于或等于 value2 返回 `TRUE`;如果 value1 或 value2 为 `NULL` 返回 `UNKNOWN`。
- sql: value IS NULL
table: value.isNull
description: 如果值为 `NULL` 返回 `TRUE`。
- sql: value IS NOT NULL
table: value.isNotNull
description: 如果值不为 `NULL` 返回 `TRUE`。
- sql: value1 IS DISTINCT FROM value2
description: |
A 和 B 的数据类型和值不完全相同返回 `TRUE`。A 和 B 的数据类型和值都相同返回 `FALSE`。将 `NULL` 视为相同。
例如 `1 IS DISTINCT FROM NULL` 返回 `TRUE`;`NULL IS DISTINCT FROM NULL` 返回 `FALSE`。
- sql: value1 IS NOT DISTINCT FROM value2
description: |
A 和 B 的数据类型和值都相同返回 `TRUE`。A 和 B 的数据类型和值不完全相同则返回 `FALSE`。将 `NULL` 视为相同。
例如 `1 IS NOT DISTINCT FROM NULL` 返回 `FALSE`;`NULL IS NOT DISTINCT FROM NULL` 返回 `TRUE`。
- sql: value1 BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3
description: |
默认或使用 `ASYMMETRIC` 关键字的情况下,如果 value1 大于等于 value2 且小于等于 value3 返回 `TRUE`。
使用 `SYMMETRIC` 关键字则 value1 在 value2 和 value3 之间返回 `TRUE`。
当 value2 或 value3 为 `NULL` 时,返回 `FALSE` 或 `UNKNOWN`。
例如 `12 BETWEEN 15 AND 12` 返回 `FALSE`;
`12 BETWEEN SYMMETRIC 15 AND 12` 返回 `TRUE`;
`12 BETWEEN 10 AND NULL` 返回 `UNKNOWN`;
`12 BETWEEN NULL AND 10` 返回 `FALSE`;
`12 BETWEEN SYMMETRIC NULL AND 12` 返回 `UNKNOWN`。
- sql: value1 NOT BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3
description: |
默认或使用 `ASYMMETRIC` 关键字的情况下,如果 value1 小于 value2 或大于 value3,则返回 `TRUE`。
使用 `SYMMETRIC` 关键字则 value1 不在 value2 和 value3 之间返回 `TRUE`。
当 value2 或 value3 为 `NULL` 时,返回 `TRUE` 或 `UNKNOWN`。
例如 `12 NOT BETWEEN 15 AND 12` 返回 `TRUE`;
`12 NOT BETWEEN SYMMETRIC 15 AND 12` 返回 `FALSE`;
`12 NOT BETWEEN NULL AND 15` 返回 `UNKNOWN`;
`12 NOT BETWEEN 15 AND NULL` 返回 `TRUE`;
`12 NOT BETWEEN SYMMETRIC 12 AND NULL` 返回 `UNKNOWN`。
- sql: string1 LIKE string2 [ ESCAPE char ]
table: string1.like(string2)
description: |
如果 string1 匹配 string2 返回 `TRUE`;如果 string1 或 string2 为 `NULL` 返回 `UNKNOWN`。
如果需要可以定义转义字符。尚不支持转义字符。
- sql: string1 NOT LIKE string2 [ ESCAPE char ]
description: |
如果 string1 与 string2 不匹配返回 `TRUE`;如果 string1 或 string2 为 `NULL` 返回 `UNKNOWN`。
如果需要可以定义转义字符。尚不支持转义字符。
- sql: string1 SIMILAR TO string2 [ ESCAPE char ]
table: string1.similar(string2)
description: |
如果 string1 匹配 SQL 正则表达式 string2 返回 `TRUE`;如果 string1 或 string2 为 `NULL` 返回
`UNKNOWN`。如果需要可以定义转义字符。尚不支持转义字符。
- sql: string1 NOT SIMILAR TO string2 [ ESCAPE char ]
description: |
如果 string1 与 SQL 正则表达式 string2 不匹配返回 `TRUE`;如果 string1 或 string2 为 `NULL` 返回
`UNKNOWN`。如果需要可以定义转义字符。尚不支持转义字符。
- sql: value1 IN (value2 [, value3]* )
table: value1.in(valu2)
description: |
在给定列表 (value2, value3, ...) 中存在 value1 返回 `TRUE`。当列表包含 `NULL`,如果可以找到 value1 则返回
`TRUE`,否则返回 `UNKNOWN`。如果 value1 为 `NULL` 则始终返回 `UNKNOWN`。例如 `4 IN (1, 2, 3)` 返回
`FALSE`;`1 IN (1, 2, NULL)` 返回 `TRUE`;`4 IN (1, 2, NULL)` 返回 `UNKNOWN`。
- sql: value1 NOT IN (value2 [, value3]* )
description: |
在给定列表 (value2, value3, ...) 中不存在 value1 返回 `TRUE`。当列表包含 `NULL`,如果可以找到 value1 则
返回 `FALSE`,否则返回 `UNKNOWN`。如果 value1 为 `NULL`,则始终返回 `UNKNOWN`。例如 `4 NOT IN (1, 2, 3)`
返回 `TRUE`;`1 NOT IN (1, 2, NULL)` 返回 `FALSE`;`4 NOT IN (1, 2, NULL)` 返回 `UNKNOWN`。
- sql: EXISTS (sub-query)
description: |
如果子查询至少返回一行则返回 `TRUE`。 仅支持可以在 join 和分组操作中可以被重写的操作。对于流式查询,该操作在 join
和分组操作中被重写。根据输入行的数量计算查询结果所需的状态可能会无限增长。请提供具有有效保留间隔的查询配置,以防止状态过大。
- sql: value IN (sub-query)
table: value1.in(TABLE)
description: 如果 value 等于子查询结果集中的一行则返回 `TRUE`。
- sql: value NOT IN (sub-query)
description: 如果 value 不包含于子查询返回的行则返回 `TRUE`。
- table: value1.between(value2, value3)
description: |
如果 value1 大于或等于 value2 且小于或等于 value3 返回 `TRUE`。当 value2 或 value3 为 `NULL` 时,
返回 `FALSE` 或 `UNKNOWN`。
- table: value1.notBetween(value2, value3)
description: |
如果 value1 大于或等于 value2 且小于或等于 value3 返回 `FALSE`。当 value2 或 value3 为 `NULL` 时,
返回 `TRUE` 或 `UNKNOWN`。
logical:
- sql: boolean1 OR boolean2
table: BOOLEAN1 || BOOLEAN2
description: |
如果 boolean1 为 `TRUE` 或 boolean2 为 `TRUE` 返回 `TRUE`。支持三值逻辑。
例如 `true || Null(BOOLEAN)` 返回 `TRUE`。
- sql: boolean1 AND boolean2
table: BOOLEAN1 && BOOLEAN2
description: |
如果 boolean1 和 boolean2 都为 `TRUE` 返回 `TRUE`。支持三值逻辑。
例如 `true && Null(BOOLEAN)` 返回 `UNKNOWN`。
- sql: NOT boolean
table: BOOLEAN.not(), not(BOOLEAN), or '!BOOLEAN' (Scala only)
description: |
如果布尔值为 `FALSE` 返回 `TRUE`;如果布尔值为 `TRUE` 返回 `FALSE`;如果布尔值为 `UNKNOWN`
返回 `UNKNOWN`。
- sql: boolean IS FALSE
table: BOOLEAN.isFalse
description: 如果布尔值为 `FALSE` 返回 `TRUE`;如果 boolean 为 `TRUE` 或 `UNKNOWN` 返回 `FALSE`。
- sql: boolean IS NOT FALSE
table: BOOLEAN.isNotFalse
description: 如果 boolean 为 `TRUE` 或 `UNKNOWN` 返回 `TRUE`;如果 boolean 为 `FALSE` 返回 `FALSE`。
- sql: boolean IS TRUE
table: BOOLEAN.isTrue
description: 如果 boolean 为 `TRUE` 返回 `TRUE`;如果 boolean 为 `FALSE` 或 `UNKNOWN` 返回 `FALSE`。
- sql: boolean IS NOT TRUE
table: BOOLEAN.isNotTrue
description: 如果 boolean 为 `FALSE` 或 `UNKNOWN` 返回 `TRUE`;如果布尔值为 `TRUE` 返回 `FALSE`。
- sql: boolean IS UNKNOWN
description: 如果布尔值为 `UNKNOWN` 返回 `TRUE`;如果 boolean 为 `TRUE` 或 `FALSE` 返回 `FALSE`。
- sql: boolean IS NOT UNKNOWN
description: 如果 boolean 为 `TRUE` 或 `FALSE` 返回 `TRUE`;如果布尔值为 `UNKNOWN` 返回 `FALSE`。
arithmetic:
- sql: + numeric
table: + NUMERIC
description: 返回 numeric。
- sql: '- numeric'
table: '- NUMERIC'
description: 返回 numeric 的相反数。
- sql: numeric1 + numeric2
table: NUMERIC1 + NUMERIC2
description: 返回 numeric1 加 numeric2。
- sql: numeric1 - numeric2
table: NUMERIC1 + NUMERIC2
description: 返回 numeric1 减 numeric2。
- sql: numeric1 * numberic2
table: NUMERIC1 * NUMERIC2
description: 返回 numeric1 乘以 numeric2。
- sql: numeric1 / numeric2
table: NUMERIC1 / NUMERIC2
description: 返回 numeric1 除以 numeric2。
- sql: numeric1 % numeric2
table: MOD(NUMERIC1, NUMERIC2)
description: 返回 numeric1 除以 numeric2 的余数(模数)。仅当 numeric1 为负时,结果才为负。
- sql: POWER(numeric1, numeric2)
table: NUMERIC1.power(NUMERIC2)
description: 返回 numeric1 的 numeric2 次方。
- sql: ABS(numeric)
table: NUMERIC.abs()
description: 返回 numeric 的绝对值。
- sql: SQRT(numeric)
table: NUMERIC.sqrt()
description: 返回 numeric 的平方根。
- sql: LN(numeric)
table: NUMERIC.ln()
description: 返回 numeric 的自然对数(以 e 为底)。
- sql: LOG10(numeric)
table: NUMERIC.log10()
description: 返回以 10 为底的 numeric 的对数。
- sql: LOG2(numeric)
table: NUMERIC.log2()
description: 返回以 2 为底的 numeric 的对数。
- sql: |
LOG(numeric2)
LOG(numeric1, numeric2)
table: |
NUMERIC1.log()
NUMERIC1.log(NUMERIC2)
description: |
当用一个参数调用时,返回 numeric2 的自然对数。当使用两个参数调用时,此函数返回 numeric2 以 numeric1
为底的对数。numeric2 必须大于 0,numeric1 必须大于 1。
- sql: EXP(numeric)
table: NUMERIC.exp()
description: 返回 e 的 numeric 次幂。
- sql: |
CEIL(numeric)
CEILING(numeric)
table: |
NUMERIC.ceil()
NUMERIC.ceiling()
description: 向上取整,并返回大于或等于 numeric 的最小整数。
- sql: FLOOR(numeric)
table: NUMERIC.floor()
description: 向下取整,并返回小于或等于 numeric 的最大整数。
- sql: SIN(numeric)
table: NUMERIC.sin()
description: 返回 numeric 的正弦值。
- sql: SINH(numeric)
table: NUMERIC.sinh()
description: 返回 numeric 的双曲正弦值。返回类型为 DOUBLE。
- sql: COS(numeric)
table: NUMERIC.cos()
description: 返回 numeric 的余弦值。
- sql: TAN(numeric)
table: NUMERIC.tan()
description: 返回 numeric 的正切值。
- sql: TANH(numeric)
table: NUMERIC.tanh()
description: 返回 numeric 的双曲正切值。返回类型为 DOUBLE。
- sql: COT(numeric)
table: NUMERIC.cot()
description: 返回 numeric 的余切值。
- sql: ASIN(numeric)
table: NUMERIC.asin()
description: 返回 numeric 的反正弦值。
- sql: ACOS(numeric)
table: NUMERIC.acos()
description: 返回 numeric 的反余弦值。
- sql: ATAN(numeric)
table: NUMERIC.atan()
description: 返回 numeric 的反正切值。
- sql: ATAN2(numeric1, numeric2)
table: atan2(NUMERIC1, NUMERIC2)
description: 返回坐标 (numeric1, numeric2) 的反正切。
- sql: COSH(numeric)
table: NUMERIC.cosh()
description: 返回 numeric 的双曲余弦值。返回值类型为 DOUBLE。
- sql: DEGREES(numeric)
table: NUMERIC.degrees()
description: 返回弧度 numeric 的度数表示。
- sql: RADIANS(numeric)
table: NUMERIC.radians()
description: 返回度数 numeric 的弧度表示。
- sql: SIGN(numeric)
table: NUMERIC.sign()
description: 返回 numeric 的符号。
- sql: ROUND(numeric, INT)
table: NUMERIC.round(INT)
description: 返回 numeric 四舍五入保留 INT 小数位的值。
- sql: PI()
table: pi()
description: 返回无比接近 pi 的值。
- sql: E()
table: e()
description: 返回无比接近 e 的值。
- sql: RAND()
table: rand()
description: 返回 [0.0, 1.0) 范围内的伪随机双精度值。
- sql: RAND(INT)
table: rand(INT)
description: |
返回范围为 [0.0, 1.0) 的伪随机双精度值,初始种子为 INT。
如果两个 RAND 函数具有相同的初始种子,它们将返回相同的数字序列。
- sql: RAND_INTEGER(INT)
table: randInteger(INT)
description: 返回 [0.0, INT) 范围内的伪随机双精度值。
- sql: RAND_INTEGER(INT1, INT2)
table: randInteger(INT1, INT2)
description: |
返回范围为 [0.0, INT2) 的伪随机双精度值,初始种子为 INT1。
如果两个 RAND_INTGER 函数具有相同的初始种子和边界,它们将返回相同的数字序列。
- sql: UUID()
table: uuid()
description: |
根据 RFC 4122 类型 4(伪随机生成)UUID,返回 UUID(通用唯一标识符)字符串。
例如“3d3c68f7-f608-473f-b60c-b0c44ad4cc4e”,UUID 是使用加密强的伪随机数生成器生成的。
- sql: BIN(INT)
table: INT.bin()
description: |
以二进制格式返回 INTEGER 的字符串表示形式。如果 INTEGER 为 `NULL`,则返回 `NULL`。
例如 4.bin() 返回“100”,12.bin() 返回“1100”。
- sql: |
HEX(numeric)
HEX(string)
table: |
NUMERIC.hex()
string.hex()
description: |
以十六进制格式返回整数 numeric 值或 STRING 的字符串表示形式。如果参数为 `NULL`,则返回 `NULL`。
例如数字 20 返回“14”,数字 100 返回“64”,字符串“hello,world” 返回“68656C6C6F2C776F726C64”。
- sql: TRUNCATE(numeric1, integer2)
table: NUMERIC1.truncate(INTEGER2)
description: |
返回截取 integer2 位小数的数字。如果 numeric1 或 integer2 为 `NULL`,则返回 `NULL`。
如果 integer2 为 0,则结果没有小数点或小数部分。integer2 可以为负数,使值的小数点左边的 integer2 位变为零。
此函数也可以传入只有一个 numeric1 参数且不设置 Integer2 以使用。如果未设置 Integer2 则 Integer2 为 0。
例如 42.324.truncate(2) 为 42.32,42.324.truncate() 为 42.0。
string:
- sql: string1 || string2
table: STRING1 + STRING2
description: 返回 STRING1 和 STRING2 的连接。
- sql: |
CHAR_LENGTH(string)
CHARACTER_LENGTH(string)
table: STRING.charLength()
description: 返回字符串中的字符数。
- sql: UPPER(string)
table: STRING.upperCase()
description: 以大写形式返回字符串。
- sql: LOWER(string)
table: STRING.lowerCase()
description: 以小写形式返回字符串。
- sql: POSITION(string1 IN string2)
table: STRING1.position(STRING2)
description: 返回 STRING2 中第一次出现 STRING1 的位置(从 1 开始);如果在 STRING2 中找不到 STRING1 返回 0。
- sql: TRIM([ BOTH | LEADING | TRAILING ] string1 FROM string2)
table: |
STRING1.trim(LEADING, STRING2)
STRING1.trim(TRAILING, STRING2)
STRING1.trim(BOTH, STRING2)
STRING1.trim(BOTH)
STRING1.trim()
description: 返回从 STRING1 中删除以字符串 STRING2 开头/结尾/开头且结尾的字符串的结果。默认情况下,两边的空格都会被删除。
- sql: LTRIM(string)
table: STRING.ltrim()
description: |
返回从 STRING 中删除左边空格的字符串。
例如 `' This is a test String.'.ltrim()` 返回 `'This is a test String.'`。
- sql: RTRIM(string)
table: STRING.rtrim()
description: |
返回从 STRING 中删除右边空格的字符串。
例如 `'This is a test String. '.ltrim()` 返回 `'This is a test String.'`。
- sql: REPEAT(string, int)
table: STRING.repeat(INT)
description: |
返回 INT 个 `string` 连接的字符串。
例如 `REPEAT('This is a test String.', 2)` 返回 `"This is a test String.This is a test String."`。
- sql: REGEXP_REPLACE(string1, string2, string3)
table: STRING1.regexpReplace(STRING2, STRING3)
description: |
返回 STRING1 所有与正则表达式 STRING2 匹配的子字符串被 STRING3 替换后的字符串。
例如 `'foobar'.regexpReplace('oo|ar', '')` 返回 `"fb"`。
- sql: OVERLAY(string1 PLACING string2 FROM integer1 [ FOR integer2 ])
table: |
STRING1.overlay(STRING2, INT1)
STRING1.overlay(STRING2, INT1, INT2)
description: |
返回一个字符串,该字符串从位置 INT1 用 STRING2 替换 STRING1 的 INT2(默认为 STRING2 的长度)字符。
例如 `'xxxxxtest'.overlay('xxxx', 6)` 返回 `"xxxxxxxxx"`;
`'xxxxxtest'.overlay('xxxx', 6, 2)` 返回 `"xxxxxxxxxst"`。
- sql: SUBSTRING(string FROM integer1 [ FOR integer2 ])
table: |
STRING.substring(INT1)
STRING.substring(INT1, INT2)
description: 返回 STRING 从位置 INT1 开始,长度为 INT2(默认到结尾)的子字符串。
- sql: REPLACE(string1, string2, string3)
table: STRING1.replace(STRING2, STRING3)
description: |
返回一个新字符串,它用 STRING1 中的 STRING3(非重叠)替换所有出现的 STRING2。
例如 `'hello world'.replace('world', 'flink')` 返回 `'hello flink'`;
`'ababab'.replace('abab', 'z')` 返回 `'zab'`。
- sql: REGEXP_EXTRACT(string1, string2[, integer])
table: STRING1.regexpExtract(STRING2[, INTEGER1])
description: |
将字符串 STRING1 按照 STRING2 正则表达式的规则拆分,返回指定 INTEGER1 处位置的字符串。正则表达式匹配组索引从 1 开始,
0 表示匹配整个正则表达式。此外,正则表达式匹配组索引不应超过定义的组数。
例如 `REGEXP_EXTRACT('foothebar', 'foo(.*?)(bar)', 2)` 返回 `"bar"`。
- sql: INITCAP(string)
table: STRING.initCap()
description: |
返回新形式的 STRING,其中每个单词的第一个字符转换为大写,其余字符转换为小写。这里的单词表示字母数字的字符序列。
- sql: CONCAT(string1, string2, ...)
table: concat(STRING1, STRING2, ...)
description: |
返回连接 string1,string2, ... 的字符串。如果有任一参数为 `NULL`,则返回 `NULL`。
例如 `CONCAT('AA', 'BB', 'CC')` 返回 `"AABBCC"`。
- sql: CONCAT_WS(string1, string2, string3, ...)
table: concat_ws(STRING1, STRING2, STRING3, ...)
description: |
返回将 STRING2, STRING3, ... 与分隔符 STRING1 连接起来的字符串。在要连接的字符串之间添加分隔符。
如果 STRING1 为 `NULL`,则返回 `NULL`。与 concat() 相比,concat_ws() 会自动跳过 `NULL` 参数。
例如 `concat_ws('~', 'AA', Null(STRING), 'BB', '', 'CC')` 返回 `"AA~BB~~CC"`.
- sql: LPAD(string1, integer, string2)
table: STRING1.lpad(INT, STRING2)
description: |
返回从 string1 靠左填充 string2 到 INT 长度的新字符串。如果 string1 的长度小于 INT 值,则返回 string1 缩
短为整数字符。例如 `LPAD('hi', 4, '??')` 返回 `"??hi"`;`LPAD('hi', 1, '??')` 返回 `"h"。
- sql: RPAD(string1, integer, string2)
table: STRING1.rpad(INT, STRING2)
description: |
返回从 string1 靠右边填充 string2 到 INT 长度的新字符串。如果 string1 的长度小于 INT 值,则返回 string1 缩
短为长度为 INT 的新字符串。例如 `RPAD('hi', 4, '??')` 返回 `"hi??"`, `RPAD('hi', 1, '??')` 返回 `"h"`。
- sql: FROM_BASE64(string)
table: STRING.fromBase64()
description: |
返回字符串 string1 的 base64 解码的结果;如果字符串为 `NULL`,则返回 `NULL`。
例如 `FROM_BASE64('aGVsbG8gd29ybGQ=')` 返回 `"hello world"`。
- sql: TO_BASE64(string)
table: STRING.toBase64()
description: |
返回字符串 string 的 base64 编码的结果;如果字符串为 `NULL`,则返回 `NULL`。
例如 `TO_BASE64('hello world')` 返回 `"aGVsbG8gd29ybGQ="`。
- sql: ASCII(string)
description: |
返回字符串 string 第一个字符的数值。如果字符串为 `NULL` 则返回 `NULL`。
例如 `ascii('abc')` 返回 `97`,`ascii(CAST(NULL AS VARCHAR))` 返回 `NULL`。
- sql: CHR(integer)
description: |
返回二进制等于 integer 的 ASCII 字符。如果整数 integer 大于 255,我们先将得到整数对 255 取模数,
并返回模数的 CHR。如果整数为 `NULL`,则返回 `NULL`。例如 `chr(97)` 返回 `a`,`chr(353)` 返回 `a`,
`ascii(CAST(NULL AS VARCHAR))` 返回 `NULL`。
- sql: DECODE(binary, string)
description: |
使用提供的字符集('US-ASCII','ISO-8859-1','UTF-8','UTF-16BE','UTF-16LE','UTF-16')解码。
如果任一参数为空,则结果也将为空。
- sql: ENCODE(string1, string2)
description: |
使用提供的字符集('US-ASCII','ISO-8859-1','UTF-8','UTF-16BE','UTF-16LE','UTF-16')编码。
如果任一参数为空,则结果也将为空。
- sql: INSTR(string1, string2)
description: 返回 string2 在 string1 中第一次出现的位置。如果有任一参数为 `NULL`,则返回 `NULL`。
- sql: LEFT(string, integer)
description: |
返回字符串中最左边的长度为 integer 值的字符串。如果 integer 为负,则返回 `EMPTY` 字符串。如果有任一参数
为 `NULL` 则返回 `NULL`。
- sql: RIGHT(string, integer)
description: |
返回字符串中最右边的长度为 integer 值的字符串。如果 integer 为负,则返回 `EMPTY` 字符串。如果有任一参数
为 `NULL` 则返回 `NULL`。
- sql: LOCATE(string1, string2[, integer])
description: |
返回 string2 中 string1 在位置 integer 之后第一次出现的位置。未找到返回 0。如果有任一参数为 `NULL` 则返回 `NULL`。
- sql: PARSE_URL(string1, string2[, string3])
description: |
从 URL 返回指定的部分。string2 的有效值包括“HOST”,“PATH”,“QUERY”,“REF”,“PROTOCOL”,“AUTHORITY”,“FILE”和“USERINFO”。
如果有任一参数为 `NULL`,则返回 `NULL`。例如
`parse_url(' http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST')` 返回 `'facebook.com'`。
还可以通过提供关键词 string3 作为第三个参数来提取 QUERY 中特定键的值。例如
`parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1')` 返回 `'v1'`。
- sql: REGEXP(string1, string2)
description: |
如果 string1 的任何(可能为空)子字符串与 Java 正则表达式 string2 匹配,则返回 TRUE,否则返回 FALSE。
如果有任一参数为 `NULL`,则返回 `NULL`。
- sql: REVERSE(string)
description: 返回反转的字符串。如果字符串为 `NULL`,则返回 `NULL`。
- sql: SPLIT_INDEX(string1, string2, integer1)
description: |
通过分隔符 string2 拆分 string1,返回拆分字符串的第 integer(从零开始)个字符串。如果整数为负,则返回 `NULL`。
如果有任一参数为 `NULL`,则返回 `NULL`。
- sql: STR_TO_MAP(string1[, string2, string3]])
description: |
使用分隔符将 string1 拆分为键值对后返回一个 map。string2 是 pair 分隔符,默认为 ','。string3 是键值分隔符,默认为 '='。
- sql: SUBSTR(string[, integer1[, integer2]])
description: 返回字符串的子字符串,从位置 integer1 开始,长度为 integer2(默认到末尾)。
temporal:
- sql: DATE string
table: STRING.toDate()
description: 以“yyyy-MM-dd”的形式返回从字符串解析的 SQL 日期。
- sql: TIME string
table: STRING.toTime()
description: 以“HH:mm:ss”的形式返回从字符串解析的 SQL 时间。
- sql: TIMESTAMP string
table: STRING.toTimestamp()
description: 以“yyyy-MM-dd HH:mm:ss[.SSS]”的形式返回从字符串解析的 SQL 时间戳。
- sql: INTERVAL string range
description: |
从“dd hh:mm:ss.fff”形式的字符串解析 SQL 毫秒间隔或者从“yyyy-mm”形式的字符串解析 SQL 月数间隔。间隔范围可以
是 DAY,MINUTE,DAY TO HOUR 或 DAY TO SECOND,以毫秒为间隔;YEAR 或 YEAR TO MONTH 表示几个月的间隔。例
如 `INTERVAL '10 00:00:00.004' DAY TO SECOND,INTERVAL '10' DAY` 或 `INTERVAL '2-10' YEAR TO
MONTH` 返回间隔。
- sql: YEAR(date)
table: numeric.year | numeric.years
description: 创建 numeric 年的月间隔。
- table: numeric.quarter | numeric.quarters
description: 为 numeric 季度创建月间隔。例如 `2.quarters` 返回 `6`。
- table: numeric.month | numeric.months
description: 创建 numeric 个月的间隔。
- table: numeric.week | numeric.weeks
description: 为 numeric 周创建毫秒间隔。例如 2.weeks 返回 1209600000。
- table: numeric.day | numeric.days
description: 创建 numeric 天的毫秒间隔。
- table: numeric.hour | numeric.hours
description: 创建 numeric 小时的毫秒间隔。
- table: numeric.minute | numeric.minutes
description: 创建 numeric 分钟的毫秒间隔。
- table: numeric.second | numeric.seconds
description: 创建 numeric 秒的毫秒间隔。
- table: numeric.milli | numeric.millis
description: 创建 numeric 毫秒的毫秒间隔。
- sql: LOCALTIME
table: localTime()
description: |
返回本地时区的当前 SQL 时间,返回类型为 TIME(0)。在流模式下为每条记录进行取值。
但在批处理模式下,它在查询开始时计算一次,并对每一行使用相同的结果。
- sql: LOCALTIMESTAMP
table: localTimestamp()
description: |
返回本地时区的当前 SQL 时间,返回类型为 TIMESTAMP(3)。在流模式下为每条记录进行取值。
但在批处理模式下,它在查询开始时计算一次,并对每一行使用相同的结果。
- sql: CURRENT_TIME
table: currentTime()
description: 返回本地时区的当前 SQL 时间,这是 LOCAL_TIME 的同义词。
- sql: CURRENT_DATE
table: currentDate()
description: |
返回本地时区中的当前 SQL 日期。在流模式下为每条记录进行取值。
但在批处理模式下,它在查询开始时计算一次,并对每一行使用相同的结果。
- sql: CURRENT_TIMESTAMP
table: currentTimestamp()
description: |
返回本地时区的当前 SQL 时间戳,返回类型为 TIMESTAMP_LTZ(3)。在流模式下为每条记录进行取值。
但在批处理模式下,它在查询开始时计算一次,并对每一行使用相同的结果。
- sql: NOW()
description: 返回本地时区的当前 SQL 时间戳,这是 CURRENT_TIMESTAMP 的同义词。
- sql: CURRENT_ROW_TIMESTAMP()
description: |
返回本地时区的当前 SQL 时间戳,返回类型为 TIMESTAMP_LTZ(3)。无论是在批处理模式还是流模式下,都会为每条记录进行取值。
- sql: EXTRACT(timeinteravlunit FROM temporal)
table: TEMPORAL.extract(TIMEINTERVALUNIT)
description: 返回从时间的时间间隔单位部分提取的 long 值。例如 `EXTRACT(DAY FROM DATE '2006-06-05')` 返回 5。
- sql: YEAR(date)
description: |
从 SQL 日期 date 返回年份。相当于 EXTRACT(YEAR FROM date)。例如 `YEAR(DATE '1994-09-27')` 返回 1994。
- sql: QUARTER(date)
description: |
从 SQL 日期 date 返回一年中的季度(1 到 4 之间的整数)。相当于 EXTRACT(QUARTER FROM date)。
例如 `QUARTER(DATE '1994-09-27')` 返回 3。
- sql: MONTH(date)
description: |
从 SQL 日期 date 返回一年中的月份(1 到 12 之间的整数)。相当于 EXTRACT(MONTH FROM date)。
例如 `MONTH(DATE '1994-09-27')` 返回 9。
- sql: WEEK(date)
description: |
从 SQL 日期 date 返回一年中的第几周(1 到 53 之间的整数)。相当于 EXTRACT(WEEK FROM date)。
例如 `WEEK(DATE '1994-09-27')` 返回 39。
- sql: DAYOFYEAR(date)
description: |
从 SQL 日期 date 返回一年中的第几天(1 到 366 之间的整数)。相当于 EXTRACT(DOY FROM date)。
例如 `DAYOFYEAR(DATE '1994-09-27')` 返回 270。
- sql: DAYOFMONTH
description: |
从 SQL 日期 date 返回一个月中的第几天(1 到 31 之间的整数)。相当于 EXTRACT(DAY FROM date)。
例如 `DAYOFWEEK(DATE '1994-09-27')` 返回 3。
- sql: HOUR(timestamp)
description: |
从 SQL 时间戳 timestamp 返回小时单位部分的小时(0 到 23 之间的整数)数。相当于 EXTRACT(HOUR FROM timestamp)。
例如 `MINUTE(TIMESTAMP '1994-09-27 13:14:15')` 返回 14。
- sql: MINUTE(timestamp)
description: |
从 SQL 时间戳 timestamp 返回分钟单位的分钟数(0 到 59 之间的整数)。相当于 EXTRACT(MINUTE FROM timestamp)。
例如 `MINUTE(TIMESTAMP '1994-09-27 13:14:15')` 返回 14。
- sql: SECOND(timestamp)
description: |
从 SQL 时间戳 timestamp 返回秒单位部分的秒数(0 到 59 之间的整数)。相当于 EXTRACT(SECOND FROM timestamp)。
例如 `SECOND(TIMESTAMP '1994-09-27 13:14:15')` 返回 15。
- sql: FLOOR(timepoint TO timeintervalunit)
table: TIMEPOINT.floor(TIMEINTERVALUNIT)
description: |
返回将时间点 timepoint 向下取值到时间单位 timeintervalunit 的值。例如 `FLOOR(TIME '12:44:31' TO MINUTE)`
返回 12:44:00。
- sql: CEIL(timespoint TO timeintervaluntit)
table: TIMEPOINT.ceil(TIMEINTERVALUNIT)
description: |
返回将时间点 timespoint 向上取值到时间单位 TIMEINTERVALUNIT 的值。例如 `CEIL(TIME '12:44:31' TO MINUTE)`
返回 12:45:00。
- sql: (timepoint1, temporal1) OVERLAPS (timepoint2, temporal2)
table: temporalOverlaps(TIMEPOINT1, TEMPORAL1, TIMEPOINT2, TEMPORAL2)
description: |
如果由 (timepoint1, temporal1) 和 (timepoint2, temporal2) 定义的两个时间间隔重叠,则返回 TRUE。
时间值可以是时间点或时间间隔。例如
`(TIME '2:55:00', INTERVAL '1' HOUR) OVERLAPS (TIME '3:30:00', INTERVAL '2' HOUR)` 返回 TRUE;
`(TIME '9:00:00', TIME '10:00:00') OVERLAPS (TIME '10:15:00', INTERVAL '3' HOUR)` 返回 FALSE。
- sql: DATE_FORMAT(timestamp, string)
description: |
将时间戳 timestamp 转换为日期格式字符串 string 指定格式的字符串值。格式字符串与 Java 的 SimpleDateFormat 兼容。
- sql: TIMESTAMPADD(timeintervalunit, interval, timepoint)
- sql: TIMESTAMPDIFF(timepointunit, timepoint1, timepoint2)
table: timestampDiff(TIMEPOINTUNIT, TIMEPOINT1, TIMEPOINT2)
description: |
返回 timepoint1 和 timepoint2 之间时间间隔。间隔的单位由第一个参数给出,它应该是以下值之一:
SECOND,MINUTE,HOUR,DAY,MONTH 或 YEAR。
- sql: CONVERT_TZ(string1, string2, string3)
description: |
将日期时间 string1(具有默认 ISO 时间戳格式 'yyyy-MM-dd HH:mm:ss')从时区 string2 转换为时区 string3 的值。
时区的格式应该是缩写如“PST”,全名如“America/Los_Angeles”,或自定义 ID 如“GMT-08:00”。例如
`CONVERT_TZ('1970-01-01 00:00:00', 'UTC', 'America/Los_Angeles')` 返回 `'1969-12-31 16:00:00`'。
- sql: FROM_UNIXTIME(numeric[, string])
description: |
以字符串格式 string 返回数字参数 numberic 的表示形式(默认为 'yyyy-MM-dd HH:mm:ss')。numeric 是一个内部
时间戳值,表示自'1970-01-01 00:00:00' UTC 以来的秒数,由 UNIX_TIMESTAMP() 函数生成。返回值以会话时区表示
(在 TableConfig 中指定)。例如,如果在 UTC 时区,FROM_UNIXTIME(44) 返回 '1970-01-01 00:00:44',如果在
'Asia/Tokyo' 时区,则返回 '1970-01-01 09:00:44'。
- sql: UNIX_TIMESTAMP()
description: 以秒为单位获取当前的 Unix 时间戳。此函数不是确定性的,这意味着将为每个记录重新计算该值。
- sql: UNIX_TIMESTAMP(string1[, string2])
description: |
使用表配置中指定的时区将格式为 string2 的日期时间字符串 string1(如果未指定默认情况下:yyyy-MM-dd HH:mm:ss)
转换为 Unix 时间戳(以秒为单位)。
- sql: TO_DATE(string1[, string2])
description: 将格式为 string2(默认为 'yyyy-MM-dd')的字符串 string1 转换为日期。
- sql: TO_TIMESTAMP_LTZ(numeric, precision)
table: toTimestampLtz(numeric, PRECISION)
description: |
将纪元秒或纪元毫秒转换为 TIMESTAMP_LTZ,有效精度为 0 或 3,0 代表 `TO_TIMESTAMP_LTZ(epochSeconds, 0)`,
3 代表` TO_TIMESTAMP_LTZ(epochMilliseconds, 3)`。
- sql: TO_TIMESTAMP(string1[, string2])
description: 将 'UTC+0' 时区下格式为 string2(默认为:'yyyy-MM-dd HH:mm:ss')的字符串 string1 转换为时间戳。
- sql: CURRENT_WATERMARK(rowtime)
description: |
返回给定时间列属性 rowtime 的当前水印,如果管道中的当前操作没有可用的上游操作的公共水印时则为 `NULL`。
函数的返回类型被推断为与提供的时间列属性匹配,但调整后的精度为 3。例如时间列属性为 TIMESTAMP_LTZ(9),则函数将返回
TIMESTAMP_LTZ(3)。
请注意,此函数可以返回 `NULL`,您可能必须考虑这种情况。例如,如果您想过滤掉后期数据,您可以使用:
```
WHERE
CURRENT_WATERMARK(ts) IS NULL
OR ts > CURRENT_WATERMARK(ts)
```
conditional:
- sql: |
CASE value
WHEN value1_1 [, value1_2]* THEN RESULT1
(WHEN value2_1 [, value2_2 ]* THEN result_2)*
(ELSE result_z)
END
description: |
当第一个时间值包含在 (valueX_1, valueX_2, ...) 中时,返回 resultX。当没有值匹配时,如果提供则返回 result_z,
否则返回 `NULL`。
- sql: |
CASE
WHEN condition1 THEN result1
(WHEN condition2 THEN result2)*
(ELSE result_z)
END
description: 满足第一个条件 X 时返回 resultX。当不满足任何条件时,如果提供则返回 result_z,否则返回 `NULL`。
- sql: NULLIF(value1, value2)
description: |
如果 value1 等于 value2 返回 `NULL`;否则返回 value1。例如 `NULLIF(5, 5)` 返回 `NULL`;`NULLIF(5, 0)` 返回 5。
- sql: COALESCE(value1, value2 [, value3]*)
description: 从 value1, value2, ... 返回第一个不为 `NULL` 的值。例如 `COALESCE(3, 5, 3)` 返回 3。
- sql: IF(condition, true_value, false_value)
description: 如果满足条件,则返回 true_value,否则返回 false_value。例如 `IF(5 > 3, 5, 3)` 返回 5。
- sql: IFNULL(input, null_replacement)
table: input.ifNull(nullReplacement)
description: |
如果输入为 `NULL`,则返回 null_replacement;否则返回输入。与 COALESCE 或 CASE WHEN 相比,此函数返回的数据类型
在是否为空方面非常明确。。返回的类型是两个参数的公共类型,但只有在 null_replacement 可为空时才能为空。该函数允许将可
为空的列传递到使用 NOT NULL 约束声明的函数或表中。例如 `IFNULL(nullable_column, 5)` 一定不返回 `NULL`。
- sql: IS_ALPHA(string)
description: 如果字符串中的所有字符都是字母,则返回 `true`,否则返回 `false`。
- sql: IS_DECIMAL(string)
description: 如果 string 可以解析为有效数字,则返回 `true`,否则返回 `false`。
- sql: IS_DIGIT(string)
description: 如果字符串中的所有字符都是数字,则返回 `true`,否则返回 `false`。
- table: BOOLEAN.?(VALUE1, VALUE2)
description: |
如果 BOOLEAN 计算结果为 TRUE,则返回 VALUE1;否则返回 VALUE2。例如 `(42 > 5).?('A', 'B')` 返回 `"A"`。
- sql: GREATEST(value1[, value2]*)
description: 返回所有输入参数的最大值,如果输入参数中包含 NULL,则返回 NULL。
- sql: LEAST(value1[, value2]*)
description: 返回所有输入参数的最小值,如果输入参数中包含 NULL,则返回 NULL。
conversion:
- sql: CAST(value AS type)
table: ANY.cast(TYPE)
description: |
返回被强制转换为类型 type 的新值。例如 `CAST('42' AS INT)` 返回 42;
`CAST(NULL AS VARCHAR)` 返回 VARCHAR 类型的 `NULL`。
- sql: TYPEOF(input) | TYPEOF(input, force_serializable)
table: call("TYPEOF", input) | call("TYPEOF", input, force_serializable)
description: |
返回输入表达式的数据类型的字符串表示形式。默认情况下返回的字符串是一个摘要字符串,可能会为了可读性而省略某些细节。
如果 force_serializable 设置为 TRUE,则字符串表示可以保留在目录中的完整数据类型。请注意,
特别是匿名的内联数据类型没有可序列化的字符串表示。在这种情况下返回 `NULL`。
collection:
- sql: CARDINALITY(array)
table: ARRAY.cardinality()
description: 返回数组中元素的数量。
- sql: array '[' INT ']'
table: ARRAY.at(INT)
description: 返回数组中 INT 位置的元素。索引从 1 开始。
- sql: ELEMENT(array)
table: ARRAY.element()
description: 返回数组的唯一元素(其基数应为 1);如果数组为空,则返回 `NULL`。如果数组有多个元素,则抛出异常。
- sql: CARDINALITY(map)
table: MAP.cardinality()
description: 返回 map 中的 entries 数量。
- sql: map ‘[’ value ‘]’
table: MAP.at(ANY)
description: 返回 map 中指定 key 对应的值。
json:
- sql: IS JSON [ { VALUE | SCALAR | ARRAY | OBJECT } ]
table: STRING.isJson([JsonType type])
description: |
Determine whether a given string is valid JSON.
Specifying the optional type argument puts a constraint on which type of JSON object is
allowed. If the string is valid JSON, but not that type, `false` is returned. The default is
`VALUE`.
```
-- TRUE
'1' IS JSON
'[]' IS JSON
'{}' IS JSON
-- TRUE
'"abc"' IS JSON
-- FALSE
'abc' IS JSON
NULL IS JSON
-- TRUE
'1' IS JSON SCALAR
-- FALSE
'1' IS JSON ARRAY
-- FALSE
'1' IS JSON OBJECT
-- FALSE
'{}' IS JSON SCALAR
-- FALSE
'{}' IS JSON ARRAY
-- TRUE
'{}' IS JSON OBJECT
```
- sql: JSON_EXISTS(jsonValue, path [ { TRUE | FALSE | UNKNOWN | ERROR } ON ERROR ])
table: STRING.jsonExists(STRING path [, JsonExistsOnError onError])
description: |
Determines whether a JSON string satisfies a given path search criterion.
If the error behavior is omitted, `FALSE ON ERROR` is assumed as the default.
```
-- TRUE
SELECT JSON_EXISTS('{"a": true}', '$.a');
-- FALSE
SELECT JSON_EXISTS('{"a": true}', '$.b');
-- TRUE
SELECT JSON_EXISTS('{"a": [{ "b": 1 }]}',
'$.a[0].b');
-- TRUE
SELECT JSON_EXISTS('{"a": true}',
'strict $.b' TRUE ON ERROR);
-- FALSE
SELECT JSON_EXISTS('{"a": true}',
'strict $.b' FALSE ON ERROR);
```
- sql: JSON_VALUE(jsonValue, path [RETURNING <dataType>] [ { NULL | ERROR | DEFAULT <defaultExpr> } ON EMPTY ] [ { NULL | ERROR | DEFAULT <defaultExpr> } ON ERROR ])
table: STRING.jsonValue(STRING path [, returnType, onEmpty, defaultOnEmpty, onError, defaultOnError])
description: |
Extracts a scalar from a JSON string.
This method searches a JSON string for a given path expression and returns the value if the
value at that path is scalar. Non-scalar values cannot be returned. By default, the value is
returned as `STRING`. Using `returningType` a different type can be chosen, with the following
types being supported:
* `VARCHAR` / `STRING`
* `BOOLEAN`
* `INTEGER`
* `DOUBLE`
For empty path expressions or errors a behavior can be defined to either return `null`, raise
an error or return a defined default value instead. When omitted, the default is
`NULL ON EMPTY` or `NULL ON ERROR`, respectively. The default value may be a literal or an
expression. If the default value itself raises an error, it falls through to the error
behavior for `ON EMPTY`, and raises an error for `ON ERROR`.
```
// STRING: "true"
JSON_VALUE('{"a": true}', '$.a')
// BOOLEAN: true
JSON_VALUE('{"a": true}', '$.a' RETURNING BOOLEAN)
// STRING: "false"
JSON_VALUE('{"a": true}', 'lax $.b'
DEFAULT FALSE ON EMPTY)
// STRING: "false"
JSON_VALUE('{"a": true}', 'strict $.b'
DEFAULT FALSE ON ERROR)
```
- sql: JSON_QUERY(jsonValue, path [ { WITHOUT | WITH CONDITIONAL | WITH UNCONDITIONAL } [ ARRAY ] WRAPPER ] [ { NULL | EMPTY ARRAY | EMPTY OBJECT | ERROR } ON EMPTY ] [ { NULL | EMPTY ARRAY | EMPTY OBJECT | ERROR } ON ERROR ])
table: STRING.jsonQuery(path [, JsonQueryWrapper [, JsonQueryOnEmptyOrError, JsonQueryOnEmptyOrError ] ])
description: |
Extracts JSON values from a JSON string.
The result is always returned as a `STRING`. The `RETURNING` clause is currently not supported.
The `wrappingBehavior` determines whether the extracted value should be wrapped into an array,
and whether to do so unconditionally or only if the value itself isn't an array already.
`onEmpty` and `onError` determine the behavior in case the path expression is empty, or in
case an error was raised, respectively. By default, in both cases `null` is returned. Other
choices are to use an empty array, an empty object, or to raise an error.
```
-- '{ "b": 1 }'
JSON_QUERY('{ "a": { "b": 1 } }', '$.a')
-- '[1, 2]'
JSON_QUERY('[1, 2]', '$')
-- NULL
JSON_QUERY(CAST(NULL AS STRING), '$')
-- Wrap result into an array
-- '[{}]'
JSON_QUERY('{}', '$' WITH CONDITIONAL ARRAY WRAPPER)
-- '[1, 2]'
JSON_QUERY('[1, 2]', '$' WITH CONDITIONAL ARRAY WRAPPER)
-- '[[1, 2]]'
JSON_QUERY('[1, 2]', '$' WITH UNCONDITIONAL ARRAY WRAPPER)
-- Scalars must be wrapped to be returned
-- NULL
JSON_QUERY(1, '$')
-- '[1]'
JSON_QUERY(1, '$' WITH CONDITIONAL ARRAY WRAPPER)
-- Behavior if path expression is empty / there is an error
-- '{}'
JSON_QUERY('{}', 'lax $.invalid' EMPTY OBJECT ON EMPTY)
-- '[]'
JSON_QUERY('{}', 'strict $.invalid' EMPTY ARRAY ON ERROR)
```
- sql: JSON_OBJECT([[KEY] key VALUE value]* [ { NULL | ABSENT } ON NULL ])
table: jsonObject(JsonOnNull, keyValues...)
description: |
Builds a JSON object string from a list of key-value pairs.
Note that keys must be non-`NULL` string literals, while values may be arbitrary expressions.
This function returns a JSON string. The `ON NULL` behavior defines how to treat `NULL`
values. If omitted, `NULL ON NULL` is assumed by default.
```
-- '{}'
JSON_OBJECT()
-- '{"K1":"V1","K2":"V2"}'
JSON_OBJECT('K1' VALUE 'V1', 'K2' VALUE 'V2')
-- Expressions as values
JSON_OBJECT('orderNo' VALUE orders.orderId)
-- ON NULL
JSON_OBJECT(KEY 'K1' VALUE CAST(NULL AS STRING) NULL ON NULL) -- '{"K1":null}'
JSON_OBJECT(KEY 'K1' VALUE CAST(NULL AS STRING) ABSENT ON NULL) -- '{}'
-- '{"K1":{"K2":"V"}}'
JSON_OBJECT(
KEY 'K1'
VALUE JSON_OBJECT(
KEY 'K2'
VALUE 'V'
)
)
```
valueconstruction:
- sql: |
-- implicit constructor with parenthesis
(value1 [, value2]*)
table: row(ANY1, ANY2, ...)
description: |
返回从值列表 (value1, value2, ...) 创建的行。隐式行构造函数支持任意表达式作为字段,但至少需要两个字段。
显式行构造函数可以处理任意数量的字段,但目前还不能很好地支持所有类型的字段表达式。
- sql: ARRAY ‘[’ value1 [, value2 ]* ‘]’
table: array(ANY1, ANY2, ...)
description: 返回从值列表 (value1, value2, ...) 创建的数组。
- sql: MAP ‘[’ value1, value2 [, value3, value4 ]* ‘]’
table: map(ANY1, ANY2, ANY3, ANY4, ...)
description: 返回从键值对列表 ((value1, value2), (value3, value4), ...) 创建的 map。
- table: numeric.rows
description: 创建一个 numeric 行间隔(通常用于窗口创建)。
valueaccess:
- sql: tableName.compositeType.field
table: COMPOSITE.get(STRING) | COMPOSITE.get(INT)
description: 按名称从 Flink 复合类型(例如,Tuple,POJO)返回字段的值。
- sql: tableName.compositeType.*
table: ANY.flatten()
description: |
返回 Flink 复合类型(例如,Tuple,POJO)的平面表示,将其每个直接子类型转换为单独的字段。在大多数情况下,平面表示
的字段与原始字段的命名类似,但使用 `$` 分隔符(例如 mypojo$mytuple$f0)。
grouping:
- sql: GROUP_ID()
description: 返回唯一标识分组键组合的整数。
- sql: GROUPING(expression1 [, expression2]* ) | GROUPING_ID(expression1 [, expression2]* )
description: 返回给定分组表达式的位向量。
hashfunctions:
- sql: MD5(string)
table: STRING.md5()
description: 以 32 个十六进制数字的字符串形式返回 string 的 MD5 哈希值;如果字符串为 `NULL`,则返回 `NULL`。
- sql: SHA1(string)
table: STRING.sha1()
description: 以 56 个十六进制数字的字符串形式返回 string 的 SHA-224 哈希值;如果字符串为 `NULL`,则返回 `NULL`。
- sql: SHA224(string)
table: STRING.sha224()
description: 以 56 个十六进制数字的字符串形式返回 string 的 SHA-224 哈希值;如果字符串为 `NULL`,则返回 `NULL`。
- sql: SHA256(string)
table: STRING.sha256()
description: 以 64 个十六进制数字的字符串形式返回 string 的 SHA-256 哈希值;如果字符串为 `NULL`,则返回 `NULL`。
- sql: SHA384(string)
table: STRING.sha384()
description: 以 96 个十六进制数字的字符串形式返回 string 的 SHA-384 哈希值;如果字符串为 `NULL`,则返回 `NULL`。
- sql: SHA512(string)
table: STRING.sha512()
description: 以 128 个十六进制数字的字符串形式返回 string 的 SHA-512 哈希值;如果字符串为 `NULL`,则返回 `NULL`。
- sql: SHA2(string, hashLength)
table: STRING.sha2(INT)
description: |
使用 SHA-2 系列散列函数(SHA-224,SHA-256,SHA-384 或 SHA-512)返回散列值。第一个参数字符串是要散列的字符串,
第二个参数 hashLength 是结果的位长(224,256,384 或 512)。如果 string 或 hashLength 为 `NULL`,则返回 `NULL`。
auxilary:
- table: callSql(STRING)
description: |
对 SQL 表达式的调用。给定的字符串在规划期间被解析并转换为 Table API 表达式。在运行时只计算翻译后的表达式。
目前,调用仅限于简单的标量表达式。不支持调用聚合函数或表值函数。子查询也是不允许的。
例如 `table.select(callSql("UPPER(myColumn)").substring(3))`
- table: ANY.as(NAME1, NAME2, ...)
description: 指定 ANY(字段)的名称。如果表达式扩展为多个字段,则可以指定其他名称。
aggregate:
- sql: COUNT([ ALL ] expression | DISTINCT expression1 [, expression2]*)
description: 默认情况下或使用关键字 `ALL`,返回不为 `NULL` 的表达式的输入行数。使用 `DISTINCT` 则对所有值去重后计算。
- sql: COUNT(*) | COUNT(1)
table: FIELD.count
description: 返回输入行数。
- sql: AVG([ ALL | DISTINCT ] expression)
table: FIELD.avg
description: |
默认情况下或使用关键字 `ALL`,返回所有输入行中表达式的平均值(算术平均值)。使用 `DISTINCT` 则对所有值去重后计算。
- sql: SUM([ ALL | DISTINCT ] expression)
table: FIELD.sum
description: 默认情况下或使用关键字 `ALL`,返回所有输入行的表达式总和。使用 `DISTINCT` 则对所有值去重后计算。
- table: FIELD.sum0
description: 返回所有输入行的数字字段的总和。如果所有值都为 `NULL`,则返回 0。
- sql: MAX([ ALL | DISTINCT ] expression)
table: FIELD.max
description: 默认情况下或使用关键字 `ALL`,返回所有输入行中表达式的最大值。使用 `DISTINCT` 则对所有值去重后计算。
- sql: MIN([ ALL | DISTINCT ] expression )
table: FIELD.min
description: 默认情况下或使用关键字 `ALL`,返回所有输入行中表达式的最小值。使用 `DISTINCT` 则对所有值去重后计算。
- sql: STDDEV_POP([ ALL | DISTINCT ] expression)
table: FIELD.stddevPop
description: 默认情况下或使用关键字 `ALL`,返回所有输入行中表达式的总体标准偏差。使用 `DISTINCT` 则对所有值去重后计算。
- sql: STDDEV_SAMP([ ALL | DISTINCT ] expression)
table: FIELD.stddevSamp
description: 默认情况下或使用关键字 `ALL`,返回所有输入行中表达式的样本标准偏差。使用 `DISTINCT` 则对所有值去重后计算。
- sql: VAR_POP([ ALL | DISTINCT ] expression)
table: FIELD.varPop
description: |
默认情况下或使用关键字 `ALL`,返回所有输入行中表达式的总体方差(总体标准差的平方)。使用 `DISTINCT` 则对所有值去重后计算。
- sql: VAR_SAMP([ ALL | DISTINCT ] expression)
table: FIELD.varSamp
description: |
默认情况下或使用关键字 `ALL`,返回所有输入行中表达式的样本方差(样本标准差的平方)。使用 `DISTINCT` 则对所有值去重后计算。
- sql: COLLECT([ ALL | DISTINCT ] expression)
table: FIELD.collect
description: |
默认情况下或使用关键字 `ALL`,返回跨所有输入行的多组表达式。`NULL` 值将被忽略。使用 `DISTINCT` 则对所有值去重后计算。
- sql: VARIANCE([ ALL | DISTINCT ] expression)
description: VAR_SAMP() 的同义方法。
- sql: RANK()
description: 返回值在一组值中的排名。结果是 1 加上分区顺序中当前行之前或等于当前行的行数。排名在序列中不一定连续。
- sql: DENSE_RANK()
description: |
返回值在一组值中的排名。结果是一加先前分配的等级值。与函数 rank 不同,dense_rank 不会在排名序列中产生间隙。
- sql: ROW_NUMBER()
description: |
在窗口分区内根据 rows 的排序为每一行分配一个唯一的序列号,从一开始。ROW_NUMBER 和 RANK 相似。ROW_NUMBER 按
顺序对所有行进行编号(例如 1,2,3,4,5)。RANK 为等值 row 提供相同的序列值(例如 1,2,2,4,5)。
- sql: LEAD(expression [, offset] [, default])
description: 返回窗口中当前行之后第 offset 行处的表达式值。offset 的默认值为 1,default 的默认值为 `NULL`。
- sql: LAG(expression [, offset] [, default])
description: 返回窗口中当前行之前第 offset 行处的表达式值。offset 的默认值为 1,default 的默认值为 `NULL`。
- sql: FIRST_VALUE(expression)
description: 返回一组有序值中的第一个值。
- sql: LAST_VALUE(expression)
description: 返回一组有序值中的最后一个值。
- sql: LISTAGG(expression [, separator])
description: 连接字符串表达式的值并在它们之间放置分隔符值。字符串末尾不添加分隔符时则分隔符的默认值为“,”。