super使用心得

superset使用心得

superset项目地址 github

安装运行

  • No module named ‘gevent’
    直接通过docker-compose方式执行

执行docker-compose up时,出现如下提示

superset_1  | + '[' 0 -ne 0 ']'  
superset_1  | + '[' development = development ']'  
superset_1  | + cd superset/assets/  
superset_1  | + npm ci  
superset_1  | + celery worker --app=superset.sql_lab:celery_app --pool=gevent -Ofair  
superset_1  | Traceback (most recent call last):  
superset_1  |   File "/usr/local/bin/celery", line 10, in <module>
superset_1  |     sys.exit(main())
superset_1  |   File "/usr/local/lib/python3.6/site-packages/celery/__main__.py", line 14, in main
superset_1  |     maybe_patch_concurrency()
superset_1  |   File "/usr/local/lib/python3.6/site-packages/celery/__init__.py", line 142, in maybe_patch_concurrency
superset_1  |     patcher()
superset_1  |   File "/usr/local/lib/python3.6/site-packages/celery/__init__.py", line 110, in _patch_gevent
superset_1  |     import gevent
superset_1  | ModuleNotFoundError: No module named 'gevent'

解决措施
在 requirements-dev.txt 中加入gevent

flask-wtf==0.14.2
flask==1.0.2
geopy==1.11.0
gevent       # 加入gevent
gunicorn==19.8.0
humanize==0.5.1
  • 项目初始化
sudo docker-compose run --rm superset ./docker-init.sh

此步骤会搭建superset的docker环境,并且通过docker-init.sh初始化项目,项目基础数据库(用于存放superset用户信息/权限信息/dashboard格式 等等)创建,在superset数据库中显示名称为main
在这里插入图片描述
ps:部署在其他地方的superset只要连接此基础数据库,将得到同样的内容展示

  • 更换基础数据库

superset >config.py下有关于数据库链接的配置,默认使用python自带的sqlite

# incubator-superset_copy/superset/config.py

# The SQLAlchemy connection string.
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(DATA_DIR, 'superset.db')
# SQLALCHEMY_DATABASE_URI = 'mysql://myapp@localhost/myapp'
# SQLALCHEMY_DATABASE_URI = 'postgresql://root:password@localhost/myapp'

但是 contrib > docker > superset_config.py会覆盖配置

# incubator-superset_copy/contrib/docker/superset_config.py

POSTGRES_USER = get_env_variable('POSTGRES_USER')
POSTGRES_PASSWORD = get_env_variable('POSTGRES_PASSWORD')
POSTGRES_HOST = get_env_variable('POSTGRES_HOST')
POSTGRES_PORT = get_env_variable('POSTGRES_PORT')
POSTGRES_DB = get_env_variable('POSTGRES_DB')

# The SQLAlchemy connection string.
SQLALCHEMY_DATABASE_URI = 'postgresql://%s:%s@%s:%s/%s' % (POSTGRES_USER,
                                                           POSTGRES_PASSWORD,
                                                           POSTGRES_HOST,
                                                           POSTGRES_PORT,
                                                           POSTGRES_DB)

superset默认数据库为postgres,我公司线上部署了mysql,所以我改为了mysql数据库,docker-compose.yml文件中关于postgres的依赖也去除。
这样我在本地开发时做的图表和仪表盘,线上部署时只需要连接同一个mysql数据库,就能看到本地开发时所生成的图表

# incubator-superset_copy/contrib/docker/superset_config.py

# 用mysql存储superset内容信息
MYSQL_USER = get_env_variable('MYSQL_USER')
MYSQL_PASSWORD = get_env_variable('MYSQL_PASSWORD')
MYSQL_HOST = get_env_variable('MYSQL_HOST')
MYSQL_PORT = get_env_variable('MYSQL_PORT')
MYSQL_DB = get_env_variable('MYSQL_DB')

# The SQLAlchemy connection string.
SQLALCHEMY_DATABASE_URI = 'mysql://%s:%s@%s:%s/%s' % (MYSQL_USER,
                                                      MYSQL_PASSWORD,
                                                      MYSQL_HOST,
                                                      MYSQL_PORT,
                                                      MYSQL_DB)

SQL Lab

  • SQL查询语句

在0.28版本中, 支持如下表达,字段可加引号可不加:

SELECT country_code AS country_code,
       SUM(SP_RUR_TOTL_ZS) AS "sum__SP_RUR_TOTL_ZS"
FROM ...

但是在新版本superset中则会出现报错

column "sp_rur_totl_zs" does not exist LINE 2: sum(SP_RUR_TOTL_ZS) AS "sum__SP_RUR_TOTL_ZS", ^ 

对于大写字母的字段需要加上引号:

SELECT country_code AS country_code,
       SUM("SP_RUR_TOTL_ZS") AS "sum__SP_RUR_TOTL_ZS"
FROM ...

对于[SELECT] ...AS...操作,不通过SQL Lab也能实现,我们需要进入Tables选择我们要操作的表,在指标选项中加入需要的字段,如下:
在这里插入图片描述
选择添加按钮,SQL Expression中为操作的sql表达式,Metric为数据别名
相当于[select] SQL Expressionas Metric
在这里插入图片描述


Dashboards

  • 编辑页面图表样式

直接进入Dashboards中打开一个仪表盘,会发现页面图片显示是每行3图,大小和位置固定

官方文档提到可以直接拖拽改变图表大小位置,如下图所示,点图表右下角的小箭头进行大小调整
在这里插入图片描述
这里困扰了我很久,我一直以为自己装载文件出问题,并且尝试了不同版本,除了docker安装还试了本地直接配置,但是没有看到官方文档提到的直接拖拽图片

点击图表右上角的那三个点可以对图表内容进行编辑。注意,这是无法调整图片大小和位置的
在这里插入图片描述
如果需要调整图表位置或大小,需要点击仪表盘右上角的Edit dashboard(注意不是点小箭头)
在这里插入图片描述
页面右侧会出现如下内容:
在这里插入图片描述
如果需要返回视图界面,点击Switch to view mode
工具功能介绍

  • Your charts & filters:这里可以查看自己的图表,选择图标后拖拽至指定位置(但建议先进行页面布局,然后再将图表拖拽至指定位置),下面是版面布局操作
  • Tabs:用于添加分页栏,将分页栏拖拽至你想分页的内容上,不仅可以对页面中部分展示模块进行分页,还能对整个展示页面进行分页,根据自己需求设计(下方为我在总栏下分了内容展示和展示说明页)
    在这里插入图片描述
  • Row:添加一行板块,实现的功能就是给其中某一模块下再加一行,可以是针对整个页面的整行,也可以是对小板块,反正你想加到哪,就把这个工具拖拽到哪个板块对应的边缘(上/下边缘),效果是列宽相等。
    注意:ROW和COLUMNS工具都只是创建一个空的板块,需要自己再将图表拖拽到创建的板块中
    在这里插入图片描述
  • Column:操作上和Row差不多,但是是多加一列,即左/右边缘上添加一个板块,效果是行高相等。在这里插入图片描述
  • Header:给内容板块添加一行标题板块
  • Markdown:添加一个非图表板块,内容是Markdown格式
  • Divider:板块间添加一条横线,用于视图美观,便于区分页面板块

Charts

  • 图表中数字格式调整

表中样式
 图表页面中数字格式
添加数字格式方法
打开 superset/assets/src/explore/controls.jsx文件,找到const D3_FORMAT_OPTIONS变量,加入自己需要的数字格式,如下我加入了“,”号分隔的整数/一位小数/两位小数

// input choices & options
const D3_FORMAT_OPTIONS = [
 ['SMART_NUMBER', 'Adaptative formating'],
 ['.1s', '.1s (12345.432 => 10k)'],
 ['.3s', '.3s (12345.432 => 12.3k)'],
 [',.1%', ',.1% (12345.432 => 1,234,543.2%)'],
 ['.3%', '.3% (12345.432 => 1234543.200%)'],
 ['.4r', '.4r (12345.432 => 12350)'],
 [',.0f', ',.0f (12345.432 => 12,345)'],
 [',.1f', ',.1f (12345.432 => 12,350.4)'],
 [',.2f', ',.2f (12345.432 => 12,350.43)'],
 [',.3f', ',.3f (12345.432 => 12,345.432)'],
 ['+,', '+, (12345.432 => +12,345.432)'],
 ['$,.2f', '$,.2f (12345.432 => $12,345.43)'],
];

改后效果
在这里插入图片描述


遇见问题

  • superset无法连接或打开和mysql有关的内容

在较新的superset中出现的问题,打开和mysql有关的看板或数据库时出现此提示

superset ModuleNotFoundError: No module named 'MySQLdb'

原因:
较新版本superset的requirements_dev.txt文件中移除了mysqlclient==1.4.2.post1thrift==0.11.0
解决方法:
在requirements_dev.txt中加入mysqlclient==1.4.2.post1thrift==0.11.0

black==19.3b0
coverage==4.5.3
flake8-import-order==0.18.1
flake8-mypy==17.8.0
flake8==3.7.7
flask-cors==3.0.7
ipdb==0.12
mypy==0.670
mysqlclient==1.4.2.post1
nose==1.3.7
pip-tools==3.7.0
pre-commit==1.17.0
psycopg2-binary==2.7.5
pycodestyle==2.5.0
pyhive==0.6.1
pylint==1.9.2
python-dotenv==0.10.1
redis==3.2.1
statsd==3.3.0
thrift==0.11.0
tox==3.11.1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值