Apache Kylin和Superset(Caravel)集成

本文轉自Apache Kylin公衆號apachekylin.前端

Superset 是一個數據探索和可視化平臺,設計用來提供直觀的,可視化的,交互式的分析體驗。python

Superset 提供了兩種分析數據源的方式:react

1. 用戶能夠以單表形式直接查詢多種數據源,包括 Presto、Hive、Impala、SparkSQL、MySQL、Postgres、Oracle、Redshift、SQL Server、Druid 等。本文後續內容也會詳細介紹Superset如何支持Kylin數據源。sql

2. 一個 SQL 的 IDE 供高級分析師使用 SQL 查詢定義所須要分析的數據集,這種方法使用戶在一個查詢中實現用 Superset 查詢數據源的多表,並當即對查詢進行可視化分析。數據庫

Superset 的前世此生

Superset 起源於 2015 年初黑客馬拉松項目,曾經使用過 Caravel 和 Panoramix 做爲項目名。如今主要維護小組是 Airbnb 數據科學組,代碼託管在 Github。做爲 Apache 軟件基金會孵化項目,Superset 目標是要作成數據可視化平臺。apache

Superset 對於數據源端經過一個成熟的 OR-Mapping 方案對接了幾乎市面上全部數據庫產品,數據的分析和建模再使用 Pandas 統一加工序列化後由前端渲染展現. 進而前端渲染出衆多富有表現力的可視化圖表,這些可視化技術包括但不限於: D3,react stack,mapbox,deck.gl。瀏覽器

筆者在使用 Superset 過程當中也感受到一些不足,例如沒法經過權限隔離不一樣用戶可訪問的數據源,數據查詢暫時不支持下鑽操做,多數據源不容易作交互查詢等。可是瑕不掩瑜,Superset 依然是如今這個星球上最好的開源 BI 平臺。app

superset

Apache Kylin 與 Superset 集成

交互式分析是 Apache Kylin 與 Superset 共同的產品目標,使用 Kylin 做爲 Superset 查詢,數據通過 Kylin Cube 的預計算處理,在 Superset 前端進行可視化分析想必是快到飛起,真可謂是強強聯合。ide

Kyligence 數據科學小組開源了 kylinpy 項目完成了 Kylin 與 Superset 數據源的集成。如今咱們就來手把手教讀者實現 Kylin 和 Superset 的集成,並實現交互式的可視化分析。工具

準備工做

1. 安裝 Apache Kylin

請參考 Apache Kylin installation guide:http://kylin.apache.org/docs23/

2. Apache Kylin 提供了樣例 Cube,方便你們學習使用。Kylin 啓動成功後,能夠在 Kylin 安裝路徑下運行如下命令生成樣例數據 Cube:

         ./${KYLIN_HOME}/bin/sample.sh

運行後,使用默認的 Kylin 帳號 ADMIN / KYLIN  登錄界面,在 System 頁面點擊 Reload Metadata 便可看到樣例項目 Learn_kylin。

 

選擇樣例 Cube 「Kylin_sales_cube」,點擊 Action -> Build。選擇日期不要晚於 2014-01-01 來進行全量構建。

superset

點擊前往 Monitor 頁面查看 Cube 構建的進程,知道100%完成,Cube 就能夠進行查詢了。

前往 Insight 頁面執行一個查詢驗證 Cube 可以返回結果。

select part_dt
sum(price) as total_selled
count(distinct seller_id) as sellers
from kylin_sales
group by part_dt
order by part_dt

查詢會擊中新構建的 Kylin_sales_cube。

3. 下面咱們安裝 Superset,並初始化。

強烈建議使用虛擬環境來安裝全部的依賴包(virtualenv/virtualenvwrapper)

經過 PyPi 倉庫安裝 superset

pip install superset

建立初始超級用戶: admin/admin

fabmanager create-admin –app superset –username admin –password admin –firstname admin –lastname admin –email admin@fab.org

使用默認 sqllite metadata,位於 $HOME/.superset/superset.db,而且根據 migrate 建立表結構

superset db upgrade

初始化 role 等

superset init

執行如上4條命令即可以在 POSIX 操做系統上部署 Superset,如想加載 Superset提供的例子數據,能夠再執行

superset load_examples

4. 安裝 kylinpy

pip install kylinpy

5. 安裝驗證,若是一切順利,Superset daemon應該能夠跑起來了

-d 選項能夠打開 debug 模式

superset runserver -d

 

Starting server with command:
gunicorn -w 2 –timeout 60 -b  0.0.0.0:8088 –limit-request-line 0 –limit-request-field_size 0 superset:app

[2018-01-03 15:54:03 +0800] [73673] [INFO] Starting gunicorn 19.7.1
[2018-01-03 15:54:03 +0800] [73673] [INFO] Listening at: http://0.0.0.0:8088 (73673)
[2018-01-03 15:54:03 +0800] [73673] [INFO] Using worker: sync
[2018-01-03 15:54:03 +0800] [73676] [INFO] Booting worker with pid: 73676
[2018-01-03 15:54:03 +0800] [73679] [INFO] Booting worker with pid: 73679

….

 

創建鏈接

如今全部的準備工做已經完畢,咱們來試試在 Superset 中建立一個 Apache Kylin 數據源。

1. 瀏覽器打開 http://localhost:8088 賬號密碼是剛纔 fabmanager 建立的 admin/admin。

superset

點擊 Source —> Datasource,以下配置,注意以下幾點:

  • SQLAlchemy URI 格式爲:

kylin://<username>:<password>@<hostname>:<port>/<project name>

  • 勾選 Expose in SQL Lab 後這個數據源即可以在 SQL Lab 中展現出來。
  • 點擊 Test Connection 能夠測試連接是否成功。

建立 Kylin 數據源

superset

測試鏈接

superset

查詢 Kylin 表單

鏈接成功後頁面最下會展現這個 Kylin 項目內全部的表。

superset

1. 點擊 Source —> Tables,添加 Table,此處須要手動輸入須要添加的表名。

superset2. 在全部列表中選定相應的表,就能夠開始查詢之旅啦。

superset

使用 SQL Lab 查詢 Apache Kylin 多表

熟悉 Kylin 的讀者都知道,Kylin Cube 一般都是以多表關聯建模爲基礎生成的,所以分析 Kylin Cube 的數據時,使用多表進行查詢對於 Kylin 來講是很是常見的場景。在使用 Superset 分析 Kylin 數據時,咱們可使用 Superset 中的 SQL Lab 功能來查詢多表,並對其進行可視化分析。

在這裏咱們以一個能夠擊中 Kylin 中的 sample cube ‘kylin_sales_cube’ 的查詢爲例。

superset

查詢返回後點擊可視化按鍵便可針對當前查詢進行可視化分析。

superset

你能夠複製下面的完整查詢來體驗 SQL Lab 查詢 Kylin Cube 的功能。

select YEAR_BEG_DT,
MONTH_BEG_DT
WEEK_BEG_DT
META_CATEG_NAME
CATEG_LVL2_NAME,
CATEG_LVL3_NAME,
OPS_REGION,
NAME as BUYER_COUNTRY_NAME,
sum(PRICE) as GMV,
sum(ACCOUNT_BUYER_LEVEL) ACCOUNT_BUYER_LEVEL,
count(*) as CNT
from KYLIN_SALES
join KYLIN_CAL_DT
on CAL_DT=PART_DT
join KYLIN_CATEGORY_GROUPINGS
on SITE_ID=LSTG_SITE_ID
and KYLIN_CATEGORY_GROUPINGS.LEAF_CATEG_ID=KYLIN_SALES.LEAF_CATEG_ID
join KYLIN_ACCOUNT
on ACCOUNT_ID=BUYER_ID
join KYLIN_COUNTRY
on ACCOUNT_COUNTRY=COUNTRY
group by YEAR_BEG_DT,
MONTH_BEG_DT

WEEK_BEG_DT
META_CATEG_NAME
CATEG_LVL2_NAME,
CATEG_LVL3_NAME,
OPS_REGION,
NAME

使用 Superset 的多種功能查詢 Apache Kylin

根據不少 Apache Kylin 用戶在對接可視化及報表分析前端時,所提出的一些常見需求,咱們對Superset 的相應功能也作了一些測試,能夠說企業對於報表分析及可視化展示所須要的絕大部分功能,Superset 都已經能夠提供了。

排序

Superset 支持使用任意數據源上定義的度量進行排序,不論這個度量是否在圖表上。

superset

superset

過濾功能

在 Superset 中有多種過濾功能均可以使用在對 Kylin 的查詢中。

1. 日期過濾

在 Superset 中你能夠對定義爲時間列的維度進行日期和時間的過濾。

superset2. 維度過濾

對於其餘非時間維度,Superset 也提供了維度的篩選器,支持 SQL 中的 in,not in,等於,不等於,大於等於,小於等於,小於,大於,like 等多種過濾方式。

superset3. 報表內搜索

你能夠在報表返回後使用搜索框功能對數據進行篩選。

superset4. 度量過濾

對於度量 Superset 支持用戶直接寫入 SQL 的having 表達式。

superset5. 聯動過濾

使用 Superset 中提供的過濾框可視化組件,能夠實現一個過濾器聯動過濾多個可視化圖形的效果。

以下圖,過濾框組件能夠聯動控制儀表盤上的全部可視化圖形。

superset6. Top N

你能夠經過對數據進行排序和設置返回行數限制來實現展現 Top 10/Bottom 10 等功能。

superset7. 分頁

在返回的數據量較大時,Superset 支持設置每頁數據行數實現數據的分頁。

superset

8. 多種可視化

Superset 提供多樣的可視化圖表選擇,這裏僅以世界地圖和睦泡圖爲例做爲展現。

superset

superset

superset

9. 其它功能

 

另外 Superset 還支持數據導出 CSV,報表分享,查看報表 SQL 等功能。

10. 中文支持

 

最重要的是,Superset 因爲社區的貢獻已提供了中文版本!

 

Superset 使用了 Flask 的翻譯擴展工具 Flask-Babel(http://packages.python.org/Flask-Babel/) ,使用了這個擴展包後,每一個對應的語言版本只須要在翻譯文件中將對應的 Superset 文字翻譯成中文便可,這使得 Superset 社區的中文用戶能夠很容易的貢獻翻譯內容。

superset

 

總結

多個開源項目的結合每每能產生1+1>2的效果,Kylin 專一於 OLAP 計算引擎,Superset 專一於數據可視化展示. 分析師手中的雙劍合璧實現交互式分析,讓企業使用大數據技術顯著提高生產力。

相關文章
相關標籤/搜索