1. 程式人生 > >開源資料視覺化工具(For Apache Kylin)使用說明

開源資料視覺化工具(For Apache Kylin)使用說明

http://lxw1234.com/archives/2016/06/691.htm

Apache Kylin,很好的解決了海量資料OLAP的底層儲存與分析引擎,但還缺一個數據視覺化工具,可以使使用者非常方便的通過圖形化分析探索海量資料,而不用寫SQL。於是我們發現了Caravel。
原生的Caravel並不支援Kylin,也不支援多表關聯,經過好友Rocky和我的修改和除錯,使得Caravel支援Kylin,同時也實現了Kylin中多表關聯分析。
GitHub地址(基於caravel 0.8.9):
https://github.com/rocky1001/pykylin/tree/caravel-kylin
https://github.com/rocky1001/caravel/tree/caravel-kylin


本文詳細介紹瞭如何使用這款工具來視覺化分析探索Apache Kylin。

Content:

關於Caravel
關於PyKylin
下載並安裝Caravel-Kylin
下載並安裝PyKylin
啟動Caravel 
建立Kylin資料來源
新增Kylin表
配置表的維度和指標
資料探索分析與視覺化展示
定製自己的DashBoard
配置多表關聯
其他

關於Caravel

Caravel(曾用名Panoramix),是由知名線上房屋短租公司Airbnb開源的一款資料探索與視覺化工具,該工具在視覺化、易用性和互動性上非常有特色,使用者可以輕鬆對資料進行視覺化分析。官網地址為: http://airbnb.io/caravel/
Caravel底層使用Python開發,與SQLAlchemy深度整合,目前原生支援的資料來源有:
MySQL、Postgres、Presto、Oracle、sqlite、Redshift、MSSQL以及Druid。對於前面的關係型資料庫,Caravel通過將介面的操作轉換成SQL語句,提交給SQLAlchemy適配資料來源查詢並返回結果,對於Druid,Caravel將介面的操作轉換成Druid的API進行查詢並返回結果,與Druid的深度整合,可以實現大規模海量資料的OLAP分析和實時探索。
另外,為了提高併發查詢下的效能,還支援資料快取,可配置將資料快取至Redis、Memcache或者本地檔案系統。
Caravel支援十幾種視覺化圖表,用於將查詢返回的資料做視覺化展示:

caravel-kylin

關於PyKylin

PyKylin是由@Wu Xiang開源的Kylin DBAPI Driver 和SQLAlchemy Dialect
(https://github.com/wxiang7/pykylin),Caravel使用SQLAlchemy適配資料來源並提交查詢,因此,需要使用PyKylin,將Kylin作為一個數據庫引擎註冊進SQLAlchemy,然後由Caravel自動適配並執行。

下載並安裝Caravel-Kylin

Python 2.7.*. (建議使用Python3,避免中文亂碼問題)。
關於Python的其他依賴,請參考:http://airbnb.io/caravel/installation.html (OS dependencies)

使用root使用者或者sudo許可權。

使用命令

下載zip包,並解壓。

建議使用 git clone https://github.com/rocky1001/caravel.git 來下載原始碼,之前發現wget獲取的zip包不完整

進入解壓後根目錄,執行下面的命令安裝:

  1. pip install .

PS:在國內建議使用https://pypi.tuna.tsinghua.edu.cn/simple/ 作為源來安裝。

  1. pip install .-i https://pypi.tuna.tsinghua.edu.cn/simple/

安裝完後,執行下面的命令初始化Caravel:

  1. ## 建立admin使用者
  2. fabmanager create-admin --app caravel
  3. ## 初始化Caravel元資料
  4. caravel db upgrade
  5. ## 初始化Caravel預設的使用者角色和許可權
  6. caravel init
  7. ## 載入示例資料(可選)
  8. caravel load_examples

另外,Caravel預設使用sqlite作為元資料庫,配置在caravel_config.py 中,你可以修改使用其他如MySQL作為元資料。
如果你需要使用其他資料庫作為Caravel的資料來源,則還需要安裝相應的Python包,如MySQL:

  1. pip install mysqlclient

下載並安裝PyKylin

使用root使用者或者sudo許可權。

使用命令

下載zip包,並解壓。

(建議使用 git clone https://github.com/rocky1001/pykylin.git 來下載原始碼,之前發現wget獲取的zip包不完整)

進入解壓後根目錄,執行下面的命令安裝即可:

  1. pip install .

啟動Caravel-Kylin

Caravel和PyKylin成功安裝後,執行下面的命令啟動Caravel:

  1. nohup gunicorn -w 16--timeout 60-b 0.0.0.0:8088 caravel:app >>/tmp/caravel.log 2>&1&

注意:這裡和Caravel給出的啟動命令有所不同,這樣的啟動方式可以避免因查詢頁面關閉而造成的Server異常退出等問題,建議採用這種啟動方式,並將日誌重定向到檔案中。
啟動之後,可以在瀏覽器開啟http://localhost:8088 ,使用admin/admin登陸Caravel。

建立Kylin資料來源

caravel-kylin

caravel-kylin

這裡需要注意Sqlalchemy Uri的寫法:
kylin://ADMIN:[email protected]:7070/kylin/api?project=lxw1234
Kylin中的project名稱,需要以URL引數的方式傳遞。
點選”TEST CONNECTION”,提示測試連線成功,並且在最下方,列出了project中所有的表。

新增Kylin表

caravel-kylin

caravel-kylin

其中,Database選擇之前建立好的資料來源,Table Name必須是資料來源中對應真實的表名,表中必須包含一個Date或者Timestamp型別的欄位。
另外,如果該表在Kylin中的Schema為DEFAULT,這裡的Schema配置留空即可。

配置分析維度和指標

caravel-kylin

在Table List頁面,點選表的Edit record按鈕,進入屬性編輯頁面:

caravel-kylin

在List Table Column頁面中,可以定義那些欄位可以GroupBy,那些可以過濾,那些可以Count Distinct,那些可以Sum、Min、Max,那些欄位屬於時間序列欄位(Is Dttm)。

caravel-kylin

在List Sql Metric頁面,可以編輯和定義指標,如果上面對一些欄位勾選了Sum、Min、Max、Count Distinct選項,則這裡會自動生成相應的指標欄位。

資料探索分析與視覺化展示

Table定義好維度欄位和指標之後,即可針對該表進行資料探索分析與視覺化展示,在List Table頁面,點選一個表名,即可進入:

caravel-kylin

如下圖,在分析頁面中,可以針對某一個表事先定義的時間欄位、維度及指標欄位進行資料探索分析,並可以選擇相應的圖表進行視覺化展示。

caravel-kylin

可以將一個定製好的資料探索儲存成Slice,後面直接從Slices頁面檢視:

caravel-kylin

定製自己的DashBoard

在新增DashBoard頁面,可以將之前儲存好的多個Slice組合成一個DashBoard:

caravel-kylin

caravel-kylin

其中,每個Slice對應的模組,可以自由拖拽位置和大小,並儲存整個Dashboard的佈局。

配置多表關聯

為了支援Kylin中多表查詢,一般是一個事實表關聯多張維度表,並獲取衍生維度,我們通過在Caravel Table中新增自定義欄位,並對該欄位定義一定規則的表示式(欄位串常量),提交到PyKylin之後,PyKylin解析該字串常量,轉換成與維度表關聯的SQL查詢並返回結果。
這裡做法有些粗糙,但功能基本實現,你可以參考該思路做進一步的優化和修改。

這裡以事實表AD_REPORT2為例,其中有維度ID欄位AD_ID,在Kylin中構建Cube時候,通過INNER JOIN維度表AD_DIM來獲取維度名稱AD_NAME。

在Caravel的AD_REPORT2中新增欄位ad_name,

caravel-kylin

該欄位表示式為字串常量:

  1. '$|INNER JOIN (select ad_id as __ad_id,ad_name as __ad_name from LIUXIAOWEN.AD_DIM) as b ON (ad_id = __ad_id)|b.__ad_name|$'

字串以$開頭和結尾,以|分隔。
其中:INNER JOIN (select ad_id as __ad_id,ad_name as __ad_name from LIUXIAOWEN.AD_DIM) as b ON (ad_id = __ad_id) 定義了維度表、JOIN型別、ON條件,該字串會直接新增到原始SQL中,作為JOIN子句;在維度表中的欄位前面加上__為了和事實表中的欄位區分而不用考慮表的別名。
b.__ad_name 定義了使用該欄位作為最終的欄位取值。

當選擇ad_name作為維度查詢時,Caravel提交給PyKylin的SQL語句為:

  1. SELECT '$|INNER JOIN (select ad_id as __ad_id,ad_name as __ad_name from LIUXIAOWEN.AD_DIM) as b ON (ad_id = __ad_id)|b.__ad_name|$' AS ad_name,
  2. SUM(imp_pv) AS sum__imp_pv
  3. FROM liuxiaowen.AD_REPORT2
  4. WHERE pt >='2015-06-13'
  5. AND pt <='2016-06-13'
  6. GROUP BY '$|INNER JOIN (select ad_id as __ad_id,ad_name as __ad_name from LIUXIAOWEN.AD_DIM) as b ON (ad_id = __ad_id)|b.__ad_name|$'
  7. ORDER BY SUM(imp_pv) DESC
  8. LIMIT 50

PyKylin經過轉換後提交給Kylin的SQL語句為:

  1. SELECT b.__ad_name as ad_name,
  2. SUM(imp_pv) AS sum__imp_pv
  3. FROM liuxiaowen.ad_report2
  4. inner join (SELECT ad_id AS __ad_id,ad_name AS __ad_name FROM liuxiaowen.ad_dim) AS b
  5. ON (ad_id = __ad_id)
  6. WHERE pt >='2015-06-13' AND pt <='2016-06-13'
  7. GROUP BY b.__ad_name
  8. ORDER BY SUM(imp_pv) DESC

該配置方法對於關聯一張維度表獲取多個欄位,以及關聯多張維度表獲取多個維度欄位同樣適用,只需要在Caravel Table中新增多個欄位,表示式的寫法一樣即可。

其他

此版本只是在Caravel基礎之上增加了對Apache Kylin的支援,Caravel的其他功能和支援的資料來源不受任何影響。
Caravel UI上的錯誤提示非常不友好,很多時候需要根據Caravel日誌來確定問題;
選擇的時間段內沒有資料、維度和指標的選擇,都有可能造成圖表不能正常顯示;


相關推薦

開源資料視覺工具For Apache Kylin使用說明

http://lxw1234.com/archives/2016/06/691.htm Apache Kylin,很好的解決了海量資料OLAP的底層儲存與分析引擎,但還缺一個數據視覺化工具,可以使使用者非常方便的通過圖形化分析探索海量資料,而不用寫SQL。於是我們發現了

雲端計算的四大市場優勢和四大頂尖開源資料視覺分析工具分享

雲端計算的四大市場優勢和四大頂尖開源資料視覺化分析工具分享 研究機構埃森哲公司的專家與行業廠商在雲端計算領域的努力和願望方面進行了溝通和探討,與雲端計算提供商討論了他們未來的解決方案和計劃,並對企業在採用雲端計算時面臨的挑戰和雲端計算解決方案的功能進行了分析。   埃森哲公司是一家擁有

Top 7大開源資料視覺分析工具

目前,我們可以在市場上找到很多用於網路分析和資料視覺化的開源工具,例如NetworkX,R和Gephi中的iGraph包等。在所有工具中,Gephi一直以來被認為是最值得推薦的,它可以幫助使用者輕鬆實現超過十萬個節點的視覺化。但是,除了Gephi,還有很多免費開源工具可供選擇

【13】Caffe學習系列:資料視覺環境python介面)配置

caffe程式是由c++語言寫的,本身是不帶資料視覺化功能的。只能藉助其它的庫或介面,如opencv, python或matlab。更多人會使用python介面來進行視覺化,因為python出了個比較強大的東西:ipython notebook, 現在的最新版本改名叫jupyter notebook

資料視覺方法

 資料視覺化可以提供對資料的直觀感受,這個有時是很難通過表格的形式把握到的。本文將介紹分類問題的視覺化方法。  資料視覺化的第一步就是獲取資料,下面是用“岩石vs水雷資料集”為例,展示資料獲取方法。 1 import pandas as pd 2 3 ta

MongoDB的視覺工具Studio 3T

​​ 前面我們已經介紹了MongoDB怎麼安裝,接下來要安裝他的視覺化工具——Studio 3T。 先到這下載一個壓縮包,百度網盤,https://pan.baidu.com/s/1M8mlWo334KE8I1_UA2Da_Q。 下載完如下圖,接下來就是傻白甜的安裝。 ​ 安裝完的結果如下圖。 ​

福利來了:39個大資料視覺工具

資料視覺化無處不在,而且比以前任何時候都重要。無論是在行政演示中為資料點建立一個視覺化程序,還是用視覺化概念來細分客戶,資料視覺化都顯得尤為重要。以前的工具的基本不能處理大資料。本文將推薦39個可用於處理大資料的視覺化工具(排名不分先後)。其中許多工具是開源的,能夠共同使用或嵌入已經設計好的應用程式

MySQL免安裝版配置方法以及MySQL視覺工具Navicat for MySQL 安裝和破解

  一、MySQL免安裝版配置方法(圖片中的路徑與文字方法路徑有出入,自行修改) 1、配置環境變數: 1)新建MYSQL_HOME變數,並配置: D:\ mysql-5.6.42-winx64 MYSQL_HOME:D:\ mysql-5.6.42-winx64 2)編

python視覺進階---seaborn1.8 線性關係資料視覺 Implot

線性關係資料視覺化 1. Implot() 示例1: import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns #設定風格、尺度 sns.se

matplotlib資料視覺分析2-- numpy將陣列儲存到檔案

1 陣列以二進位制的格式儲存 np.save 和 np.load 是讀寫磁碟資料的兩個主要函式。預設情況下,陣列以未壓縮的原始二進位制格式儲存在副檔名為 npy 的檔案中,以陣列 a 為例: # coding:utf-8 import numpy as np

從入門到精通,全球20個最佳大資料視覺工具

資料視覺化之初級篇 零程式設計工具   1. Tableau Tableau 是一款企業級的大資料視覺化工具。Tableau 可以讓你輕鬆建立圖形,表格和地圖。 它不僅提供了PC桌面版,還提供了伺服器解決方案,可以讓您線上生成視覺化報告。伺服器解決方案可以提

一款redis資料庫視覺工具RedisDesktopManager

原來的官網是這個,現在已經不好使了,大家可以選擇其他工具, RedisDesktopManager下載地址:https://redisdesktop.com/download 替代產品: 替代品可以選擇:treeNMS管理工具 我這有個歷史版本如果大家覺得可以,就下載一下試試: 連結:htt

python資料視覺seaborn—— 整體樣式與調色盤

很久之前對seaborn有過一些涉及但是沒有深入探究,這次有趁著有資料視覺化的需求,就好好學一學 Seaborn其實是在matplotlib的基礎上進行了更高階的API封裝,從而使得作圖更加容易,在大多數情況下使用seaborn就能做出很具有吸引力的圖,為資料分析提供了很大的便利性。但是

Python資料視覺matplotlib—— 子圖功能

Python資料視覺化matplotlib(二)—— 子圖功能 在matplotlib中,整個影象為一個Figure物件,在Figure物件中可以包含一個或者多個Axes物件,每個Axes(ax)物件都是一個擁有自己座標系統的繪圖區域 import pandas as

Python資料視覺matplotlib—— 圖表的基本元素

Python資料視覺化matplotlib(一)—— 圖表的基本元素 圖表建立 plt.show() # 圖表視窗1 → plt.show() plt.plot(np.random.rand(10)) plt.show() # 直接生成圖表 魔法函式 % matp

14款基於javascript的資料視覺工具

俗話說,一圖勝千言。圖形化的資訊可以讓人們對資料有更加直觀清晰的理解,讓資訊釋出者更加高效地展示自己的核心內容。在前端開發中,如果缺少合適工具,製作資料視覺化圖表會十分複雜。然而隨著資料視覺化概念逐年火熱,有較多優秀的圖表開源庫和製作工具脫穎而出。下面,我們就拿其中比較有名的

找尋一款redis資料庫視覺工具RedisDesktopManager

使用過程中可能會遇到的問題我在文後有所總結 我下載Windows版的: 我的redis裝在虛擬機器上的Linux上,看一下IP地址 安裝後的RedisDesktopManager 安裝上面的樣式新增一個連線(連線密碼如果沒有就不填)

Oracle資料庫視覺工具plsql developer連線遠端伺服器Oracle資料庫

參考部落格: 特別感謝以上博主的技術文章,本部落格參考以上部落格並加以整合,實現自己的功能需求,有部分文字別的博主的文章就不能贊一詞,所以會有拿來主義,並註明出處。如果有博主覺得我的做法欠佳,私信或者評論,我會修改。 需求說明: 本機使用視覺化工具連線遠端伺服器上的

推薦14款基於javascript的資料視覺工具

1、AnyChart AnyChart 是基於 Flash/JavaScript(HTML5) 的圖表解決方案,它可以輕鬆地跨瀏覽器、跨平臺工作。除了基礎的圖表功能外,它還有收費的互動式圖表和儀表功能。它可以通過 XML 格式獲取資料,該方式讓開發人員非常靈活地控制圖表上的每一個數據點,而當圖表資料點數

有哪些值得推薦的資料視覺工具

1.plotly 2.R ggplot2 3.無需程式語言的工具(7個) 4.基於JavaScript實現的工具(8個) 5.基於其他語言的工具(5個) 6.地圖資料視覺化工具(7個) 7.金融(股票)資料視覺化工具(2個) 8.時間軸資料視覺化工具(2個) 9.函式與公式資料視覺化工具(2個) 10.其他