Apache Kylin权威指南2.6 SQL参考

简介:

2.6 SQL参考


Apache Kylin支持标准SQL作为查询语言,但是SQL有很多变体,Kylin支持的只是SQL所有变体中的一个子集,并不是支持所有现存的SQL语句和语法。用户在使用Kylin之前,需要对Kylin所支持的SQL有一个了解,以避免走弯路。

首先,Kylin作为OLAP引擎,只支持查询,而不支持其他操作,如插入、更新等,即所有的SQL都必须是SELECT语句,否则Kylin会报错。

第二,查询Kylin中SQL语句的表名、列名、度量、连接关系时,需要至少跟一个Cube的模型相匹配;在设计Cube的时候,需要充分考虑查询的需求,避免遗漏表、列等信息。

第三,Kylin使用Apache Calcite做SQL语法分析。Apache Calcite是一个开源的SQL引擎,它提供了标准SQL解析、多种查询优化和连接各种数据源的能力;Calcite项目在Hadoop中越来越引人注意,并且已被众多项目集成为SQL解析器。

一条SQL语句首先需要被Calcite解析,然后才可以被Kylin执行。下面是Calcite中的SELECT语句的语法(引自https://calcite.apache.org/docs/reference.html):

SELECT [ STREAM ] [ ALL | DISTINCT ]

            { * | projectItem [, projectItem ]* }

        FROM tableExpression

        [ WHERE booleanExpression ]

        [ GROUP BY { groupItem [, groupItem ]* } ]

        [ HAVING booleanExpression ]

        [ WINDOW windowName AS windowSpec [, windowName AS windowSpec ]* ]

 

projectItem:

        expression [ [ AS ] columnAlias ]

    |   tableAlias . *

 

tableExpression:

        tableReference [, tableReference ]*

    |   tableExpression [ NATURAL ] [ LEFT | RIGHT | FULL ] JOIN tableExpression

[ joinCondition ]

 

joinCondition:

        ON booleanExpression

    |   USING '(' column [, column ]* ')'

第四,不是所有的Calcite能够解析的SELECT语句都可以被Kylin执行;还有一些SQL功能,现阶段Kylin(截止v1.5.3)还不支持,未来会考虑加以实现,目前已知的有如下三项SQL功能。

Window函数:https://issues.apache.org/jira/browse/KYLIN-1732

Union:https://issues.apache.org/jira/browse/KYLIN-1206

Between AND: https://issues.apache.org/jira/browse/KYLIN-1770

上述三个功能已经在Apache Kylin主分支上得以实现,但目前(2016年8月)还未包含在最新的发行版中。如无意外,应该会在下一个发行版中发布

相关文章
|
消息中间件 分布式计算 大数据
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
331 5
|
存储 SQL 分布式计算
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
344 3
|
Java 大数据 数据库连接
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
292 2
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
297 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
分布式计算 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
348 5
|
SQL 分布式计算 大数据
大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录
大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录
397 2
|
存储 大数据 分布式数据库
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
317 1
|
SQL 消息中间件 大数据
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
441 1
|
SQL 大数据 Apache
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
262 1
|
SQL 存储 监控
大数据-161 Apache Kylin 构建Cube 按照日期、区域、产品、渠道 与 Cube 优化
大数据-161 Apache Kylin 构建Cube 按照日期、区域、产品、渠道 与 Cube 优化
450 0

推荐镜像

更多