1. 程式人生 > >Quick BI 支援多種資料來源進行多維分析

Quick BI 支援多種資料來源進行多維分析

一、摘要

隨著網際網路的高速發展,資料量爆發式增長的同時,資料的儲存形式也開始呈現出多樣性,有結構化儲存,如 Mysql, Oracle, SQLServer 等,半結構化甚至非結構化儲存,如HBaseOSS 等。那麼從事資料分析的人員就面臨著從多種多樣的資料儲存形式中提取資料而後進行多維分析,這將是一件非常具有挑戰的事情。而Quick BI 作為新一代智慧BI服務平臺,恰好解決了這一難題,不僅支援多種結構化資料來源的多維分析,也支援本地檔案上傳後的查詢分析,同時還支援部分非結構化資料來源的OLAP分析,甚至支援混合異構資料來源的關聯分析。

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 BIOLAP引擎內部採用建立外部表的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體驗。使用者只需在資料集關聯時選用來源於不同庫的資料表,就可輕鬆體驗異構資料來源分析功能,目前支援MaxComputeMySQLOracle間的異構資料來源查詢或同構資料來源跨庫查詢。後續會支援更多型別資料來源異構查詢,如 Hive, SQLServer, PostgresSql 等。

 

五、未完待續

Quick BI 後續將會迭代更新逐步支援更多型別資料來源的多維分析,如API類資料來源等,敬請期待