目 录- 8 q/ {& M2 v% Z. x/ @1 o. k
& b7 I6 w% N$ R
% y6 Z+ r! n W1 D, e) p+ ^/ y
1. 需求背景1.1 大数据可视化面临的挑战 大数据的兴起,关于数据的存储、计算技术层出不穷,但是最终的数据可视化呈现,数据的探索,也成为颇为重要的一环,这一块并没有像存储、计算技术栈那么百花齐放,大家在做大数据可视化时是否也曾有这些困惑呢? - 传统的可视化对接传统数据库,对大数据组件的hive,spark,presto、elasticsearch、clickhouse等兼容性差,甚至不兼容,每次还需要多一道将大数据集群数据分发到传统数据库的冗余操作;
- 商用产品昂贵、甚至产品设置技术壁垒,很多甚至要求对接该商家的自己的大数据技术方可对接;
- 群众基数大的Excel拖来拽习惯、SQL操作的方便性,排斥自成一派的新技术,网页版账号登录优于用户下载客户端登录;
- 公司开发人员配置紧张,没有多余的人力自研大数据可视化平台,但是决策层希望有一个统一的可视化平台。4 n5 }6 L0 x. V: B O Y! r
诸如此类,确实令人头疼,现在就推荐一款解药Apache Superser——开源的大数据分析探索、可视化报表的神器。 1.2 大数据数据可视化的目标架构) m2 Z; X1 q# ]5 _9 R3 f% N0 e
4 I9 A* ]: J+ \) H0 a H- Q
图1.2 大数据数据可视化架构 8 |1 H, |! L4 N) G/ q
做事还是需要立一个目标架构,最后所有的事情都是围绕目标架构展开,才能越做越轻松,如图1.2,可是架构分为三个梯队; - 第一梯队:ClickHouse、DorisDB、Kylin等优秀OLAP技术做存储,利用自带的连接引擎,快速响应,同时支持实时数据和离线数据的接入,外接可视化平台,通过权限管控后呈现给用户;
- 第二梯队:数据存在数据仓库Hive内或者NoSQL的Hbase,再通过较为优秀且高效的引擎Presto、Flink、Spark等接入可视化平台,通过权限管控后呈现给用户;
- 剩下就是一个特殊的,如MySQL,临时文件等文件的接入;# Z: g4 m: B) S! v; `3 u- B( C7 R
注意:常用的也还有其它技术架构,如ELK架构,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。 kibana 也是一个开源和免费的工具,他Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。这个后续再讲,这里书归正传,先讲讲Apache Superser。 2. Apache Superset简介2.1 Apache Superset是什么? Apache Superset是一款由Python语言为主开发的开源时髦数据探索分析以及可视化的报表平台;她支持丰富的数据源,且拥有多姿多彩的可视化图表选择。
/ U1 x9 D5 `! g6 ?: S# l! z R9 [) b& Q4 Y
2 G) U" a8 `; @5 X; `& f: l) \% w2 T# L2 l) _
图2.1.1 Apache Superset定义 9 y# [5 ^8 M" i/ d9 E/ q
2.2 为什么选Apache Superset?- 支持丰富的数据库作为数据源,基本上平时用到的数据库都支持;如图2.2.0,支持的数据源有:. k# g: o( F$ [ I5 ?6 J2 f
- Amazon Athena
- Amazon Redshift
- Apache Drill
- Apache Druid
- Apache Hive
- Apache Impala
- Apache Kylin
- Apache Pinot
- Apache Solr
- Apache Spark SQL
- Ascend.io
- Azure MS SQL
- Big Query
- ClickHouse
- CockroachDB
- Dremio
- Elasticsearch
- Exasol
- Google Sheets
- Hologres
- IBM Db2
- IBM Netezza Performance Server
- MySQL
- Oracle
- PostgreSQL
- Trino
- Presto
- SAP Hana
- Snowflake
- SQLite
- SQL Server
- Teradata
- Vertica8 u& d# \1 q. I5 [* ^2 f$ e+ X# i
) k' ]/ b1 R2 h
图2.2.0 Apache Superset支持的数据源
4 o) U% o; \ y; l. W- 多姿多彩的可视化图表,Apache Superset拥有非常丰富的图表,来实现不同的可视化需求,如图2.2.1。
& e I" E% i6 `0 M9 M8 Y, W3 E; U. C: R, {
图2.2.1 Apache Superset支持的图表 - z% |: U5 ~ k1 p" t5 ^( l" O
- Data:主要功能是新增数据源和数据集Dataset(旧版本也叫Table),Dataset作为数据图表可视化的基础;
- Charts:图表,就是针对准备好的Dataset数据集,选择一款合适的图表呈现;
- Dashboards:仪表盘,其实就是报表、看板大屏展示,可以将多个Charts组合到一个仪表盘内一起展示。
- SQL Lab:SQL实验室,其实就是一个类似DBeaver、Navicat、DataGrip等一样的多功能数据库连接客户端,但是只有查询功能,配置驱动和连接后可以进行数据库、表、字段等模型的SQL查询操作。
- 设置:语言选择,登录注销、人员权限,操作日志等设置;
: ~) @! \4 h- J2 W* y
图2.2.3 Apache Superset使用预览 4 Y/ s8 L! F/ L4 M( R( m1 V
2.3 对比Metabase- 天生自带支持的数据源Apache Superset完胜Metabase;
- 数据图表形式Apache Superset完胜Metabase;
- 操作界面美观丝滑度Apache Superset稍逊Metabase;
- 托拉拽操作Apache Superset稍逊Metabase;
& e9 S' Z( f9 j% X/ [; Q$ M
向来博主都是鱼与熊掌能兼得就兼得,毕竟小孩才做选择嘛,可以考虑两个都装,Metabase用于专注业务数据需求人员,Apache Superset用于懂SQL的数据需求人员,二者生成的通用仪表盘,则可以利用一个统一的网页超链接到一起,形成一个统一的报表平台。 3. 快速上手 这里先快速上手带大家体验一把,细节后续章节细讲,首先配置好数据库连接(配置方法参考后续的 5.1 新建Databases(数据库)),然后打开SQL Lab,选择好配置数据库,写SQL语句分析探索数据,如图3.1.0,然后运行语句,得到数据结果,可以点击保存将常用的探索SQL保存下来,然后点击查询结果上方的EXPLORE按钮,就可以跳转图表分析图3.1.1; # P) x8 J) a6 A2 A
: H; k. K$ W7 o8 h) z
图3.1.0 Apache Superset在SQL Lab上探索数据
: _9 P# y; ]" E7 \6 S6 ~ 利用SQL Lab探索得到的数据集,选择合适需求的数据图表,选择合适的指标,度量值,点击上方的RUN就可以得到结果,非常的方便,可以直接点击上方的SAVE保存图表; u, @7 T9 L3 W D2 C
3 `7 k2 o/ n; ^ R
图3.1.1 Apache Superset数据可视化
6 r) C" w H$ I2 C% d 新建Dashboard,然后编辑Dashboard,将之前生成好的Charts(图表)拖拽到Dashboard,就完成了数据仪表盘的最终呈现,然后就可以分享给需求方,也可以生成访问链接分享。 注意:拖拽时尽量往Dashboard的上面拖拽,会出现一条蓝色的分界线就可以松手,否则可能出现无法拖拽的情况,这个设计很坑。 图3.1.1 Apache Superset数据仪表盘呈现 7 l! O* {% b! i. `. O: J
4. 部署安装4.1 部署方式及版本- 支持Linux、Windows、Mac的Docker部署
- 支持Linux、Windows、Mac的Python环境代码部署
- 可以在github,官网、或者国内镜像网站查看版本,但是别先下载,因为Apache Superset依赖包很多,最好能在线安装;
4 H4 s( Z! M" N( P: _; s0 O8 \! t
图4.1.0 Apache Superset版本预览 & ^* ?% ]; t' n$ |" d
- 博主选的是apache-superset-0.38.1.tar.gz在Linux上的Python环境代码部署。
; z, s* T3 {4 W; o5 S4 M/ u 4.2 配置需求- apache-superset-0.38.1.tar.gz
- CentOS 7 16核 32G(非硬性,一般性能的服务器即可)
- Python 3.6
- 要求服务器网,如果没有,可以使用能联网的代理服务器,依赖很多,采用在线安装的形式( \* J! T& t8 ? \8 \
4.3 下载安装- 下载安装Python3.6,可以选择安装anaconda集成的python,可以参考博客Linux通过anaconda来安装python,对应的版本是Anaconda3-5.2.0-Linux-x86_64.sh,下载传送门:Anaconda Download;安装好以后,如果老的服务器上存在python2,默认的环境变量启动是python2,没关系,只需要设置一个新的环境变量确保 python3启动是刚刚安装的版本即可。
- 安装python虚拟机,并启动,然后安装Apache Superset。+ [2 ~$ M$ D3 c! l# R: |
9 r$ }1 Y4 e4 |3 ?1 j
- # 切换到自己安装软件的目录,博主的是在/usr/local/tools,并新建superset目录
+ @8 x9 @6 A/ O) M0 f+ s% i/ i - cd /usr/local/tools
5 `: R2 f ?# n# d/ _8 t - mkdir superset1 b& u9 g4 B2 V, U! L
- cd superset
" S+ a6 O% C( F5 S. t$ T
) [' k) w9 l7 n- # 安装虚拟机,有网就不需要的代理服务器,配置代理服务器10.212.18.34:3129方法:9 p, W8 v7 A* \1 E) }
- # 写入配置文件 /etc/profile里面追加
5 w% e+ t/ E6 C; j3 F - # export http_proxy=10.212.18.34:3129/ _3 ]5 b9 p0 K5 A& h5 }% ^; F. p
- # export https_proxy=10.212.18.34:3129 i9 V+ ^4 q/ p( L2 z5 Z
- # 然后wq! 保存退出,source /etc/profile刷新配置文件( G& _# `! O4 w5 B- h% N
- # 安装完可以删除代理,记得再source /etc/profile
. L$ W! S) r1 k6 X( g5 v Z - # 如果不想配置/etc/profile或者无权限,可以采用以下命令
8 Q, L5 { ^$ z7 K - # pip install virtualenv --proxy=10.212.18.34:3129,每次都需要,烦! E N6 Q7 f) U" A! ?
- pip install virtualenv- ^0 p+ E3 Q i+ Y* H6 S
- ! v" X7 \. k2 V
- # 配置命名虚拟机
d9 ~8 ?! `: F- a0 l* D0 ] - python3 -m venv venv0 x" E/ m- Z# T0 \4 j1 R
$ s v- K9 t7 v" C {- Y; b- # 启动虚拟机,会在当前目录下自动创建venv目录; M: m( b$ _$ ^+ [- P
- . venv/bin/activate$ B" l' d8 O" [5 Y3 ?. Q
- 3 ?% g( O' {# {
- # 退出虚拟机指令,但是这里不需要退出9 `# ]% R# S' z* _
- # 退出虚拟机指令,但是这里不需要退出2 A; _: ]* n- R& T4 h1 x+ A
- # 退出虚拟机指令,但是这里不需要退出5 R$ n+ v4 R6 ~) {; s. A
- deactivate4 W' m8 O( t' u: H+ V2 @3 d* l8 `! B
- ; }+ D% @! x* l+ z% f2 `
- # 安装更新一些依赖
8 ^- [" K# d+ i6 g4 \! Z - pip install --upgrade setuptools pip -i https://pypi.douban.com/simple/- F6 X6 }6 _1 S7 v& a" |
- - B3 k `' ~& Q/ u7 q
- yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel mysql-devel gcc-devel: ~" ~5 j, n( X# k
- ! ~) a3 s7 r. K) V
- # 如果报错:GPG key retrieval failed: [Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7"; a7 M- J4 d2 Z+ P% n% T1 F5 y
- # 解决:
* A9 Q0 @: c# U" y - vi /etc/yum.repos.d/epel.repo
- \' F/ |$ w/ K' c9 B - gpgcheck=0
8 }1 ^& U9 u# V# k! m1 f - # 然后wq!保存再试一次yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel mysql-devel gcc-devel
6 H! |: v3 T! O8 C - # d$ J& u/ @8 ?9 i. @. o
- # 先用官网下载,因为官网的会自动把依赖也给你一起安装了,实在不行再用其他网站的镜像
. H6 B4 K* \ y2 X% o - pip install apache-superset==1.4.2# {7 M* ~& |7 r2 m. y1 s
+ E6 Y( a" Z" [9 R$ x- # 安装superset,指定版本,不指定版本默认是最新版本$ X2 @5 b' U7 C5 P2 f( {5 H) H
- pip install superset==0.30.1 -i https://pypi.douban.com/simple
p0 O; g" }5 C: d# @$ I - # z* T2 P, j+ k; n# t/ M4 m. ~9 n
- # 安装email_validator
' w* @' R; P. P- u2 m - pip3 install email_validator -i https://pypi.douban.com/simple/
7 M; r, u. v6 f. c t
6 Y0 W; V6 X2 X5 Z V- # 更新数据库3 e$ J8 n" O, N9 `
- superset db upgrade
& j4 ~6 a, v8 v' l; a - ) ^, g6 T3 |- v
- # 创建admin的用户名,用户名随便写,bigdata123,admin都行,写完用户名后会让你输入姓,名,邮箱,这三项可写可不写,不写就直接回车,然后是设置密码,一点要写。! d+ R; i- _6 }
- export FLASK_APP=superset
) `# ?. C4 J' c- l0 t) } - superset fab create-admin) a8 Q) W8 a+ }8 m5 p# |6 u
/ F# m6 p5 d2 h& L% u% [6 O* F- # 加载样例数据,考验网络,如果实在一致加载报错就放弃,不影响后续使用。: u& }' U% t$ W
- superset load_examples
( b, c+ q0 m# F+ a' N
6 f& h8 ]2 Z8 i) e- # 初始化" B2 _' \/ {! L. d; l
- superset init% ]2 V! g/ @: v3 I( S$ P6 h
/ u" M2 k+ Z* b& k- # 启动,官网是superset run -p 8088 --with-threads --reload --debugger# N% l7 S, ?0 Z( B2 K& t2 i
- # 建议用gunicorn启动,方便快速,先直接启动,确保打印在客户端的日志正常
% V# a' f/ P' d+ h$ ?+ ]$ ] - pip install gunicorn
/ I" c" y$ J9 O O2 v( Q A - gunicorn -w 5 --timeout 120 -b 10.218.10.290:9089 "superset.app:create_app()"
& ]1 C4 O' _, t- n. t: _ - ) ?6 _0 \' z. G7 h" h3 [# c2 U
- # gunicorn 是一个Python WEB服务,可以理解为Tomcat+ d/ J# C- N" k
- # -w WORKERS:指定线程数5 F: Q6 E8 p2 ?1 P3 ?
- # --timeout:worker进程超时时间,超过会自动重启
: K3 D8 i) z0 X0 \. d- f - # -b BIND:绑定Superset访问地址, W' T% r6 \( l
- # --daemon:后台运行
0 Y w1 e- I3 |; Y6 w: f) _1 \ - - J7 S j: ]- ~1 u# f0 L3 E5 z, O
- # 在能访问10.218.10.290:9089的服务器上打开浏览器,输入刚刚登录的用户名,密码即可。
/ S6 R* b+ q: q% G& D% n
?. X) T6 u9 q# X( x) t, P1 w- ) n' }+ S7 a$ n7 }( `
- # 如果没开启后台停止,直接ctrl+c关停
( {* o( P. T0 T2 F* l6 G - # 后台进程停止gunicorn% K, w/ x$ i" U3 s8 P9 r3 q
- ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | xargs kill -9
复制代码 ; K% R$ |4 ]) a+ M$ V' z! E
( k1 o: a% M% N# S3 H4.3 安装注意及排错 pip install superset步骤时出现关键字眼Successfully installed证明正确安装,如图4.3.0; + H9 L" x! b( L1 A$ ?9 D7 k
+ w5 j& b% S3 b% q% q
图4.3.0 成功安装的提示
- H @3 B a4 C) e! q superset fab create-admin配置用户名时提示如图4.3.1。 图4.3.1 配置用户名时提示
! J8 |) i9 Q) V* Y" c 每个人的服务器环境,可能导致缺少的 依赖不同,途中如果遇到bug,可自己百度解决,基本都是python依赖包之类的问题,要耐心。 - # 报错8 j9 Z% O2 Q; W
- ModuleNotFoundError: No module named 'dataclasses'' @$ ~% T; [. B* }& S4 G' C( |6 a
" g: B4 a5 g& G# h* g0 p1 y- # 解决
; k6 a; H X8 D8 a" w$ t - pip install dataclasses
7 s1 R& e) i4 p! h - ) c9 z4 T' U# C# w
- # 报错& W) p: j/ f# v6 C" a
- No PIL installation found/ v8 @" h) q/ E/ H( u+ l6 d* X
- # 解决
4 T" Q' O$ M4 v- `: x" P - pip install pillow l% f$ D! B+ n/ N) _/ N. d
复制代码 - _3 M* ?( e; y) l7 u# x6 V3 @( I
一切解决后,网页登录如图4.3.2; 图4.3.2 登录首页4.4 启动与关闭
! M$ I7 @+ }$ f; ^1 N1 h. e2 @3 l: t 官网提供的直接启动的方法不是很好,博主推荐一个采用gunicorn的方法,先关停superset。
! F3 S b3 T u9 x4 p9 A: q' r: a' g8 M
8 \1 z* A4 e( j$ y o e- #安装好superset后会在venv生成很多文件,切换到venv
& K, l1 u( m! s! _' ? - cd /usr/local/tools/superset/venv/
$ ], p3 h# z3 q! E8 N8 f
/ c6 L* i6 E7 J: c1 x& i- . S+ w" I' S9 l7 t0 \) h4 O
. j1 B. j6 e ^4 l$ ^- #新建日志文件夹
0 [) L% y6 `4 z - mkdir log& C4 R! E5 t* h$ s) W# ]) t
, @# u7 P. c$ Z/ d+ X- #切换到log目录,新权限 日志,错误日志和启动pid文件( |& _" [0 l9 W6 g
- cd log
9 e3 a% Q8 E# b$ Y: f - touch gunicorn_access.log
0 Z/ o2 ?! p, D$ L# @9 a) s - touch gunicorn_error.log
3 N! m' \" r' m% }9 D - touch pidfile
# E: W) E( S1 n8 F# n - chmod 755 ./* #修改权限1 j/ ]2 J+ e& h; w- _
' C7 G5 G0 ^5 z; R- #切换到/usr/local/tools/superset/venv/bin,写一个gunicorn配置文件,python语言
9 w9 L7 i! _. I - cd ./usr/local/tools/superset/venv/bin" p+ K, J, z; _- i# h) D
- & Y. c8 G% |! h* A' q, y: ?5 ?
- , g4 Y( `5 P: m9 B f9 @
- vim gunicorn_config.py # 内容如下$ @5 J1 J3 A$ n! U5 l N4 q
, t+ n* ~* K) C) X, U1 ]- #内容开始
/ w0 r0 b- ]3 m' ~5 O! T9 ~ - import multiprocessing/ t" x+ ~; ~* O" g3 n, z6 G6 V
- 3 Y ~) q- Y4 _4 C/ t- H
- ` D$ @: a1 u7 P) _9 a% m& g1 K- bind = '10.218.10.290:9089' #绑定ip和端口号! {+ B! a/ A% |6 m4 H {5 Q) x
- backlog = 512 #监听队列
$ _0 r n' o+ }1 Y - timeout = 30 #超时( {5 q b& J7 d# n; l4 y+ Q
- worker_class = 'gevent'
6 M3 W/ X; s0 s# j - workers = 5: r3 z9 N3 ]) A4 ?0 p5 p: ?
- worker_connections = 1000
. ~% u$ ?/ N$ M. ^ - threads = 2 #指定每个进程开启的线程数
3 M9 Z. }- M: i, L; \6 [$ X - loglevel = 'info' # 日志级别7 F8 B' k' i8 K+ E, i: r
- access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"' #设置gunicorn访问日志格式,错误日志无法设置
$ [ W! n" n* I0 ] - 1 W, k: c8 Z# x" B
- 6 ~1 o$ }" E- C5 Y# ~/ J% M- c
- # _- y! o2 o- }" w- l
- pidfile = '/usr/local/tools/superset/venv/log/pidfile'- A1 z# M3 Z" m+ \+ n% u
- errorlog = '/usr/local/tools/superset/venv/log/gunicorn_error.log'
; @0 Q- ~$ H' Z" Q. R - accesslog = '/usr/local/tools/superset/venv/log/gunicorn_access.log'2 h2 ~9 w9 N' }/ G7 _0 T T
- 1 y( ~4 w, V' u4 a1 Q) o
- print("IP and PORT:"+bind)
+ ~3 D3 Y- f8 K/ D/ Q: t8 ] - print("pid_file:"+pidfile)
! m9 I4 M) Q6 D: p A" B& @8 n) _ - print("error_log:"+errorlog)7 A5 X0 A* m1 P/ Z9 C, J8 t# ]
- print("access_log:"+accesslog)! \6 g6 G3 M: ~7 `) Q1 y
- i3 w! t- r+ c9 O8 q8 {
- #内容结束
6 ^/ |( D8 V9 W- ]" {% g$ V$ n; @
& `' O+ d" T7 F- @* s9 v- #然后 wq! 保存退出9 h; s6 d/ v/ a9 V i/ x# }: r' w5 a
+ e0 L% A' h) m, D& P% E- # gunicorn 启动 -c 配置文件启动;--daemon后台启动,日志可以去配置文件指定的路径查看
/ r- p T( c, }( R/ T0 l, f - gunicorn -c ./gunicorn_config.py "superset.app:create_app()" --daemon
1 T U6 R* i0 O% A - , X& q$ e& P) O6 B1 `
- # 后台进程查看
; r: w! F5 N% `! q7 u - ps -ef | grep gunicorn7 @( a4 `; ^8 S# p8 g$ ]: ]9 W
- 3 t, i( _6 m+ E+ {+ I
- # 或者通过端口查看
" _& y( b& g7 W# n: Q v+ F - netstata -tunlp | grep 9089
/ K2 g4 X. ?+ X: @$ q; Z: q - # 或
$ O2 |* F6 B* n6 H! B - ss -anp | grep 90897 B; q! r: y) V4 Q1 u( e8 P( G
& i& q5 r8 o+ L' ?7 @7 O( G0 A+ \- # 如果没开启后台停止,直接ctrl+c关停+ d% j2 k+ q4 M% [: w* I
- # 后台进程停止gunicorn9 ?* f2 H" K9 E
- ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | xargs kill -9
复制代码
5 m: D, ^* F3 w' J% C1 c2 @ 5. 用户手册(重点)
# X7 v. I" i! P0 c v: J n; J/ F) I& |7 g/ ~! k0 U
5.1 新建Databases(数据库) 新建数据库之前,需要先安装该数据库的python驱动包,具体语句可以参考官网 Database Drivers,如图5.1.0,一般就是pip install XXX,安装好驱动后,记得重启下Superset服务; 新建数据库连接的作用是为数据集Datasets和SQL实验室SQL Lab提供数据库、表的选择,就是提供数据源,当然Data下还有个Upload CSV(最新版本也支持Upload Excel)也可以直接将本地的CSV文件作为数据源上传到Superset站点,直接进行数据探索分析。 图5.1.0 数据库驱动以及连接字符串
# R3 J, _5 }) P" u* p8 C( g 登录进Apache Superset后,点击Data,下来选择Databases,然后跳转到图图5.1.1,点击右上侧的+号就可以跳转图5.1.2的数据新增配置界面。 图5.1.1 新建数据库连接
4 ~8 K) f" x! _: @+ g 图5.1.2,Database是指的新建这个数据库的显示名称,这个随便取,合理即可,SQLAlchemy URI 这个地方就是之前图5.1.0上的数据库连接字符串,确保和你选择的数据库类型一致。 % @" t' Y- ^: `
然后点击TEST CONECTION,连接成功后会跳出Seems OK!的弹出框,记得滑到最下面,点击保存,如果连接不成功,请检查数据库的实例,端口,用户名,密码以及自己部署的Apache Superset的服务器访问数据库的端口网络时是否能通,当然也不要忘记SQLAlchemy URI 填写规范,保存后的数据库连接就会列举在图5.1.1上。 * o# {6 a9 A2 x: v' }* P
# F9 w( i( o6 [9 W; ~5 Q
图5.1.2 新建数据库连接配置信息 % l9 a+ }$ Q7 O8 h0 p+ l+ Y& M) J1 t
5.2 新建Datasets(数据集,老版本也叫Tables) 图5.2.0 新建数据集 3 P3 w0 }# r0 q8 v
如图5.2.0,点击图中的Data下的Datasets,然后点击+号,跳转到图5.2.1,将配置好的数据库名下拉选出,写一个该连接实例下的数据库,然后选择一张表,点击保存即可,保存好的数据集会列举在图5.2.0中,这些知道为啥老板叫Tabels了吧;( u/ Z$ q4 [& Q7 e
数据集的作用是为后续的Charts(图表)数据可视化作为数据源头。 图5.2.1 新建数据集配置信息 1 u8 [5 i8 d# ]( z! d
5 f* j. L9 j0 S. i' ?5 N$ L5.3 SQL Lab(SQL实验室) SQL Lab其实就是一个数据库查询客户端,利用SQL语句对数据库的表,字段模型进行查询探索,同时支持智能补全,当然SQL Lab的查询结果也可以直接EXPLORE到Charts(图表),作为数据可视化的数据源。% i4 B( k4 v) G" t
如图5.3.0,SQL Lab有三个选项,三个选项的功能如下: - SQL Editor:进行SQL查询探索
- Saved Queries:保存的通用查询SQL
- Query Search:查询的历史记录
2 e( p: V" i" {. U: o" f7 l4 r
图5.3.0 主界面进入SQL Lab
. G0 }# g; M) O 点击SQL Editor进入图5.3.1的SQL查询探索,左侧上方是配置好的数据库连接名和选择的数据库,左侧下方是将要用到的表及字段模型;右侧上方是写SQL语句的地方,支持RUN(查询),RUN SELECTION(查询鼠标选择局部语句),SAVE(保存),SHARE(分享)等,右下方是数据结果,支持EXPLORE到Charts(图表)可视化,.CSV下载,CLIPBOARD(复制到剪贴板)。 图5.3.1 SQL Lab使用
+ V, m% @( b: d8 j) X7 K5.4 创建Charts(图表) 图表的作用是数据可视化,利不同的图表满足不同的业务需求,图表同时也作为仪表盘的展示的一部分,一个仪表盘内可以展示一个或多个图表。2 m9 {* ?% s; N9 S4 Q
创建图表的方式有两种: - 如图5.4.0,点击Charts,点击+创建新的图表,跳转图5.4.1
- 在SQL LabSQL语句探索查询的结果直接EXPLORE到Charts(图表)可视化# ? Z/ b$ H9 e# F% N E
图5.4.0 创建图表 - U3 V' x3 ]3 l3 I5 Z0 ^% z
如图5.4.1,选择合适需求的数据图表(如图5.4.2,支持的图表类型非常丰富,号称最漂亮的可视化图表展示),选择合适的指标,度量值,点击上方的RUN就可以得到结果,非常的方便,可以直接点击上方的SAVE保存图表; ) V! _3 c# i9 p" _4 ]) v
: K5 B9 }3 S3 a: F
图5.4.1 图表可视化配置 ) R }# ]. D8 `0 o4 p9 ~
号称最美可视化展示,支持可视化的图表类型确实丰富多彩,应对各种可视化需求。 - ~' u* { N# q
) ]) m5 f+ r) f3 ~图5.4.2 支持的图表类型
C" e9 g) u J3 S5.5 创建Dashboards(仪表盘) 仪表盘就是最后的数据总体呈现,即报表展示。 如图5.5.0,点击Dashboards,然后点击+新建仪表盘,跳转图5.5.1。 图5.5.0 创建仪表盘 " I+ c5 x0 a0 q; {4 [0 C
点击图5.5.1右上角的编辑仪表盘,之前做好的Charts(图表)拖拽到仪表盘上,注意:第一次拖拽的时候尽量网上拖拽,知道出现这个条蓝色的分解线,否则 无法拖拽过去; 同时也支持一些通用的组件,图表旁的Components下,有Header、Tabs、Row、Column、Markdown、Divider;
7 J# a" G9 ^! L7 i" x8 O/ H 编辑完后后记得点保存。 图5.5.1 编辑仪表盘 0 y/ R* s2 b. ^7 W1 o4 k
保存后的仪表盘支持分享,下载等功能,同时也会根据图表内的数据源刷新来获取新的数据;
8 K- D$ C" k4 c) M+ \6 \3 w( n# R; d! x
图5.5.2 仪表盘功能 5 u% j* u J8 V- Q5 }4 e
分享给别人看到的仪表盘如图5.5.3。 图5.5.3 分享后他人视角的仪表盘
" a0 z! r& q# E( a, R; u# V6. 设置 设置包含在菜单栏Settings下,主要设计权限和操作日志等模块,接下来分别讲解。
2 g( M, k+ Q Q
% \) K4 M( m F. f( g图6.0.0 通用设置
# x. J, R9 j+ R4 Z& {# I# p! V0 Q Q# J* f
6.1 角色列表及权限 Apache Superset中的安全性由Flask AppBuilder(FAB)处理,FAB是一个构建在Flask之上的应用程序开发框架。FAB提供身份验证、用户管理、权限和角色,可以查看其相关文档。
" I( D- ~2 z; t4 z" D8 Q2 \ Apache Superset默认提供了不同的角色,每种角色拥有的权限不同,在运行superset init命令时,与每个角色关联的权限将重新同步到其原始值,不建议更改与每个角色关联的权限(例如,通过删除或添加权限),支持admin再自建角色类型,指定想要的权限,默认的角色及权限如下; - Admin:管理员拥有所有可能的权限,包括授予或撤销其他用户的权限,以及更改其他用户的切片和仪表板;
- Alpha:Alpha用户可以访问所有数据源,但不能授予或撤消其他用户的访问权限。它们也仅限于改变它们所拥有的对象。Alpha用户可以添加和更改数据源。
- Gamma:Gamma用户的访问权限有限。他们只能使用来自通过另一个补充角色访问的数据源的数据。他们只能查看由他们可以访问的数据源制作的切片和仪表板。目前Gamma用户无法更改或添加数据源。我们假设他们主要是内容消费者,尽管他们可以创建切片和仪表盘。另请注意,当Gamma用户查看仪表板和切片列表视图时,他们将只看到他们有权访问的对象。
- sql_lab:sql_lab角色授予对sql lab的访问权限。请注意,虽然管理员用户在默认情况下可以访问所有数据库,但Alpha和Gamma用户都需要在每个数据库的基础上获得访问权限。
- public:要允许注销的用户访问某些超集功能,需要自己配置权限,并将其分配给另一个角色,您希望将其权限传递给该角色。# f3 k/ w& I \9 o
图6.1.0 系统默认角色
( q6 c1 v( Q, z' s6 y9 o, D 同时Apache Superset也支持管理员自己新增角色,如图6.1.1,新建角色并指定角色权限。
' O; g0 U8 S- S' \: s
: l' \8 w. b: }图6.1.1 新建角色 * B4 j/ R! A o1 F
% }% {* U8 e$ V* g
6.2 用户列表 新建、编辑用户指定角色,用户的权限是绑定在角色里面的,一个用户可以有多个角色,配置信息如图6.2.0。
) j$ m0 G3 X. ^6 T+ C; b9 ^) r4 H, G4 v" p: o) ]
图6.2.0 新建、编辑角色 8 d- Z v/ t$ D% _0 N. [! B1 E
: O( W2 U7 @/ E6.3 操作日志 操作日志记录的是在你的Superset平台上不同用户的行为日志,如图6.3.0。 图6.3.0 行为日志查看
8 z& f" i" D( x; S( S4 J" j, J
) C9 q; Q: {7 T6.4 用户信息、退出、版本信息 菜单栏最右侧的个人信息,主要是包含: - 用户信息:修改用户姓名,重置密码;
- 退出:回到登录主界面;
- 版本:目前您安装的Superset版本信息。
6 d t- K4 N; o" o0 f3 u, _! ^$ S; F) D2 N* `
图6.4.0 个人信息模块
- z" N: k5 ~6 F7 i- ]$ G) @4 I$ y& ?
6.5 语言选择 作为Apache的顶级项目,自然是运用于全球的,支持世界上一些通用的语言 ,选择一款你最喜欢的即可。 图6.5.0 语言选择
' i$ d5 w3 L; g( S" b6 ~; v6.6 管理设置 针对仪表盘,图表渲染加入自己想要的风格和模板,实际运用的用的不多。
$ {& w3 ^) Z' ? u: u% q& k6 H7 f3 E; V* a
图6.6.0 管理模块 0 \3 f* p1 v) d
6.7 + NEW 菜单栏的+ NEW其实就是给最通用的三个模块SQL Query、图表、看板(仪表盘)的一个快捷方式,此三者的用法就不在累赘了。 图6.7.0 + NEW模块 5 U1 M/ g7 v5 E
! b- m6 R/ r d+ i
5 X$ p; I5 t* p. ^% n2 \原文来源: https://blog.csdn.net/LXWalaz1s1s/article/details/119061337 - W( v0 n5 P5 O3 T+ e( H5 E& i! j- o
|