其實大數據圖表展現的這類平臺有不少,Superset是其中之一,最近有個需求對各種圖表展現的開發較多,索性將工做量交給這個平臺。html
Superset的中文翻譯是快船,而Superset實際上是一個自助式數據分析工具,它的主要目標是簡化咱們的數據探索分析操做,它的強大之處在於整個過程一鼓作氣,幾乎不用片刻的等待。
python
docker pull amancevice/caravel
docker run --name caravel -d -p 8088:8088 amancevice/caravel
docker exec -it caravel demo
#系統會提示設置管理員複製代碼
具體效果以下mysql
[root@localhost ~]# docker exec -it ac94ec4d9469 demo
Username [admin]: admin
User first name [admin]: admin
User last name [user]: a
Email [admin@fab.org]: a
Password:
Repeat for confirmation:
******此處省略幾百行複製代碼
yum makecache
sudo easy_install -i http://pypi.douban.com/simple/ pip
sudo easy_install pip
sudo yum install gcc libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel複製代碼
#安裝Superset
pip install superset
#建立管理員用戶名和密碼
fabmanager create-admin --app superset
#初始化Superset
superset db upgrade
#裝載初始化樣例數據
superset load_examples
#建立默認角色和權限
superset init
#啓動Superset
superset runserver複製代碼
數據庫 | 命令 | 連接方式 |
---|---|---|
MySQL | pip install mysqlclient | mysql:// |
Postgres | pip install psycopg2 | postgresql+psycopg2:// |
Presto | pip install pyhive | presto:// |
Oracle | pip install cx_Oracle | oracle:// |
sqlite | sqlite:// | |
Redshift | pip install sqlalchemy-redshift | redshift+psycopg2:// |
MSSQL | pip install pymssql | mssql:// |
Impala | pip install impyla | impala:// |
SparkSQL | pip install pyhive | jdbc+hive:// |
由於默認是有權限控制的,即便分享出去的圖表也須要登陸用戶才能看到,那如何作到不登錄用戶也能查看圖表呢,因而改造之路就開始了。git
剛開始沒找到方法,不得不從從源碼入手解開權限,
github.com/apache/incu…
/superset/views/core.py文件922行刪掉 @has_access_api註解github
@log_this
@has_access_api
@expose("/explore_json/<datasource_type>/<datasource_id>/")
def explore_json(self, datasource_type, datasource_id):
try:
viz_obj = self.get_viz(
datasource_type=datasource_type,複製代碼
1006行刪掉 @has_access_api註解sql
@log_this
@has_access
@expose("/explore/<datasource_type>/<datasource_id>/")
def explore(self, datasource_type, datasource_id):
form_data = self.get_form_data()複製代碼
在1017行加入docker
viz_obj.datasource.("all_datasource_access")複製代碼
增長庫的訪問權限,可能還有些地方要改,該方法改了源碼,侵入性強,不推薦。數據庫
/superset/config.py第127行apache
# ---------------------------------------------------
# Roles config
# ---------------------------------------------------
# Grant public role the same set of permissions as for the GAMMA role.
# This is useful if one wants to enable anonymous users to view
# dashboards. Explicit grant on specific datasets is still required.
PUBLIC_ROLE_LIKE_GAMMA = False複製代碼
將PUBLIC_ROLE_LIKE_GAMMA
改成True,
註釋意思
授予公共角色與GAMMA角色相同的權限集。
若是想讓匿名用戶查看,能夠設置這裏
在儀表盤對特定數據集的受權顯示,也在這裏設置。json
加入數據庫權限這裏加入全部數據庫權限
Public [can explore on Superset, all database access on all_database_access, can explore json on Superset]複製代碼
其中
can explore on Superset爲導出圖表
can explore json on Superset爲導出圖表json
all database access on all_database_access訪問全部數據庫權限,也能夠設置單個
<iframe
width="600"
height="400"
seamless
frameBorder="0"
scrolling="no"
src="http://10.10.100.18:32771/superset/explore/table/2/?form_data=%7B%22datasource%22%3A%222__table%22%2C%22viz_type%22%3A%22bubble%22%2C%22slice_id%22%3A9%2C%22granularity_sqla%22%3A%22year%22%2C%22time_grain_sqla%22%3A%22Time+Column%22%2C%22since%22%3A%222011-01-01%22%2C%22until%22%3A%222011-01-02%22%2C%22series%22%3A%22region%22%2C%22entity%22%3A%22country_name%22%2C%22size%22%3A%22sum__SP_POP_TOTL%22%2C%22limit%22%3A0%2C%22show_legend%22%3Atrue%2C%22max_bubble_size%22%3A%2250%22%2C%22x%22%3A%22sum__SP_RUR_TOTL_ZS%22%2C%22x_axis_format%22%3A%22.3s%22%2C%22x_axis_label%22%3A%22%22%2C%22x_log_scale%22%3Afalse%2C%22y%22%3A%22sum__SP_DYN_LE00_IN%22%2C%22y_axis_format%22%3A%22.3s%22%2C%22y_axis_label%22%3A%22%22%2C%22y_log_scale%22%3Afalse%2C%22where%22%3A%22%22%2C%22having%22%3A%22%22%2C%22filters%22%3A%5B%7B%22col%22%3A%22country_code%22%2C%22op%22%3A%22not+in%22%2C%22val%22%3A%5B%22TCA%22%2C%22MNP%22%2C%22DMA%22%2C%22MHL%22%2C%22MCO%22%2C%22SXM%22%2C%22CYM%22%2C%22TUV%22%2C%22IMY%22%2C%22KNA%22%2C%22ASM%22%2C%22ADO%22%2C%22AMA%22%2C%22PLW%22%5D%7D%5D%7D&standalone=true&height=400"
>
</iframe>複製代碼
將iframe放入任意html內便可打開。
藉助superset能夠幫助咱們可視化進行數據庫分析,支持導出導入sql語句,支持各類數據庫,在圖表展示方面是個不錯的框架。