OpenMLDB SQL上线规范和要求

OpenMLDB Online Serving提供实时的特征抽取服务。OpenMLDB的DEPLOY命令将一段SQL文本部署到线上去。部署成功后,用户即可通过Restful API或者JDBC API实时地对请求样本作特征抽取计算。并不是所有的SQL都可以部署到线上提供服务的,OpenMLDB对上线的语句和OP是有一套规范的。

Online Serving 语句

OpenMLDB仅支持上线SELECT查询语句

Online Serving Op List

值得注意的是,并非所有的SELECT查询语句都可上线,在OpenMLDB中,只有SELECT, WINDOW, LAST JOIN OP是可以上线的,其他OP(包括WHERE, GROUP, HAVING, LIMIT)等都是无法上线了。

本节将列出支持Online Serving的OP,并详细阐述这些OP的上线使用规范。

SELECT语句
说明

单张表简单表达式计算

在Online Serving时,支持简单的单表查询。所谓,简单的单表查询是对一张表的进行列、运算表达式和单行处理函数(Scalar Function)以及它们的组合表达式作计算。需要遵循Online Serving下单表查询的使用规范

OpenMLDB目前仅支持LAST JOIN。在Online Serving时,需要遵循Online Serving下LAST JOIN的使用规范

窗口子句用于定义一个或者若干个窗口。窗口可以是有名或者匿名的。用户可以在窗口上调用聚合函数来进行一些分析型计算的操作(sql agg_func() over window_name)。在Online Serving时,需要遵循Online Serving下Window的使用规范

Online Serving下OP的使用规范

Online Serving下单表查询的使用规范

  • 仅支持列,表达式,以及单行处理函数(Scalar Function)以及它们的组合表达式运算

  • 单表查询不包含GROUP BY子句WHERE子句HAVING子句以及WINDOW子句

  • 单表查询只涉及单张表的计算,不设计JOIN多张表的计算。

Example: 支持上线的简单SELECT查询语句范例

Online Serving下LAST JOIN的使用规范

  • Join type仅支持LAST JOIN类型

  • 至少有一个JOIN条件是形如left_table.column=right_table.column的EQUAL条件,并且rgith_table.column列需要命中右表的索引

  • 带排序LAST JOIN的情况下,ORDER BY只能支持列表达式,并且列需要命中右表索引的时间列

Example: 支持上线的简单SELECT查询语句范例

Online Serving下Window的使用规范

  • 窗口边界仅支持PRECEDINGCURRENT ROW

  • 窗口类型仅支持ROWSROWS_RANGE

  • 窗口PARTITION BY只能支持列表达式,并且列需要命中索引

  • 窗口ORDER BY只能支持列表达式,并且列需要命中索引的时间列

Last updated