Quick BI
支持多种数据源进行多维分析
一、摘要
随着互联网的高速发展,数据量爆发式增长的同时,数据的存储形式也开始呈现出多样性,有结构化存储,如
Mysql, Oracle, SQLServer 等,半结构化甚至非结构化存储,如
HBase
,
OSS
等。那么从事数据分析的人员就面临着从多种多样的数据存储形式中提取数据而后进行多维分析,这将是一件非常具有挑战的事情。而
Quick
BI 作为新一代智能
BI
服务平台,恰好解决了这一难题,不仅支持多种结构化数据源的多维分析,也支持本地文件上传后的查询分析,同时还支持部分非结构化数据源的
O
LAP分析,甚至支持混合异构数据源的关联分析。
Quick BI 目前支持的数据源既可以来自阿里云数据库,也可以来自自建数据库,如下所示:
二、
结构化数据源多维分析
对于一般的数据源,用户在做多维分析之前需要先在
Quick BI 数据源界面添加自己的数据源,比如
MySQL
数据源,如下:
数据源添加完成后,可以选择一张或多张要进行分析的数据表创建一个数据集,如下:
数据集创建完成后用户就可以在仪表板里拖拽维度和度量进行多维分析了,比如:
结构化数据源的多维分析相对比较简单,大致过程就是
针对
每次
多维分析
查询,
根据用户选择的维度,度量及过滤条件等查询因子,生成相应结构化数据源的方言
SQL,然后通过执行机下发到用户自己的数据库去执行该SQL,最后Quick BI接收返回的查询结果进行可视化展现。下图展示了多维分析的流程图:
顺便介绍一下,本地文件上传支持
csv 和Excel 两种文件类型。上传后的文件会落地到Quick BI提供的一种官方数据源:探索空间。探索空间底层依赖了一种阿里云自研的MPP SQL引擎,提供存储+计算服务。接下来的篇幅将着重介绍非结构化查询分析及混合异构数据源关联分析的原理。
ä¸ã
非结构化数据源查询分析
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.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 等。
五、未完待续
Quick BI
后续将会迭代更新逐步支持更多类型数据源的多维分析,如
API
类数据源等,敬请期待
…