superbi 是达闼科技以开源项目superset为基础开发的企业级快速BI应用。 可扩展的框架设计,支持多种DBMS数据源,让数据BI更加简单。 superbi提供直观的UI,拖拽式的编辑体验,配置式的图例创建,轻松创建数据可视化dashboard的能力。
- 提供丰富的可视化图例,包含基本的折线图,饼图,GL可视化图例等近60种图例
- 简单易用,无需代码,配置式创建的图例,拖拽编辑体验的dashboard。
- 先进的SQL在线编辑器,IDE式的体验,让你可以方便快捷的浏览元数据。
- 集成企业级的用户权限管理,并可以与其他身份验证系统集成(OpenID, LDAP, OAuth, REMOTE_USER)
- 自定义SQL扩展,提供对复杂情况的数据可视化能力。
- 集成echarts,3d word cloud,更加高度可配置的图表UI效果展示
- 对使用了多条SQL的图列,返回结果需要自行处理
在原始superset中,可以通过选择各种条件控制数据的返回,如果有稍微复杂的应用场景则不能实现,比如对一张表自联返回想要的结果。正是有这样的需求,我们在每一个图例编辑界面加入了一个SQL编辑框,可以在 编辑框中编辑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中选择的过滤条件
当我们在一个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
在某些图列中,一个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的图例的里面必须选择正确的Datasource和Visualization Type,Datasource对应SQL语句中操作的数据库表,Visualization Type和SQL语句的返回结果相对应。选择了Visualization Type,SQL必须返回相对应的格式,否则必然出现错误。
- 对使用了SQL的图例,TimeRange选项选为 No filter
对superset导出excel,csv等文件编码问题进行了优化,使其支持unicode字符集,对含有中文内容的导出文件更加友好。
数据库类型 | 驱动安装 | 连接字符串 |
---|---|---|
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