SuperBI
SuperBI 是达闼科技以开源项目superset为基础开发的企业级快速BI应用。 可扩展的框架设计,支持多种DBMS数据源,让数据BI更加简单。 superbi提供直观的UI,拖拽式的编辑体验,配置式的图例创建,轻松创建数据可视化dashboard的能力。
Install / Use
/learn @CloudmindsRobot/SuperBIREADME
Superbi
引言
superbi 是达闼科技以开源项目superset为基础开发的企业级快速BI应用。 可扩展的框架设计,支持多种DBMS数据源,让数据BI更加简单。 superbi提供直观的UI,拖拽式的编辑体验,配置式的图例创建,轻松创建数据可视化dashboard的能力。
图例展示
superbi能做什么
- 提供丰富的可视化图例,包含基本的折线图,饼图,GL可视化图例等近60种图例
- 简单易用,无需代码,配置式创建的图例,拖拽编辑体验的dashboard。
- 先进的SQL在线编辑器,IDE式的体验,让你可以方便快捷的浏览元数据。
- 集成企业级的用户权限管理,并可以与其他身份验证系统集成(OpenID, LDAP, OAuth, REMOTE_USER)
- 自定义SQL扩展,提供对复杂情况的数据可视化能力。
- 集成echarts,3d word cloud,更加高度可配置的图表UI效果展示
- 对使用了多条SQL的图列,返回结果需要自行处理
功能介绍
1.自定义SQL
在原始superset中,可以通过选择各种条件控制数据的返回,如果有稍微复杂的应用场景则不能实现,比如对一张表自联返回想要的结果。正是有这样的需求,我们在每一个图例编辑界面加入了一个SQL编辑框,可以在 编辑框中编辑SQL原生语句来实现我们的需求。
使用效果

带FilterBox的SQL语句
当我们在Dashboards里面使用了FilterBox图例,实现全局的过滤的时候,SQL语句里面要使用变量@filters来表示过滤条件,例如:
SELECT "LON" AS "LON","LAT" AS "LAT",COUNT(*) AS count FROM long_lat WHERE @filters GROUP BY "LON","LAT" ORDER BY count DESC LIMIT 5000 OFFSET 0;
在WHERE后加上一个变量@filters,变量表示在FilterBox中选择的过滤条件
可选FilterBox字段
当我们在一个Dashboard中同时使用多个数据源时,有可能会出现多个数据源字段与FilterBox字段不匹配的情况,这种情况下如果还是使用@filters占位符来替代筛选条件则会出现过滤失败, 这种情况下可以使用${column}可选筛选项来代替@filters,${column}与@filters相比的优势在于它可以精确到具体的筛选字段,更加灵活。 示例:
SELECT supplier AS supplier,
COUNT(*) AS count
FROM sv.v_hitlog_2003
WHERE ${tdate} and ${supplier}
GROUP BY supplier
ORDER BY count DESC
LIMIT 10000
展示效果

多select合并查询
在某些图列中,一个SQL语句的查询结果不能满足我们的需求,这个时候需要多条的SQL语句执行需求
在编写SQL语句的时候加入变量@split,对多条SQL语句进行分割,例如:
SELECT state AS state,num AS num FROM birth_names GROUP BY state,num ORDER BY COUNT(*) DESC LIMIT 10 OFFSET 0;
@split
SELECT state AS state2, num AS num2 FROM birth_names GROUP BY state2,num2 ORDER BY COUNT(*) DESC LIMIT 10 OFFSET 0;
如上示例代码,由两个SQL语句加变量@split组成,可以使用@split分割任意多的SQL语句。
SQL案例

使用效果

注意事项
原则上我们需要尽量避免使用SQL编辑框这个选项在有其他方法可以实现我们的需求的时候,在使用时我们需要遵守下面这几点避免出现错误
- SQL语句只能对一张表进行操作
- 在使用了SQL的图例的里面必须选择正确的Datasource和Visualization Type,Datasource对应SQL语句中操作的数据库表,Visualization Type和SQL语句的返回结果相对应。选择了Visualization Type,SQL必须返回相对应的格式,否则必然出现错误。
- 对使用了SQL的图例,TimeRange选项选为 No filter
2.unicode字符集支持
对superset导出excel,csv等文件编码问题进行了优化,使其支持unicode字符集,对含有中文内容的导出文件更加友好。
3.大屏模式
- 在分享链接下打开时,dashboard会进入大屏演示模式,使得浏览演示更加轻松高效。
- 案例,使用superbi制作的大屏

支持的数据库
| 数据库类型 | 驱动安装 | 连接字符串 | | ---------------------- | ------------------------ | ------------------------ | | clickhouse | pip install sqlalchemy-clickhouse | clickhouse://{username}:{password}@{hostname}:{port}/{database} | | Apache Kylin | pip install kylinpy | kylin://{username}:{password}@{hostname}:{port}/{project}?{param1}={value1}&{param2}={value2} | |Apache Hive|pip install pyhive|hive://hive@{hostname}:{port}/{database}| |Apache Impala|pip install impala|impala://{hostname}:{port}/{database}| |Apache Spark SQL|pip install pyhive|hive://hive@{hostname}:{port}/{database}| |MySQL| pip install mysqlclient| mysql://<UserName>:<DBPassword>@<Database Host>/<Database Name>| |PostgreSQL|pip install psycopg2|postgresql:://<UserName>:<DBPassword>@<Database Host>/<Database Name>|
安装&运行
前置依赖
- docker
- docker-compose
安装步骤
git clone https://github.com/CloudmindsRobot/superBI.git
cd superbi
docker-compose up
启动成功后在浏览器中输入地址http://localhost:8088 即可访问
- 用户名: admin
- 密码: admin

