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月)还未包含在最新的发行版中。如无意外,应该会在下一个发行版中发布

时间: 2024-09-30 21:32:54

Apache Kylin权威指南2.6 SQL参考的相关文章

Apache Kylin权威指南导读

前 言 "麒麟出没,必有祥瑞." --中国古谚语 "于我而言,与Apache Kylin团队一起合作使Kylin通过孵化成为顶级项目是非常激动人心的,诚然,Kylin在技术方面非常振奋人心,但同样令人兴奋的是Kylin代表了亚洲国家,特别是中国,在开源社区中越来越高的参与度." --Ted Dunning Apache孵化项目副总裁,MapR首席应用架构师 今天,随着移动互联网.物联网.AI等技术的快速兴起,数据成为了所有这些技术背后最重要,也是最有价值的"

Apache Kylin权威指南2.2 在Hive中准备数据

2.2 在Hive中准备数据 2.1节介绍了Kylin中的常见概念.本节将介绍准备Hive数据的一些注意事项.需要被分析的数据必须先保存为Hive表的形式,然后Kylin才能从Hive中导入数据,创建Cube. Apache Hive是一个基于Hadoop的数据仓库工具,最初由Facebook开发并贡献到Apache软件基金会.Hive可以将结构化的数据文件映射为数据库表,并可以将SQL语句转换为MapReduce或Tez任务进行运行,从而让用户以类SQL(HiveQL,也称HQL)的方式管理和

Apache Kylin权威指南1.5 Apache Kylin的主要特点

1.5 Apache Kylin的主要特点 Apache Kylin的主要特点包括支持SQL接口.支持超大数据集.秒级响应.可伸缩性.高吞吐率.BI工具集成等. 1.5.1 标准SQL接口 Apache Kylin以标准SQL作为对外服务的主要接口.因为SQL是绝大多数分析人员最熟悉的工具,同时也是大多数应用程序使用的编程接口.尽管Kylin内部以Cube技术为核心,对外却没有选用MDX(MultiDimensional eXpressions)作为接口.虽然MDX作为OLAP查询语言,从学术上

Apache Kylin权威指南1.4 Apache Kylin的技术架构

1.4 Apache Kylin的技术架构 Apache Kylin系统可以分为在线查询和离线构建两部分,技术架构如图1-4所示,在线查询的模块主要处于上半区,而离线构建则处于下半区.   图1-4 Kylin的技术架构 我们首先来看看离线构建的部分.从图1-4可以看出,数据源在左侧,目前主要是Hadoop Hive,保存着待分析的用户数据.根据元数据的定义,下方构建引擎从数据源抽取数据,并构建Cube.数据以关系表的形式输入,且必须符合星形模型(Star Schema)(更复杂的雪花模型在成文

Apache Kylin权威指南1.6 与其他开源产品比较

1.6 与其他开源产品比较 与Apache Kylin一样致力于解决大数据查询问题的其他开源产品也有不少,比如Apache Drill.Apache Impala.Druid.Hive.Presto(Facebook).SparkSQL等.本节试图将Kylin与它们做一个简单的比较. 从底层技术的角度来看,这些开源产品有很大的共性,一些底层技术几乎被所有的产品一致采用,Kylin也不例外. 大规模并行处理:可以通过增加机器的方式来扩容处理速度,在相同的时间里处理更多的数据. 列式存储:通过按列存

Apache Kylin权威指南1.2 Apache Kylin的使命

1.2 Apache Kylin的使命 Kylin的使命是超高速的大数据OLAP(Online Analytical Processing),也就是要让大数据分析像使用数据库一样简单迅速,用户的查询请求可以在秒内返回,交互式数据分析将以前所未有的速度释放大数据里潜藏的知识和信息,让我们在面对未来的挑战时占得先机. 1.2.1 为什么要使用Apache Kylin 自从10年前Hadoop诞生以来,大数据的存储和批处理问题均得到了妥善解决,而如何高速地分析数据也就成为了下一个挑战.于是各式各样的"

Apache Kylin权威指南1.3 Apache Kylin的工作原理

1.3 Apache Kylin的工作原理 Apache Kylin的工作原理本质上是MOLAP(Multidimensional Online Analytical Processing)Cube,也就是多维立方体分析.这是数据分析中相当经典的理论,在关系数据库年代就已经有了广泛的应用,下面将对其做简要介绍. 1.3.1 维度和度量简介 在说明MOLAP Cube之前需要先介绍一下维度(Dimension)和度量(Measure)这两个 概念. 简单来讲,维度就是观察数据的角度.比如电商的销售

Apache Kylin权威指南2.5 查询Cube

2.5 查询Cube 本节将简要介绍如何查询Cube.更多内容请参考后续的章节(如第5章). Cube构建好以后,状态变为"READY",就可以进行查询了.Kylin的查询语言是标准SQL的SELECT语句,这是为了获得与大多数BI系统和工具无缝集成的可能性.通常的一个查询语句类似于如下的SQL: SELECT DIM1, DIM2, -, MEASURE1, MEASURE2- FROM FACT_TABLE     INNER JOIN LOOKUP_1 ON FACT_TABLE

Apache Kylin权威指南2.7 小结

2.7 小结 本章介绍了使用Apache Kylin必备的基本概念,如星形数据模型.事实表.维表.维度.度量等,并在这些基础上快速创建了基于Sample Data的模型,构建Cube,最后执行SQL查询.带领读者体验了Apache Kylin的主要使用过程.后续的章节将继续展开和探讨这个过程中的一些关键技术,比如增量构建.可视化和Cube优化等.