SQL 上线规范和要求
Contents
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的使用规范 |
|
窗口子句用于定义一个或者若干个窗口。窗口可以是有名或者匿名的。用户可以在窗口上调用聚合函数来进行一些分析型计算的操作( |
Online Serving下OP的使用规范#
Online Serving下单表查询的使用规范#
仅支持列,表达式,以及单行处理函数(Scalar Function)以及它们的组合表达式运算
单表查询不包含GROUP BY子句,WHERE子句,HAVING子句以及WINDOW子句。
单表查询只涉及单张表的计算,不设计JOIN多张表的计算。
Example: 支持上线的简单SELECT查询语句范例#
-- desc: SELECT所有列
SELECT * FROM t1;
-- desc: SELECT 表达式重命名
SELECT COL1 as c1 FROM t1;
-- desc: SELECT 表达式重命名2
SELECT COL1 c1 FROM t1;
-- desc: SELECT 列表达式
SELECT COL1 FROM t1;
SELECT t1.COL1 FROM t1;
-- desc: SELECT 一元表达式
SELECT -COL2 as COL2_NEG FROM t1;
-- desc: SELECT 二元表达式
SELECT COL1 + COL2 as COL12_ADD FROM t1;
-- desc: SELECT 类型强转
SELECT CAST(COL1 as BIGINT) as COL_BIGINT FROM t1;
-- desc: SELECT 函数表达式
SELECT substr(COL7, 3, 6) FROM t1;
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查询语句范例#
CREATE DATABASE db1;
USE db1;
CREATE TABLE t1 (col0 STRING, col1 int, std_time TIMESTAMP, INDEX(KEY=col1, TS=std_time, TTL_TYPE=absolute, TTL=30d));
-- SUCCEED: Create successfully
desc t1;
--- ---------- ----------- ------ ---------
# Field Type Null Default
--- ---------- ----------- ------ ---------
1 col0 Varchar YES
2 col1 Int YES
3 std_time Timestamp YES
--- ---------- ----------- ------ ---------
--- -------------------- ------ ---------- ---------- ---------------
# name keys ts ttl ttl_type
--- -------------------- ------ ---------- ---------- ---------------
1 INDEX_0_1639524729 col1 std_time 43200min kAbsoluteTime
--- -------------------- ------ ---------- ---------- ---------------
Online Serving下Window的使用规范#
窗口边界仅支持
PRECEDING
和CURRENT ROW
窗口类型仅支持
ROWS
和ROWS_RANGE
窗口
PARTITION BY
只能支持列表达式,并且列需要命中索引窗口
ORDER BY
只能支持列表达式,并且列需要命中索引的时间列