簡介
曾用名Caravel, Panoramix, 是由Airbnb(知名在線房屋短租公司)開源的數(shù)據(jù)分析與可視化平臺, 該工具主要特點是可自助分析, 自定義儀表盤, 分析結(jié)果可視化(導(dǎo)出), 用戶/角色權(quán)限控制, 還集成了一個SQL編輯器, 可以進行SQL編輯查詢等债查。
安裝
我使用docker進行安裝, 本以為很簡單, 中間還是遇到一些坑赎离,總結(jié)如下:
1、首先安裝docker
2炸客、創(chuàng)建相關(guān)目錄
mkdir /data/docker/volumes/superset/conf -p
mkdir /data/docker/volumes/superset/data -p
拉取鏡像superset鏡像
docker pull?amancevice/superset:0.18.5
注:這一步可以省略剃根,默認第三步會創(chuàng)建相關(guān)目錄
3打毛、創(chuàng)建容器
docker run -p 8088:8088 -v /data/docker/volumes/superset/conf:/etc/superset -v /data/docker/volumes/superset/data:/data --name superset -d?amancevice/superset:0.18.5
4速蕊、使用配置文件
vi /data/docker/volumes/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
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_COMMIT_TEARDOWN = True
# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''
加入
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_COMMIT_TEARDOWN = True
是為了處理warning
UserWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True to suppress this warning.
? warnings.warn('SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.? Set it to True to suppress this warning.')? ? ??
問題就出現(xiàn)在sqlite的路徑上, sqlite默認存儲在sqlite:////home/superset/.superset/superset.db, 我這里為了以后升級, 所以切換了存儲路徑, 這里有兩種做法
1)直接將/home/superset/.superset/路徑映射出來
2)將/home/superset/.superset/superset.db文件拷貝到/data目錄
我這里選擇的是第二種, 坑也在這, 使用
docker exec -it superset /bin/bash
cp /home/superset/.superset/superset.db /data? ?
失敗, 發(fā)現(xiàn)沒有權(quán)限, ls了一下才發(fā)現(xiàn)當前用戶是非root用戶, 而/data目錄是root權(quán)限.
經(jīng)過一番查找, 發(fā)現(xiàn)可以使用以下命令用root賬號登陸容器
docker exec -u 0 -it superset /bin/bash
0號用戶就是root用戶, 剩下來的就簡單了
mv /home/superset/.superset/superset.db /data
運行
ERROR:flask_appbuilder.security.sqla.manager:DB Creation and initialization failed: (sqlite3.OperationalError) unable to open database file (Background on this error at: http://sqlalche.me/e/e3q8)
百度了一下,錯誤有許多種乖仇,這里稍微列舉一些
1)數(shù)據(jù)庫路徑最好寫成絕對路徑憾儒,并且目錄要存在,而且?對目錄要有讀寫的權(quán)限乃沙, 因為打開數(shù)據(jù)庫的時候起趾,會產(chǎn)生臨時數(shù)據(jù);
2)在Win 7 enterprise 和 Win Xp Pro上面寫python v2.7時警儒,?'C:\Users\Lux\Desktop\History'?路徑 有時候要寫成?'C:\\Users\\Lux\\Desktop\\History'训裆;
3)有種情況我也是無法解釋的,某些時候你的數(shù)據(jù)庫文件后綴名不是?db?也不行蜀铲,需要改名為?xxx.db?边琉;
4)對數(shù)據(jù)庫文件要有讀寫的權(quán)限;
我遇到的是第一個情況记劝,只需要數(shù)據(jù)目錄授權(quán)即可变姨,
cd /data/docker/volumes/superset/
chmod?-R?777 data
5、退出容器, 重啟容器, 然后進行用戶初始化
docker restart superset
6厌丑、配置superset容器
設(shè)置用戶名和密碼(docker exec -it 容器ID fabmanager create-admin –app superset)
初始化數(shù)據(jù)庫(docker exec -it 容器ID superset db upgrade)
superset初始化(docker exec -it 容器ID superset init)
開啟superset服務(wù)(docker exec -it 容器ID superset runserver)
配置數(shù)據(jù)源
注意連接mysql的時候一定要加charset=utf8, 要不然中文會顯示亂碼.
點擊Test? Connection, 進行測試, 如果正常會顯示"Seems OK!"
添加要展示的表
創(chuàng)建slice, 然后將創(chuàng)建好的slice加入到dashboard
我感覺這部分不難, 自己摸索摸索總歸能夠用起來, 我這里就不詳細說了
多表展示
這里要特別強調(diào)一下如何顯示多表的展示, 很多文章都說superset不支持多表, 只支持單表, 我剛開始也以為是這樣, 后來發(fā)現(xiàn)這個方法可以進行基于多表的展示.
首先記得數(shù)據(jù)庫配置里先勾選"Expose in SQL Lab", 要不然在SQL Lab中是找不到數(shù)據(jù)源的
Expose in SQL lab.png
先執(zhí)行一個語句, 注意查詢結(jié)果中不要有相同的列, 如果有, 后續(xù)會提示錯誤
點擊"Query History", 選擇Visualize
勾中一個, 會有以下效果, 我基本都是用默認屬性, 然后點擊最下方按鈕
他會跳到slice的編輯頁, 可以進行編輯, 其實他這個過程是創(chuàng)建了一個以查詢?yōu)榻Y(jié)果的臨時表, 后續(xù)就是在這個臨時表中做展示. 知道這個原理, 也可以通過直接添加表來進行操作, 只是操作流程不允許寫入sql, 可以先添加, 然后再填入sql(我沒嘗試過, 應(yīng)該行得通)
table detail.png
最終結(jié)果如下
結(jié)語
文章寫的有點啰嗦, 如果你有數(shù)據(jù)可視化的問題, 希望這篇文章能夠給予你一定的幫助, 目前我觀察下來, 這部分做的好的軟件不多, 很多都是靠賣服務(wù)賺錢的, 比如數(shù)據(jù)觀(人家做的真好, 其實挺鼓勵使用人家的服務(wù)的, 如果沒什么研發(fā)人員, 可以優(yōu)先考慮使用), 希望這個軟件可以滿足老板的部分需求. 據(jù)說這里面的圖表還可以嵌入到其他系統(tǒng)中, 沒有仔細研究過, 不過這種不易調(diào)優(yōu)的查詢, 最好還是臨時用用就好, 別嵌入到系統(tǒng)中, 穩(wěn)定性和性能都不能有所保障.
最后還是附幾張人家的圖表截圖吧
spanshot1.png