开源 BI,我最终选择了 Metabase

15,784 阅读5分钟

啥是 BI?

我们都知道 BI 的意思是商业智能(Business Intelligence),但商业智能是一个笼统的概念。何谓智能?如何智能?

其实 BI 既不是某种特定技术,也不是可视化报表平台,而是对于一种通用商业需求的解决方案,即:用一系列技术手段对数据加工和分析,转化为知识进而支持商业决策

既然是解决方案,BI 需涵盖大量工具和能力:数据源连接、数据准备、数据可视化、数据报表、数据输出等。对这些工具和能力的支持也是评价一个 BI 平台的最基础的维度。

我们公司/团队需要 BI 吗?

需要。

有哪些选择?

如今 BI 类平台众多,常见的商业平台有:Microsoft Power BI、Tableau 等,国内有 阿里云 Quick BI、FineBI 等。下图为《2020 年 Gartner 分析和商业智能平台魔力象限》可以一窥各个平台的实力。个人没有体验过,便不做评论。

迫于众所周知的原因我更关注开源的解决方案,开源 BI 也有一些不错的选择,我在去年的一篇文章 数据可视化分析平台开源方案集锦 有所罗列,包括 Superset、Hue、Redash、Metabase 等。

选择的依据

查询 => 图表 => 仪表板,是目前最为常见、最为基础的交互流程。基于此向外延伸的众多特性才是不同平台的不同之处。我们更为在意的特性:

  • 要支持常见的数据源类型,MySQl、Presto DB 是必选项
  • 支持业务自助分析和数据准备、拖拉拽的交互式探索
  • 要支持 SQL 模式,用于复杂场景
  • 可视化图表类型足够丰富
  • 可内嵌、可推送、可分享的对外输出能力
  • 完善的用户和权限系统
  • 可二次开发、可私有编译部署,也就是要开源,以便扩充更多数据源驱动、图表类型、输出方式等
  • 报表要美观
  • 免费

拎出来比试比试

因子MetabaseRedashSupersetHue
数据源⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐⭐️⭐️⭐️
自助分析⭐️⭐️⭐️⭐️⭐️ ️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️
SQL支持⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️
分享⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐
美观⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️
开发语言和框架Clojure + ReactPython+Angular+ReactPython+React+jQueryPython+jQuery

(以上个别指标偏主观,仅供参考)

Metabase 哪里好

经过对比与体验,Metabase 最为符合我们的需求。

Metabase
The simplest, fastest way to get business intelligence and analytics to everyone in your company 😋

官方介绍:用最简单、快速的方式让你们公司的每一位拥有商业智能与分析。

特性总结:

  1. 支持的数据源:Postgres、MySQL、Druid、SQL Server、Redshift、MongoDB、Google BigQuery、SQLite、H2、Oracle、Vertica、Presto、Snowflake、SparkSQL。
  2. 数据准备方式:支持 SQL 查询、简单查询和自定义查询。
  3. 支持的图表类型:曲线、柱状、条形、饼图、面积图、组合图、地图、漏斗、散点、仪表盘等
  4. 邮件报警:可以使用已有查询配置数据阈值报警,发送邮件。
  5. 仪表板功能:支持参数传递、一键全屏、公开分享、iframe 嵌入、定时刷新
  6. 用户集成:LDAP、OAuth2(需做一点开发)
  7. 权限:支持按数据源或者报表文件夹分配权限给用户组。

Surprise:

  • 元数据自动维护同步,对数据的浏览和透视非常方便
  • 支持模型配置,用于问问题的时候直接选择配置好的指标和条件
  • 支持参数传递,查询和仪表板均可注入参数作为报表筛选项
  • 支持自定义地图,中国地图省份地图这些地图可视化都不在话下了
  • 支持查询嵌套查询、也就是说查询可以复用了
  • 支持代码块复用
  • 仪表板支持 Markdown 组件,仪表板可以嵌入自定义的文本、链接、图片啦。
  • 全局检索,支持全局检索报表数据仪表板等。
  • 仪表板支持暗色模式,仪表板全屏以后开启暗色模式放在监控大屏上,是你喜欢的调调

虽然有这么优点,开发语言有点与众不同了。

Clojure 吓了你一跳

对比这些开源平台前端开发语言,React 在国外果然最受欢迎,很多系统要么使用 React 开发,要么正在使用 React 重构。由于是数据类应用,服务端语言使用 Python 较多,这在预期之内。然而 Metabase 使用的是 Clojure —— 一种 Lisp 方言,这有点高级了。

作为前端开发,我不懂 JVM 也不懂 Lisp,而我被安利过 ClojureScript!仿佛有点兴趣了。

Clojure(/ˈkloʊʒər/)是 Lisp 编程语言在 Java 平台上的现代、动态及函数式方言。

划重点了,Clojure 是运行在 JVM 的语言,它可以随意调用 Java 生态的类库!而且可以打成 jar 包,像 Java 程序一样部署。

另外它是动态类型的、函数式的、拥有不可变的数据结构,这三个特性加持难怪 ClojureScript + React 栈会得到很多前端大佬的推崇。

什么?学不动了?不,你学得动,而且很可能因此打开你新世界的大门。

总结

开源 BI,我最终选择了 Metabase,如果你也有开源 BI 需求,以上浅薄见解希望对你有所帮助。如果有什么问题欢迎留言交流。

最后附上 Metabase 之禅,个人认为这也是作为开发者应当追求的准则,共勉之

尽可能地为用户传递价值
结构化事物并以此自动为用户推断事物
系统本该知道的东西,就不要去问用户
让用户简单方便地做正确的事
不要把用户留在诱杀陷阱里
付出额外的努力,使用户体验愉快