现在市场上开源 BI 产品比较多,各个产品的侧重点不同,有的以报表为主、有的以可视化为主、有的以查询分析为主。这里我们选取了一些主流的开源 BI 产品,从产品功能、可视化能力、数据源支持以及使用文档等方面进行对比,希望对你有帮助。
Superset
由Airbnb贡献的轻量级BI产品,目前在GitHub上有3万多颗星,其受欢迎程度可见一斑。Superset提供了Dashboard和多维分析两大类功能,后者可以将制作的结果发布到Dashboard上也可以单独使用。
数据源方面,Superset支持CSV、MySQL、Oracle、Redshift、Drill、Hive、Impala、Elasticsearch等27种数据源,并深度支持Druid。
Superset语义层建模(被称为Table)时只能基于单表,多表关联要事先逻辑化成视图再使用,这点有点别扭。在Table里要显示地将字段标记成可分组、可过滤,指定聚合方式(计数、求和等),页面在使用时需要选择Group by(并没有叫做维度)、Metrics和Filter进行查询。
Superset可以在多个时间维度上观察,商业分析中的很多问题都是与时间密切相关的。Superset 有 4 种专门针对时间序列的图表,使用这些图表时,你需要指定一个字段为时间维度,之后就可以对时间维度做丰富的操作。
- 从不同时间粒度去查看你关心的指标(小时/日/周/月/季度/年)
- 对时间序列做移动平均,比如看一个指标的 7 日平均线
- 可以对时间序列做偏移,再做对比,比如把本周的销售业绩与上周同期放在一张图表中对比
- 不在图表上显示指标的绝对值,而是显示它随着时间变化的增长速度
Superset还提供了直接使用SQL查询生成图表的方式(SQL Lab)来强化临时分析,方便数据分析师编写SQL查询数据。
Superset的可视化效果非常好,直接支持了几十种图形,从前面的截图中可以看到可视化效果很棒。重要的是,它还提供了图形扩展支持,通过开发插件还可以对接任意可视化库,如ECharts、AntV、HighCharts、VX和D3,这点对用户非常实用。
文档方面,Superset表现比较糟糕,写的过于简单,虽然在安装与快速入门方面提供了很完整的文档,但在具体功能的介绍方面文档严重缺失。就算有些功能有文档,文档的结构也很混乱,所以大部分功能只能自己去尝试。
Superset作为一个完整的BI系统,除了Dashboard和多维分析还包括调度和邮件报表,以及系统管理和权限控制等平台管理功能。综合来看,Superset作为大厂开源的BI产品还是非常值得一用。
Grafana
GitHub 上的星星数比 Superset 还多,之所以把它放在第二个来说是因为它的适用范围跟大多数 BI 产品不太一样,Grafana 主要用于对接时序数据库,分析展示监控数据。目前支持的数据源包括 InfluxDB、Elasticsearch、Graphite、Prometheus 等,同时也支持 MySQL、MSSQL、PG 等关系数据库。
每种数据源的查询语言和功能明显不同,Grafana 可以将来自多个数据源的数据组合到一个仪表板上,但每个面板都要绑定到属于特定组织的特定数据源。
话不多说,上张效果图感受一下可视化效果。
Grafana 为不同数据源提供了不同的编辑器,这样可以方便使用特定数据源的查询语法,很牛叉。有时经常拿 Grafana 跟 Kibana 对比,在数据源种类和查询支持上 Grafana 要丰富得多。
在可视化构建过程中,面板(Panel)是可视化基本模块。每个面板都提供一个查询编辑器(取决于面板中选择的数据源),通过使用查询编辑器,可以提取显示在面板上的完美可视化效果。有各种各样的样式和格式选项,面板可以在仪表板上拖放和重新排列,也可以调整大小。
Dashboard 是 Grafana 可视化最终展现形式,Dashboard(或特定面板)可以通过多种方式轻松共享。可以向登录的 Grafana 的人发送链接。可以使用快照功能将当前查看的所有数据编码为静态和交互式 JSON 文档。这比通过电子邮件发送屏幕截图要好得多。
值得一提的是,Grafana 的文档写的很棒,除了很详细外很多操作步骤都录成 GIF 放到文档中让人一目了然。
在实际业务中,什么情况下选择 Superset,什么情况下选择 Grafana 呢?
时间序列,日志与设备运行数据分析选 Grafana;企业生产经营数据分析则可以选 Superset。
Metabase
Metabase 目前在 GitHub 上受欢迎程度仅次于 Superset,Metabase 也是一个完整的 BI 平台,但在设计理念上与 Superset 大不相同。Metabase 非常注重非技术人员(如产品经理、市场运营人员)在使用这个工具时的体验,让他们能自由地探索数据,回答自己的问题。而在 Superset 里,非技术人员基本上只能看预先建好的 Dashboard,不懂 SQL 或是数据库结构的他们,很难自己去摸索。
Metabase 采用“问问题”的方式实现一步步数据探索,探索的结果可以保存并发布为 Dashboard。对于复杂问题还提供了 Native query 允许用户编写 SQL 或 native query。
数据源方面,Metabase 支持 Redshift、Druid、Google BigQuery、MongoDB、MySQL、PG 等 15 种数据源。
Metabase 社区版的文档写的简单到让你不知所措的地步,表现十分糟糕。好在这个产品使用起来不难(本身定位就是给业务用户使用的)。
Redash
如果说 Superset 和 Metabase 是构建一个 BI 平台,那 Redash 目标就是更纯粹地做好数据查询结果的可视化。Redash 支持很多种数据源,除了最常用的 SQL 数据库,也支持 MongoDB, Elasticsearch, Google Spreadsheet 甚至是一个 JSON 文件。目前 Redash 支持超过 35 种 SQL 和 NoSQL 数据源。
它不需要像 Superset 那样在创建图表前先定义表和指标,而是可以非常直观地将一个 SQL 查询的结果可视化,这使得它上手很简易。或者说 Redash 仅仅实现了 Superset 中 SQL Lab 的功能,但却把这个功能做到了极致。
Redash 有两个非常实用的功能,Query Snippet 与 Query Parameters。
Query Snippet 很好地解决了查询片段的复用问题。做数据报表时经常要用到十分复杂的 SQL 语句,这些语句中肯定有一些片段是可以在多个查询中复用的。在 Redash 中我们可以将这些片段定义成 Snippet,之后方便地复用。
Query Parameters 可以为查询添加可定制参数,让这个图表变得更灵活。比如一个移动应用的日活指标,我可能有时要按 iOS/Android 切分,有时要按地域切分,或是按新老用户切分。在 Superset 的 Dashboard 上要做三个表图。Redash 里我可以把查询的 groupby 做为一个参数,这样就可以在一张图上搞定。用的时候,运营人员可以在图表上方的一个下拉框里选择切分的方式,非常直观好用。
Redash 的 Dashboard 可以通过命名来进行分组,Dashboard 的名字可以有一个前缀并以冒号结尾,前缀相同的 Dashboard 就会自动被分为一组。例如“ Growth: Daily ”,“ Growth: Weekly ”这两个 Dashboard 都会被分到“ Growth ”组下。
Redash 在文档方面做得很好,除了快速入门教程以外,每一个功能模块都有文档且条理清晰。
当然 Redash 也有自己的不足之处,它的可视化种类比 Superset 逊色不少(不过其实也够用了)。另外,由于它只是纯粹地把数据查询结果可视化,所以也没有 Superset 里那些对时间维度上的聚合与对比的操作。
CBoard
国内由楚果主导的开源 BI 产品,分社区版和商业版。CBoard 提供了一个 BI 系统,包括 Dashboard、多维分析、任务调度等方面。
数据源方面支持 JDBC 数据源、ElasticSearch、文本文件(文本需要存放于 CBoard 应用服务器上面,读取本地文件)、Saiku2.x 等。
图形方面直接使用了 ECharts,多维分析和 Dashboard 功能中规中矩,可以满足大部分 BI 需求。
文档方面由于是国内开源的产品,中文文档对国内用户友好,但文档质量一般在使用过程中还需要不断摸索。
值得注意的是,CBoard 社区版和商业版功能差异较大,社区版有很多功能都不支持,使用前要认真评估。
BIRT
与前面提到的几个 BI 产品注重数据探索和可视化不同,BIRT 主要用于报表的开发与呈现,在可视化效果方面表现并不出彩,也不包含多维分析。
BIRT 是一个 Eclipse-based 开放源代码报表工具。BIRT 主要由两部分组成,一个是基于 Eclipse 的报表设计器和一个可以加到你应用服务的运行期组件。
BIRT 报表引擎以 JAR 文件方式打包,可以方便的添加到 J2EE 应用中。采用 Taglib 方式很容易在 JSP 页面上集成报表。
BIRT 的文档写的很差,可能跟产品诞生年代久远有关,目前社区也不太活跃,好在网上还可以查到很多资料。
如果你的需求是开发常规报表,那么 BIRT 绝对是一款可以尝试的工具。与 BIRT 类似的还有一款 JasperReports 工具,功能方面大同小异。
润乾报表
润乾报表是国内为数不多开源 BI 产品,虽然产品名称以报表命名,但实际已包含所有 BI 功能。从功能上来看,润乾报表可以约等于 Superset+BIRT,也就是提供了多维分析、Dashboard 和报表以及平台管理功能。
数据源方面,润乾报表除支持 MySQL、Oracle 等传统 RDBMS 外,还支持 MongoDB、Elasticsearch、Redis、Spark 以及 HDFS 等数据源。同时还可以直接使用 Excel、CSV、JSON 进行报表开发和数据分析。
在可视化方面,润乾报表表现并不十分显著,产品内置的 30 多种图形中规中矩。如果想使用效果更好的可视化图库可以通过润乾报表提供的第三方图形接口实现,引入图库文件后修改 JS 用于接收数据集数据即可完成。这跟 Superset 等扩展可视化图库的方式不太一样,没有繁琐的插件开发过程,简单方便。
润乾报表提供的多维分析功能与 Superset 类似,通过在页面上拖拽维度和指标进行数据查询,同时可以进行切片和旋转等操作。润乾报表允许用户直接基于文件分析,也可以编写 SQL 进行数据查询生成图表,同时为了保证性能还可以使用自有的私有存储格式。
在语义层建模中,润乾报表支持多表关联(JOIN)。特别地,在润乾报表中需要将维度显示制定成一个表,如果没有对应的表则需要建立虚拟表,这样做的好处是前端查询分析界面可以很方便地实现多表实时关联查询,而不必每次都必须基于一个(物理或逻辑)宽表。
可以通过多维分析拖拽图表来组织 Dashboard,根据指定(或自定义)布局生成,同时可以使用全局参数进行数据过滤分析。
润乾报表的另外一个优势是复杂报表的处理能力。
我们知道,国内的报表具备很强的本土特征,润乾报表最初是为实现复杂报表而设计的报表工具,是目前主流产品(含商业)中做的最早也是实现得最好的一个。
在这方面,无论使用上面提到的任意一款工具都无法很好满足。
润乾报表的定位跟 Redash 很像,都希望提供便捷的方式让用户迅速得到分析结果。同时也提供了一个轻量级的管理平台(报表中心)包括资源管理、权限控制以及邮件订阅等功能。
润乾报表提供了 BI 平台的同时也支持按模块集成,可以将产品中各个模块根据需要单独集成到已有的项目中,这对已有平台系统的用户非常方便。
需要注意的是,润乾报表并非所有功能都开源,目前开源的部分包括:多维分析前端界面、报表中心和 Dashboard。如果需要使用基础报表、多维分析服务器等部分则需要付费,不过价格并不高。
总结
最后做一下总结,拉个表格方便对比。
产品 指标 | 定位 | 数据源支持程度 | 可视化能力 | 文档质量 | 社区活跃度 | 什么场景下选择该产品 |
Superset | BI 平台 | 丰富 | 很好 | 差 | 强 | 注重可视化效果 |
Grafana | BI 平台 | 一般 | 好 | 高 | 强 | 监控与日志分析 |
Metabase | BI 平台 | 一般 | 好 | 很差 | 强 | 业务人员探索数据 |
Redash | BI 平台 | 丰富 | 好 | 高 | 强 | 快速数据查询与可视化 |
BIRT | 报表工具 | 差 | 一般 | 很差 | 弱 | 简单报表需求 |
CBoard | BI 平台 | 一般 | 好 | 一般 | 一般 | 常规 BI 需求 |
润乾报表 | BI 平台 / 可集成组件 | 丰富 | 好 | 高 | 强 | 复杂报表 / 快速数据查询分析 |
国内 BI 项目以企业级应用解决方案为主,其需求重点落在多维分析式的自助报表、Dashboard 以及一些相关平台管理功能,对于多步骤探索式分析需求相对较少(这部分功能一般由桌面 BI 解决)。从这个角度上看,作为国内产品的润乾报表,对这些需求的适应性要更好,除了具备常规 BI 该有功能外,还可以处理本土的复杂报表,在选择开源 BI 的时候不妨一试。