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月)还未包含在最新的发行版中。如无意外,应该会在下一个发行版中发布
相关文章
- 数据孤岛是业务效率的无声杀手
- 2023展望:新的一年将给大数据分析领域带来什么?
- 阿里云ADB基于Hudi构建Lakehouse的实践
- 大数据在医疗保健领域的使用案例
- 微软增加说明:KB5021751 更新扫描已经 / 即将过时 Office 过程中不会触碰用户隐私
- 2022 Gartner全球云数据库管理系统魔力象限发布 腾讯云数据库入选
- 场景化、重实操,分享一个实时数仓实践案例
- Arctic的湖仓一体践行之路
- 分布式计算MapReduce究竟是怎么一回事?
- 淘系数据模型治理优秀实践
- 大数据分析对医疗保健的影响
- 当我们说大数据Hadoop,究竟在说什么?
- 2022年及以后大数据的五个发展趋势
- 网易严选离线数仓治理实践
- 2023 年数据治理趋势
- 一份“靠谱”的年度经营计划,你学会了吗?
- 漫谈对大数据的思考
- 测试一下,读懂数据的能力,你有吗?
- 用艺术的眼光探索数据之美
- 聊聊数据分析成果如何落地