前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据可视化的开源方案: Superset vs Redash vs Metabase (一)

数据可视化的开源方案: Superset vs Redash vs Metabase (一)

作者头像
流川疯
发布2019-06-15 19:10:06
2.5K0
发布2019-06-15 19:10:06
举报

叶剑烨 叶剑烨的个人注释 2018-01-17

人是视觉动物,要用数据把一个故事讲活,图表是必不可少的。如果你经常看到做数据分析同事,在SQL客户端里执行完查询,把结果复制/粘贴到 Excel 里再做成图表,那说明你的公司缺少一个可靠的数据可视化平台。数据可视化是 Business Intelligence(BI)中的核心功能,有许多成熟的商用解决方案,如老牌的 Tableau,Qilk,新生代的 Looker,国内的 FineBI 等等。不过对于许多小公司来说,这些服务的 License 费用是一笔不小的开销,且有一种“杀鸡用牛刀”的感觉。

那在开源软件如此发达的今天,在数据可视化方面,有什么靠谱的方案可以选择呢?今天给大家介绍三个比较知名的项目,分别是 Superset, Redash 和 Metabase。前两个我都在产生环境中实际使用过,在本文中会重点介绍。Metabase 我只是试玩了一下,但我觉得这是一个非常有想法的项目,所以也会和大家聊聊我对它的看法。

选择一个称手的工具,功能上能满足我的需求肯定是首要的。就先从功能需求讲起,我们的数据仓库用的是 Amazon Redshift(如果你没听过 Redshift,就把它看作是为大数据优化过的 PostgreSQL),所以大部分的实际用例都是要将一个 SQL 查询的结果可视化。我们所需的图表类型也就是常用的那几种,包括折线图,柱形图,饼图等。有了图表之后,接下去就是把相关的图表排版,生成报表页面(Dashboard)。

从数据安全性角度,我不希望每个员工都能自由访问所有的 Dashboard,所以每个 Dashboard 需要设置不同的访问级别。另外,我会看重它是否有 REST API,能否通过 API 来创建与管理报表,这部分我们放在以后的文章中再讲。

除了满足功能性需求,易用性与文档在评判一个工具时也是非常重要的。谁不想要一个简单好用,文档清晰的产品呢?

下面我们就从功能性、易用性与文档等方面,来看看这三个开源项目的实际表现吧

Superset

640?wx_fmt=gif
640?wx_fmt=gif

Superset 最初是由 Airbnb 的数据团队开源的,目前已进入 Apache Incubator,算是明星级的开源项目。老实讲,我也是被 Airbnb 与 Apache 两块金字招牌吸引才入了坑。目前公司绝大部分报表都在 Superset 上,大大小小有 50 个 Dashboard,包含了近 900 个图表。在使用 Superset 之前我们用的是 Looker(很不错的商用 BI 工具,可惜太贵),一年半前把 Looker 上所有的 Dashboard 迁移到 Superset 上,整个过程也很顺利。用了一年多,虽然在不少小地方有些不满意,但总体来说 Superset 很好地满足了公司现阶段在数据可视化与业务报表方面的需求。

当你把一个数据库连接到 Superset 上以后,你需要定义要用到的每一张表。Superset 里表的定义除了字段,还需要定义指标(Metric)。指标是对字段的某种统计结果,比如字段上值的求和、平均值、最大值、最小值等。是不是有点糊涂了?但请回想一下,BI 工具通常是用来做商业分析的。假想一个电商数据库,虽然在数据表我们存储每笔订单的交易额,但在商业分析时我们不关心单笔交易,我们关心的可能是一个时间段内的总交额,或是平均交易额。当你画月报表时,你不会把每笔交易画在图上,而是把每天的总交易额用一个柱形在图上表示。这就是为什么 Superset 要引入“指标”这个概念。

对于数据分析人员来说,由于在 Superset 上他们不是直接写 SQL,而是通过选择指标(Metric), 分组条件(Group)和过滤条件(Filter)来画图表,所以在构建复杂查询时可能会有些不适应。另一个难题是 Superset 里的表不支持 join,如果一个图表里的数据要从多个数据表里取,那只能通过建视图来实现。Superset 在 0.11 版本之后加入 SQL Lab 功能,支持从 SQL 查询结果直接生成图表。可惜,由于这个功能与 Superset 的核心设计格格不入,所以实现得比较粗糙,没什么实用价值。

客观地讲,Superset 里引入自己的表与指标的概念,在逻辑上是合理的,在统一各种异型的数据源时也是必要的。但实际操作中仍会让人觉得有些麻烦,不够直接了当。

Superset 在可视化方面做得很出色,不但是开源领域中的佼佼者,也把很多商用 BI 工具甩在身后。在 0.20 版本中支持的图表类型已经达到了 36 种,而且在选择图表类型时,你可以看到每一种图表的缩略图,下面这张截图大家可以感受一下

640?wx_fmt=png
640?wx_fmt=png

Superset 的另一个亮点是可以在多个时间维度上观察,因为商业分析中的很多问题都是与时间密切相关的。Superset 有 4 种专门针对时间序列的图表,使用这些图表时,你需要指定一个字段为时间维度,之后就可以对时间维度做丰富的操作

  • 从不同时间粒度去查看你关心的指标(小时/日/周/月/季度/年)
  • 对时间序列做 rolling average,比如看一个指标的 7 日平均线
  • 可以对时间序列做偏移,再做对比,比如把本周的销售业绩与上周同期放在一张图表中对比
  • 不在图表上显示指标的绝对值,而是显示它随着时间变化的增长速度

以上这些都是在数据分析中非常实用的功能。

说完优点,再说说 Superset 的槽点,最大的槽点是当图表与报表多了以后,管理不方便。这个问题其实很好解决,只要在图表和报表管理时,加上分组或是文件夹的概念就可以了,但至今未见类似的功能。现在公司 900 多个图表都在一个大列表下,虽然 Superset 支持搜索,过滤或是收藏,但查找起来还是太麻烦。

Superset 的文档也比较糟糕,虽然在安装与快速入门方面提供了很完整的文档,但在具体功能的介绍方面文档严重缺失。就算有些功能有文档,文档的结构也很混乱,所以大部分功能只能自己去尝试,好在这个工具本身并不难用,自己去摸索各个功能也不太困难。

Redash

640?wx_fmt=gif
640?wx_fmt=gif

如果说 Superset 是构建一个 BI 平台,那 Redash 目标就是更纯粹地做好数据查询结果的可视化。Redash 支持很多种数据源,除了最常用的 SQL 数据库,也支持 MongoDB, Elasticsearch, Google Spreadsheet 甚至是一个 JSON 文件。

它不需要像 Superset 那样在创建图表前先定义表和指标,而是可以非常直观地将一个 SQL 查询的结果可视化,这使得它上手很简易。或者说 Redash 仅仅实现了 Superset 中 SQL Lab 的功能,但却把这个功能做到了极致。

Redash 有两个非常实用的功能,Query Snippet 与 Query Parameters。

Query Snippet 很好地解决了查询片段的复用问题。做数据报表时经常要用到十分复杂的 SQL 语句,这些语句中肯定有一些片段是可以在多个查询中复用的。在 Redash 中我们可以将这些片段定义成 Snippet,之后方便地复用。

Query Parameters 可以为查询添加可定制参数,让这个图表变得更灵活。比如一个移动应用的日活指标,我可能有时要按 iOS/Android 切分,有时要按地域切分,或是按新老用户切分。在 Superset 的 Dashboard 上我要做三个表图。Redash 里我可以把查询的 groupby 做为一个参数,这样就可以在一张图上搞定。用的时候,运营人员可以在图表上方的一个下拉框里选择切分的方式,非常直观好用。如下图所示

640?wx_fmt=gif
640?wx_fmt=gif

Redash 的 Dashboard 可以通过命名来进行分组,Dashboard 的名字可以有一个前缀并以冒号结尾,前缀相同的 Dashboard 就会自动被分为一组。例如“ Growth: Daily ”,“ Growth: Weekly ”这两个 Dashboard 都会被分到“ Growth ”组下。

相比 Superset,Redash 在文档方面做得更好,除了快速入门教程以外,每一个功能模块都有文档且条理清晰。

当然 Redash 也有自己的不足之处,它的可视化种类比 Superset 逊色不少(不过其实也够用了)。另外,由于它只是纯粹地把数据查询结果可视化,所以也没有 Superset 里那些对时间维度上的聚合与对比的操作。

Metabase

640?wx_fmt=gif
640?wx_fmt=gif

由于我并没有在生产环境下使用过 Metabase,只在自己本本上试用过这个工具。所以我只能说一下对它的第一印象。

刚开始用的就觉得这个工具的界面好漂亮,明显是经过 UI 设计师仔细调校过的。相对的,Superset 与 Redash 一看就是程序员充当设计师的产物。

用了一会儿之后,我觉得 Metabase 与 Superset 虽然都想要打造一个完整的BI平台,但在理念上是不同的。Metabase 非常注重非技术人员(如产品经理、市场运营人员)在使用这个工具时的体验,让他们能自由地探索数据,回答自己的问题。而在 Superset 或是 Redash 里,非技术人员基本上只能看预先建好的 Dashboard,不懂 SQL 或是数据库结构的他们,很难自己去摸索。我非常喜欢 Metabase 的理念,它更接近一款成熟的商业化产品。当然要把这个理念变为现实是很有挑战的,目前我不知道在面临复杂的真实业务环境中,Metabase 是否有想像中那样美好。

另外值得一提的是,Metabase 的文档也是三个项目中写得最好最完整的,内容非常丰富。

将来若是有机会,我很愿意更深入地去体验这个产品。

小结

本文简单地介绍了三个开源的数据可视化工具 Superset, Redash 和 Metabase,三者各有所长,我觉得并不存在绝对的最强者。对于刚刚开始搭建 BI 平台的公司,我相信它们都可以满足大部分报表与业务分析的需求。

虽然 Superset 是我们公司现在主要使用的可视化工具,但我问过自己“如果现在让我重新选择,我会使用哪个开源项目?”我的答案是 Redash,原因主要不是功能层面,而是技术层面。这里正好可以引出我们下篇要聊的内容,从技术框架与源代码层面来比较一下这三个项目,以及我选择开源项目的一些通用原则,敬请期待!

阅读原文

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年02月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Superset
  • Redash
  • Metabase
  • 小结
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档