Superset搭建及其簡(jiǎn)單使用

背景

老板一直反饋說(shuō)我們給不了他想要的, 關(guān)鍵每次他想要的都不一樣, 每實(shí)現(xiàn)一個(gè)新功能, 他就想要一堆相關(guān)的信息, 我要將這些信息都給他做成網(wǎng)頁(yè), 用圖表展示出來(lái), 各種維度搜索, 這還不得累死這幫開(kāi)發(fā)小伙伴. 所以對(duì)于他這種需求, 我基本都予以回絕, 堅(jiān)決不做. 不過(guò)口頭說(shuō)不做, 也深知老板不容易, 他要的信息也不過(guò)分, 其實(shí)就是要一些數(shù)據(jù)統(tǒng)計(jì)罷啦, 經(jīng)過(guò)一些調(diào)研, 一些數(shù)據(jù)分析部門的朋友建議我用tableau, 我也玩了玩, 功能相當(dāng)強(qiáng)大, 不過(guò)有兩個(gè)問(wèn)題:

  1. 單機(jī)軟件
    這種圖表總歸是希望可以在線查看, 手機(jī)查看最完美
  2. 付費(fèi)軟件
    不便宜

所以我就一直在尋找開(kāi)源在線的解決方案, 最開(kāi)始打算使用grafana, 后來(lái)發(fā)現(xiàn)他對(duì)時(shí)序支持比較好, 對(duì)于表查詢的展示好像怪怪的, 就放棄了. 終于在某天在一個(gè)偶然的機(jī)會(huì), 發(fā)現(xiàn)了Superset這個(gè)開(kāi)源項(xiàng)目. 好東西. 于是乎有了今天的分享

簡(jiǎn)介

曾用名Caravel, Panoramix, 是由Airbnb(知名在線房屋短租公司)開(kāi)源的數(shù)據(jù)分析與可視化平臺(tái), 該工具主要特點(diǎn)是可自助分析, 自定義儀表盤, 分析結(jié)果可視化(導(dǎo)出), 用戶/角色權(quán)限控制, 還集成了一個(gè)SQL編輯器, 可以進(jìn)行SQL編輯查詢等。

安裝

我使用docker進(jìn)行安裝, 本以為很簡(jiǎn)單, 中間還是遇到一些坑.

  1. 首先安裝docker
  2. 創(chuàng)建相關(guān)目錄
mkdir /dockerfs/superset/conf -p
mkdir /dockerfs/superset/data -p
  1. 創(chuàng)建容器
docker run -p 8088:8088 -v /dockerfs/superset/conf:/etc/superset -v mkdir /dockerfs/superset/data:/data  --name superset -d amancevice/superset:0.18.5
  1. 使用配置文件
vi /dockerfs/superset/conf/superset_config.py

輸入內(nèi)容

#---------------------------------------------------------
# Superset specific config
#---------------------------------------------------------
ROW_LIMIT = 5000
SUPERSET_WORKERS = 4

SUPERSET_WEBSERVER_PORT = 8088
#---------------------------------------------------------

#---------------------------------------------------------
# Flask App Builder configuration
#---------------------------------------------------------
# Your App secret key
SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'

# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
SQLALCHEMY_DATABASE_URI = 'sqlite:////data/superset.db'

# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True

# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''

問(wèn)題就出現(xiàn)在sqlite的路徑上, sqlite默認(rèn)存儲(chǔ)在sqlite:////home/superset/.superset/superset.db, 我這里為了以后升級(jí), 所以切換了存儲(chǔ)路徑, 這里有兩種做法

  • 直接將/home/superset/.superset/路徑映射出來(lái)
  • 將/home/superset/.superset/superset.db文件拷貝到/data目錄

我這里選擇的是第二種, 坑也在這, 使用

docker exec -it superset /bin/bash
cp /home/superset/.superset/superset.db /data

失敗, 發(fā)現(xiàn)沒(méi)有權(quán)限, ls了一下才發(fā)現(xiàn)當(dāng)前用戶是非root用戶, 而/data目錄是root權(quán)限.
經(jīng)過(guò)一番查找, 發(fā)現(xiàn)可以使用以下命令用root賬號(hào)登陸容器

docker exec -u 0 -it superset /bin/bash

0號(hào)用戶就是root用戶, 剩下來(lái)的就簡(jiǎn)單了

mv /home/superset/.superset/superset.db /data
  1. 退出容器, 重啟容器, 然后進(jìn)行用戶初始化
docker restart superset 
docker exec -it superset superset-init
init pwd.png
  1. 打開(kāi)瀏覽器, 鍵入地址, 可以使用起來(lái)了
login.png
dashboard.png

使用

  1. 配置數(shù)據(jù)源
datasources.png

connection.png

注意 連接mysql的時(shí)候一定要加charset=utf8, 要不然中文會(huì)顯示亂碼.
點(diǎn)擊Test Connection, 進(jìn)行測(cè)試, 如果正常會(huì)顯示"Seems OK!"

  1. 添加要展示的表
  2. 創(chuàng)建slice, 然后將創(chuàng)建好的slice加入到dashboard
    我感覺(jué)這部分不難, 自己摸索摸索總歸能夠用起來(lái), 我這里就不詳細(xì)說(shuō)了
  3. 多表展示
    這里要特別強(qiáng)調(diào)一下如何顯示多表的展示, 很多文章都說(shuō)superset不支持多表, 只支持單表, 我剛開(kāi)始也以為是這樣, 后來(lái)發(fā)現(xiàn)這個(gè)方法可以進(jìn)行基于多表的展示.
    首先記得數(shù)據(jù)庫(kù)配置里先勾選"Expose in SQL Lab", 要不然在SQL Lab中是找不到數(shù)據(jù)源的
Expose in SQL lab.png
SQL lab.png

先執(zhí)行一個(gè)語(yǔ)句, 注意查詢結(jié)果中不要有相同的列, 如果有, 后續(xù)會(huì)提示錯(cuò)誤

query.png

點(diǎn)擊"Query History", 選擇Visualize


Visualize.png

勾中一個(gè), 會(huì)有以下效果, 我基本都是用默認(rèn)屬性, 然后點(diǎn)擊最下方按鈕


modify.png

他會(huì)跳到slice的編輯頁(yè), 可以進(jìn)行編輯, 其實(shí)他這個(gè)過(guò)程是創(chuàng)建了一個(gè)以查詢?yōu)榻Y(jié)果的臨時(shí)表, 后續(xù)就是在這個(gè)臨時(shí)表中做展示. 知道這個(gè)原理, 也可以通過(guò)直接添加表來(lái)進(jìn)行操作, 只是操作流程不允許寫入sql, 可以先添加, 然后再填入sql(我沒(méi)嘗試過(guò), 應(yīng)該行得通)
table list.png
table detail.png

最終結(jié)果如下

result.png

結(jié)語(yǔ)

文章寫的有點(diǎn)啰嗦, 如果你有數(shù)據(jù)可視化的問(wèn)題, 希望這篇文章能夠給予你一定的幫助, 目前我觀察下來(lái), 這部分做的好的軟件不多, 很多都是靠賣服務(wù)賺錢的, 比如數(shù)據(jù)觀(人家做的真好, 其實(shí)挺鼓勵(lì)使用人家的服務(wù)的, 如果沒(méi)什么研發(fā)人員, 可以優(yōu)先考慮使用), 希望這個(gè)軟件可以滿足老板的部分需求. 據(jù)說(shuō)這里面的圖表還可以嵌入到其他系統(tǒng)中, 沒(méi)有仔細(xì)研究過(guò), 不過(guò)這種不易調(diào)優(yōu)的查詢, 最好還是臨時(shí)用用就好, 別嵌入到系統(tǒng)中, 穩(wěn)定性和性能都不能有所保障.

最后還是附幾張人家的圖表截圖吧

spanshot1.png
spanshot2.png
spanshot3.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容