Quick BI 支持多種數據源進行多維分析

Quick BI sql

支持多種數據源進行多維分析


1、摘要數據庫

隨着互聯網的高速發展,數據量爆發式增加的同時,數據的存儲形式也開始呈現出多樣性,有結構化存儲,如
Mysql, Oracle, SQLServer
等,半結構化甚至非結構化存儲,如
HBase
OSS
等。那麼從事數據分析的人員就面臨着從多種多樣的數據存儲形式中提取數據然後進行多維分析,這將是一件很是具備挑戰的事情。而
Quick
BI
做爲新一代智能
BI
服務平臺,剛好解決了這一難題,不只支持多種結構化數據源的多維分析,也支持本地文件上傳後的查詢分析,同時還支持部分非結構化數據源的
O
LAP
分析,甚至支持混合異構數據源的關聯分析。

Quick BI 目前支持的數據源既能夠來自阿里雲數據庫,也能夠來自自建數據庫,以下所示:大數據


1342c28d26dfd2142a76ebae62e04f6ad07c6df0


1b0a35fc2e8f83a73c16d5a27e7bc4151e29caf1


eda2b184b065793b2e3a455dba78ebed900968df


2、 ui

結構化數據源多維分析

對於通常的數據源,用戶在作多維分析以前須要先在
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建立外部表時,在其中加入相應的記錄。查詢非結構化數據源時,再讀取相應的記錄,對數據進行解析。3d

下面以一個場景做爲例子,進一步地說明非結構化查詢的過程,假設用戶以
CSV文件的形式將業務數據存儲在OSS上,文件的名稱爲iris.csv,其內容以下所示:

9405853aeccdb7ee39de17aacfb4a7740d3342e1

針對這個文件,用戶指望利用
Quick BI對其進行OLAP查詢,根據用戶在Quick BI數據源頁面中的配置,OLAP內部生成一條建立外部表的SQL語句:

80dfce6083b7278dcb1e60fbcbd61ca376054fef

SQL Parser對SQL進行解析,AST Builder生成對應的AST,以下圖所示:cdn

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、

混合異構數據源關聯分析

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
等。

5、未完待續

Quick BI

後續將會迭代更新逐步支持更多類型數據源的多維分析,如
API
類數據源等,敬請期待
相關文章
相關標籤/搜索