跳到主要内容
版本:nightly

编写查询语句

本章节描述如何在 GreptimeDB 中编写持续聚合查询。 查询语句应该是一个带有聚合函数或非聚合函数(即 scalar 函数)的 SELECT 语句。

一般来说,Flow 的 SQL 部分就像一个普通的 SELECT 子句,只是稍微有一些不同。 具体语法如下:

SELECT AGGR_FUNCTION(column1, column2,..) FROM <source_table> GROUP BY TIME_WINDOW_FUNCTION();

SELECT 关键字后只允许两种表达式:

  • 聚合函数:详细信息请参考 表达式 部分。
  • 标量函数:如 colto_lowercase(col)col + 1 等。这部分与 GreptimeDB 中的普通 SELECT 子句相同。

查询应该有一个 FROM 子句来标识 source 表。由于不支持 join 子句,目前只能从单个表中聚合列。

WHEREHAVING 子句在持续聚合查询中是支持的。它们的工作方式与普通查询中的相同。WHERE 子句在聚合之前过滤数据,而 HAVING 子句在聚合之后过滤数据。

DISTINCT 用于从结果集中删除重复行,目前仅支持 SELECT DISTINCT column1 .. 语法,不支持 SELECT count(DISTINCT column1) ...,但将来会添加支持。

GROUP BY 子句与普通查询中的工作方式相同。它根据指定的列对数据进行分组。GROUP BY 子句中使用的时间窗口函数 hop()tumble()定义时间窗口 部分中有描述。 它们用于在聚合中定义时间窗口。 GROUP BY 中的其他表达式可以是 literal、列名或 scalar 表达式。

持续聚合查询不支持 ORDER BYLIMITOFFSET 等其他操作。

更多关于如何在实时分析、监控和仪表盘中使用持续聚合的示例,请参考 用例