函数
Datafusion 函数
由于 GreptimeDB 的查询引擎是基于 Apache Arrow DataFusion 构建的,GreptimeDB 继承了 DataFusion 中所有内置的函数。这些函数包括:
- 聚合函数: 如
COUNT、SUM、MIN、MAX等。详细列表请参阅 聚合函数 - 标量函数: 如
ABS、COS、FLOOR等。详细列表请参阅 标量函数 - 窗口函数: 对相关的一组行记录执行计算。详细列表请参阅 窗口函数
要查看所有 DataFusion 函数,请参阅 DataFusion 函数。
arrow_cast
arrow_cast 函数来自 DataFusion 的 arrow_cast。其用法如下:
arrow_cast(expression, datatype)
其中 datatype 可以是此 列表 中的任何有效 Arrow 数据类型。四种时间戳类型是:
- Timestamp(Second, None)
- Timestamp(Millisecond, None)
- Timestamp(Microsecond, None)
- Timestamp(Nanosecond, None)
(注意 None 表示时间戳不考虑时区)
GreptimeDB 函数
字符串函数
DataFusion 字符串函数。
GreptimeDB 提供:
matches_term(expression, term)用于全文检索。阅读查询日志文档获取更多详情。regexp_extract(str, regexp)提取字符串中与正则表达式匹配的第一个子串。如果没有找到匹配项则返回NULL。
regexp_extract
提取字符串中与正则表达式匹配的第一个子串。如果没有找到匹配项则返回 NULL。
regexp_extract(str, regexp)
参数:
- str: 要操作的字符串表达式。可以是常量、列或函数,以及运算符的任意组合。
- regexp: 要匹配的正则表达式。可以是常量、列或函数。
关于转义的说明:
GreptimeDB 在 MySQL 和 PostgreSQL 兼容模式下的正则表达式转义行为有所不同:
- MySQL 模式:转义序列需要使用双反斜杠(例如
\\d、\\s) - PostgreSQL 模式:默认情况下单反斜杠即可(例如
\d、\s),或者使用E''前缀以与 MySQL 保持一致(例如E'\\d')
示例:
SELECT regexp_extract('version 1.2.3', '\d+\.\d+\.\d+');
-- 返回: 1.2.3
SELECT regexp_extract('Phone: 123-456-7890', '\d{3}-\d{3}-\d{4}');
-- 返回: 123-456-7890
SELECT regexp_extract('no match here', '\d+\.\d+\.\d+');
-- 返回: NULL
数学函数
DataFusion 数学函数。GreptimeDB 额外提供:
clamp(value, lower, upper)将给定值限制在上下界之间:
SELECT CLAMP(10, 0, 1);
+------------------------------------+
| clamp(Int64(10),Int64(0),Int64(1)) |
+------------------------------------+
| 1 |
+------------------------------------+
SELECT CLAMP(0.5, 0, 1);
+---------------------------------------+
| clamp(Float64(0.5),Int64(0),Int64(1)) |
+---------------------------------------+
| 0.5 |
+---------------------------------------+
mod(x, y)获取一个数除以另一个数的余数:
SELECT mod(18, 4);
+-------------------------+
| mod(Int64(18),Int64(4)) |
+-------------------------+
| 2 |
+-------------------------+