一、摘要

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

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类数据源等,敬请期待…

Quick BI 支持多种数据源进行多维分析的更多相关文章

  1. Quick BI支持哪些数据源(配置操作篇)

    Quick BI 潜心打造了核心技术底座(OLAP分析引擎),实现了SQL解析.SQL调度.SQL优化.查询加速等基础能力,支撑Quick BI的数据分析和查询加速.OLAP分析引擎包括数据源连接.数 ...

  2. Quick BI 3.0 - 强大的多维分析表格:交叉表

    写在开头 对于普通的表格展示数据,相信大家都非常熟悉了,今天给大家介绍的是BI领域的分析利器-交叉表,这个在BI分析场景中使用占比最多的分析利器.通过交叉表对数据的承载和管理,用户可以一目了然地分析出 ...

  3. 扩展GridView实现的一个自定义无刷新分页,排序,支持多种数据源的控件TwfGridView

    最近项目View层越来越趋向于无刷新化,特别是数据展示方面,还要对Linq有很好的支持.在WebFrom模式的开发中,GridView是一个功能很强大,很常用的控件,但是他也不是完美的,没有自带的无刷 ...

  4. .net core系列之《新一代的配置系统Configuration在支持多数据源,热更新,层级化方面代码快速实践》

    在我们之前.Net Framework的项目中,配置文件是WebConfig或AppcConfig文件,而当我们想要添加我们自定义的节点时,还需要在这个文件中的section中定义我们自定义的节点,这 ...

  5. Quick BI取数模型深度剖析

    开发图表最关键的点在于选择准确的图表类型展示准确的数据,而准确的数据往往依赖于一个强大的取数模型,因此设计一个好的取数模型不仅可以解决数据安全的问题,更可以帮助每个访问者高效触达自己想要的数据,开发者 ...

  6. WEB API 支持多种端的后台

    一套代码,支持多种平台 1. 支持web 可以js获取webapi的数据源.利用mvvm组织展现在html上. 2.支持安卓. post方法,安卓获取webapi的数据.

  7. 阿里云Quick BI——让人人都成为分析师

    在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家潘炎峰(陌停)对大数据智能分析产品 Quick BI 进行了深入的剖析.大会现场的精彩分享也赢得观众们的一直认可和热烈的反响. Quic ...

  8. 【Java/Android性能优 6】Android 图片SD卡缓存 使用简单 支持预取 支持多种缓存算法 支持不同网络类型 支持序列化

    本文转自:http://www.trinea.cn/android/android-imagesdcardcache/ 本文主要介绍一个支持图片自动预取.支持多种缓存算法.支持数据保存和恢复的图片Sd ...

  9. 【Java/Android性能优5】 Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强

    本文转自:http://www.trinea.cn/android/android-imagecache/ 主要介绍一个支持图片自动预取.支持多种缓存算法.支持二级缓存.支持数据保存和恢复的图片缓存的 ...

随机推荐

  1. Android——谷歌官方下拉刷新控件SwipeRefreshLayout(转)

    转自:http://blog.csdn.net/zouzhigang96/article/details/50476402 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言: 如今谷歌推出了 ...

  2. 【Luogu】【关卡2-4】排序Ex(2017年10月)

    任务说明:这里的排序就更上一层了.不仅融合了别的算法与技巧,排序本身也有各种花招.

  3. elasticsearch启动问题

    ES安装完一直启动不了,问题解决. 报错: ERROR: bootstrap checks failed system call filters failed to install; check th ...

  4. vue 2.1.3 实时显示当前时间,每秒更新

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 【转】让应用程序支持emoji字符

    什么是emoji?就是这些表情和符号:

  6. 用记事本和Eclipse编写Java程序

    JRE(Java Runtime Environment    Java运行环境) 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一 ...

  7. PHP FILTER_SANITIZE_SPECIAL_CHARS 过滤器

    定义和用法 FILTER_SANITIZE_SPECIAL_CHARS 过滤器对特殊字符进行 HTML 转义. 该过滤器用于转义 "<>& 以及 ASCII 值在 32 ...

  8. Vue源码------------- 数据响应系统的基本思路

    在 Vue 中,我们可以使用 $watch 观测一个字段,当字段的值发生变化的时候执行指定的观察者,如下: var vm = new Vue({ data: { num:1 } }) vm.$watc ...

  9. [NOI2016]区间 题解(决策单调性+线段树优化)

    4653: [Noi2016]区间 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 1593  Solved: 869[Submit][Status][ ...

  10. 其它课程中的python---6、python读取数据

    其它课程中的python---6.python读取数据 一.总结 一句话总结: 记常用和特例:慢慢慢慢的就熟了,不用太着急,慢慢来 库的使用都很简单:就是库的常用函数就这几个,后面用的时候学都来得及. ...