Quick BI 支持多种数据源进行多维分析

1,206 阅读7分钟

Quick BI

支持多种数据源进行多维分析


一、摘要

随着互联网的高速发展,数据量爆发式增长的同时,数据的存储形式也开始呈现出多样性,有结构化存储,如
Mysql, Oracle, SQLServer
等,半结构化甚至非结构化存储,如
HBase
OSS
等。那么从事数据分析的人员就面临着从多种多样的数据存储形式中提取数据而后进行多维分析,这将是一件非常具有挑战的事情。而
Quick
BI
作为新一代智能
BI
服务平台,恰好解决了这一难题,不仅支持多种结构化数据源的多维分析,也支持本地文件上传后的查询分析,同时还支持部分非结构化数据源的
O
LAP
分析,甚至支持混合异构数据源的关联分析。

Quick BI 目前支持的数据源既可以来自阿里云数据库,也可以来自自建数据库,如下所示:


1342c28d26dfd2142a76ebae62e04f6ad07c6df0


1b0a35fc2e8f83a73c16d5a27e7bc4151e29caf1


eda2b184b065793b2e3a455dba78ebed900968df


二、

结构化数据源多维分析

对于一般的数据源,用户在做多维分析之前需要先在
Quick BI
数据源界面添加自己的数据源,比如
MySQL
数据源,如下:

992caf99e636ea9856bd44c2dcf892b16f0ed9ae

数据源添加完成后,可以选择一张或多张要进行分析的数据表创建一个数据集,如下:

869419f35f68d8aa68a7fabb7a4254adfa009ca5

数据集创建完成后用户就可以在仪表板里拖拽维度和度量进行多维分析了,比如:

293d67e026541445b7d407a2d114e37fef99a65f

结构化数据源的多维分析相对比较简单,大致过程就是
针对
每次
多维分析
查询,
根据用户选择的维度,度量及过滤条件等查询因子,生成相应结构化数据源的方言
SQL,然后通过执行机下发到用户自己的数据库去执行该SQL,最后Quick BI接收返回的查询结果进行可视化展现。
下图展示了多维分析的流程图:

6d0d0a596022375c795cfdd1b9decd48d16f08c4

顺便介绍一下,本地文件上传支持
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
查询所需要的元数据信息
如下图所示

998912c63f52c94928d00846c891dc83cc1d9a99

Schems、Tables和Columns分别定义了外部表的结构,通过SQL创建外部表时,在其中加入相应的记录。查询非结构化数据源时,再读取相应的记录,对数据进行解析。

下面以一个场景作为例子,进一步地说明非结构化查询的过程,假设用户以
CSV文件的形式将业务数据存储在OSS上,文件的名称为iris.csv,其内容如下所示:

9405853aeccdb7ee39de17aacfb4a7740d3342e1

针对这个文件,用户期望利用
Quick BI对其进行OLAP查询,根据用户在Quick BI数据源页面中的配置,OLAP内部生成一条创建外部表的SQL语句:

80dfce6083b7278dcb1e60fbcbd61ca376054fef

SQL Parser对SQL进行解析,AST Builder生成对应的AST,如下图所示:

116a4ae4a0780ab783ca02ffd5b0eea6f080d9b8

注意到该
AST包含了外部表所需的全部信息,包括如何解析csv文件并映射成结构化的数据,使得数据能够与SQL中的schema、column和table对应。Query Execution调用Metastore将信息存储至Meatadb。此时,存储再OSS上的CSV文件在逻辑上已经映射成了一张表,如下图所示:

37e9e340b99477092fa1f65bd8282f1bd05e7c99

下一步便可以直接使用
SQL对其进行查询,例如,使用下面的SQL筛选出种类(species)为setosa的数据记录;

c393a9ce4ccca4f1222743323b6a4e41eed192c3

同理,对于
HBase数据源,同样采用外部表的方式定义映射规则:

06b699fefb41af029d89c150b962441d8a75cea5

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
的配置到指定数据源加载数据,在内存中进行计算并返回最终结果。

大部分多维分析都是单源查询,那么在什么情况下才会启用跨源查询引擎呢,这就需要实现异构数据源查询的智能路由,智能路由主要是根据查询模型中涵盖的数据源信息来判断是单源查询还是多源查询来决定路由到单源查询引擎还是跨源查询引擎。跨源查询流程如下图所示:

23ffc9fda945478bcbfed758cab3c9f1251074f7

注意要确保本次查询所涉及到的
catalogs
向跨源查询引擎的
CatalogServer
动态注册成功后,才能下发本次查询的
SQLText
到跨源查询引擎。

示例:
MaxCompute, MySQL
间的异构查询
SQL:

3594bbae1f2173a9a1de2d369e575a1409de937b

查询结果:

b03f0fe0f646160499887c42ba0f6938b38f1fb4

4.3

小结

异构数据源分析功能对用户是透明无感知的,欢迎前往
Quick BI
体验。用户只需在数据集关联时选用来源于不同库的数据表,就可轻松体验异构数据源分析功能,目前支持
MaxCompute
MySQL
Oracle
间的异构数据源查询或同构数据源跨库查询。后续会支持更多类型数据源异构查询,如
Hive, SQLServer,
PostgresSql
等。

五、未完待续

Quick BI

后续将会迭代更新逐步支持更多类型数据源的多维分析,如
API
类数据源等,敬请期待