Quick BI 支持多种数据源进行多维分析
1、摘要sql
随着互联网的高速发展,数据量爆发式增加的同时,数据的存储形式也开始呈现出多样性,有结构化存储,如 Mysql, Oracle, SQLServer 等,半结构化甚至非结构化存储,如HBase,OSS 等。那么从事数据分析的人员就面临着从多种多样的数据存储形式中提取数据然后进行多维分析,这将是一件很是具备挑战的事情。而Quick BI 做为新一代智能BI服务平台,刚好解决了这一难题,不只支持多种结构化数据源的多维分析,也支持本地文件上传后的查询分析,同时还支持部分非结构化数据源的OLAP分析,甚至支持混合异构数据源的关联分析。
Quick BI 目前支持的数据源既能够来自阿里云数据库,也能够来自自建数据库,以下所示:数据库
2、结构化数据源多维分析大数据
对于通常的数据源,用户在作多维分析以前须要先在Quick BI 数据源界面添加本身的数据源,好比MySQL数据源,以下:ui
数据源添加完成后,能够选择一张或多张要进行分析的数据表建立一个数据集,以下:阿里云
数据集建立完成后用户就能够在仪表板里拖拽维度和度量进行多维分析了,好比:spa
结构化数据源的多维分析相对比较简单,大体过程就是针对每次多维分析查询,根据用户选择的维度,度量及过滤条件等查询因子,生成相应结构化数据源的方言SQL,而后经过执行机下发到用户本身的数据库去执行该SQL,最后Quick BI接收返回的查询结果进行可视化展示。下图展现了多维分析的流程图:插件
顺便介绍一下,本地文件上传支持csv 和Excel 两种文件类型。上传后的文件会落地到Quick BI提供的一种官方数据源:探索空间。探索空间底层依赖了一种阿里云自研的MPP SQL引擎,提供存储+计算服务。
接下来的篇幅将着重介绍非结构化查询分析及混合异构数据源关联分析的原理。设计
3、非结构化数据源查询分析对象
3.1 背景
近年来部分大型企业更倾向于采用诸如半结构化存储(HBase),对象存储(OSS)等能容纳较大数据规模的数据库。如何有效地帮助企业对此类数据源进行多维数据分析是目前业界BI产品的一项挑战。
在开源的数据库产品当中,存在着一些潜在的解决方案。例如,针对HDFS数据的查询,Hive设计了metastore组件,专门用于存储元数据,解决了从结构化查询到非结构化数据之间的映射关系,用户经过使用建立外部表SQL的语法,能够更灵活地自定义映射的方式。另外,Apache Phoenix也采起了相似的方式让用户可以使用SQL语句对HBase中的数据进行查询。通过充分调研后,针对Quick BI产品自身的业务场景,结合开源计算引擎二次开发了一套用于非结构化查询的分析引擎。图片
3.2 技术原理
对非结构化数据源进行OLAP查询,其关键在于支持SQL语法形式的数据查询。Quick BI在OLAP引擎内部采用建立外部表的SQL语法,给用户提供了一种自定义的,从非结构化数据到结构化存储的映射方式。对于诸如MySQL、Oracle等结构化的数据源而言,无须额外的元数据信息,而对于非结构化的数据源,须要提供额外的元数据信息。Metastore维护了全部非结构化数据源的元数据信息,元数据信息中反映了非结构化数据到结构化之间的映射方式。Metadb中包含了3张表,用于定义能够被SQL查询所须要的元数据信息,以下图所示:
Schems、Tables和Columns分别定义了外部表的结构,经过SQL建立外部表时,在其中加入相应的记录。查询非结构化数据源时,再读取相应的记录,对数据进行解析。
下面以一个场景做为例子,进一步地说明非结构化查询的过程,假设用户以CSV文件的形式将业务数据存储在OSS上,文件的名称为iris.csv,其内容以下所示:
针对这个文件,用户指望利用Quick BI对其进行OLAP查询,根据用户在Quick BI数据源页面中的配置,OLAP内部生成一条建立外部表的SQL语句:
SQL Parser对SQL进行解析,AST Builder生成对应的AST,以下图所示:
注意到该AST包含了外部表所需的所有信息,包括如何解析csv文件并映射成结构化的数据,使得数据可以与SQL中的schema、column和table对应。Query Execution调用Metastore将信息存储至Meatadb。此时,存储再OSS上的CSV文件在逻辑上已经映射成了一张表,以下图所示:
下一步即可以直接使用SQL对其进行查询,例如,使用下面的SQL筛选出种类(species)为setosa的数据记录;
同理,对于HBase数据源,一样采用外部表的方式定义映射规则:
3.3 小结
Quick BI 目前支持对OSS上的csv 文件进行查询分析,后续会增长支持OSS上更多文件类型的查询分析,及对HBase的多维分析。
4、混合异构数据源关联分析
4.1 背景
Quick BI用户对异构数据源的分析需求,如:维表在MySQL,事实表在MaxCompute时,须要进行不一样类型数据源间或相同类型数据源不一样库间表的关联分析。
4.2 技术原理
要可以支持异构数据源间的跨源关联分析,首先须要有一款具有数据源Connector 插件机制的计算引擎,这样就可以方便扩展支持多种数据源类型查询。咱们从业界开源计算引擎中选择了一款具有这样特性的MPP内存计算引擎,通过二次开发,造成了一套适合Quick BI业务场景的跨源查询引擎。
跨源查询引擎在支持异构数据源查询时,只需在查询SQL中使用完整的catalogName.dbName.tableName表名(如:odps.quickbi_test.company_sales_record),
在Quick BI业务中用户本身配置的每一个数据源在后台都会配一个惟一标识dsId, 因此恰好能够用来做为catalogName, 且涉及到的Catalog在跨源查询引擎中已经被加载便可。以后在查询时,跨源查询引擎会解析SQL,生成逻辑计划、物理计划,再经过Catalog的配置到指定数据源加载数据,在内存中进行计算并返回最终结果。
大部分多维分析都是单源查询,那么在什么状况下才会启用跨源查询引擎呢,这就须要实现异构数据源查询的智能路由,智能路由主要是根据查询模型中涵盖的数据源信息来判断是单源查询仍是多源查询来决定路由到单源查询引擎仍是跨源查询引擎。跨源查询流程以下图所示:
注意要确保本次查询所涉及到的catalogs 向跨源查询引擎的CatalogServer 动态注册成功后,才能下发本次查询的SQLText到跨源查询引擎。
示例:MaxCompute, MySQL 间的异构查询SQL:
查询结果:
4.3 小结
异构数据源分析功能对用户是透明无感知的,欢迎前往Quick BI体验。用户只需在数据集关联时选用来源于不一样库的数据表,就可轻松体验异构数据源分析功能,目前支持MaxCompute、MySQL、Oracle间的异构数据源查询或同构数据源跨库查询。后续会支持更多类型数据源异构查询,如 Hive, SQLServer, PostgresSql 等。
5、未完待续
Quick BI 后续将会迭代更新逐步支持更多类型数据源的多维分析,如API类数据源等,敬请期待…
做者:萨若 衣候