一、业务背景与需求梳理
年初盘年度计划的时候计划今年要上BI的,但疫情的原因一拖再拖,也正好在那时候需求爆发,各种业务各种问题各种数据各种分析,意识到不上不行了,负荷扛不住啊,于是就开始立项,进行BI选型调研。
在年初的年度计划中,计划在今年使用BI,但疫情原因一再推迟。当时,需求爆发,各种业务问题,各种数据和各种分析。意识到工作已经超量低效了,不得不用这个了,因此开始了计划推行并进行了对BI选型调研。
这里把自己的BI选型调研经验笔记整理并分享出来,这只代表我个人的想法。
公司目前的数据需求主要分为两类:
临时需求:业务临时起意想要看看这波活动的效果,(数据指标的定义可能随时更改和添加)
固化需求:每周每月查看数据,(数据的定义非常明确)。
对于这两种类型的需求,我们当前的解决方案是:
对于临时需求:写HQL到Hive进行检查,然后将结果转为excel发送给需求方。
对于固化需求:编写脚本,结合Hive显示结果,将结果写入相应的DB库,然后通过第三方开源BI工具进行汇总和展示。
这样做简单明了,但也有突出的问题:
开发成本太高:每个需求,无论是临时的还是长期的,都需要定制开发,在这种情况下,我们的人力深受其累。
使用不便捷:报表只能展示,不能分析。如果想进行分析,需要将数据复制到excel中,并使用excel进行处理和分析,但我们的数据用户不一定会这个。
资源浪费:在许多情况下,对不同人员编制的报告进行多次重复计算。
体验吐槽:hue查询速度很慢,select from简单查询,等待一分钟以上(底层引擎tez太慢!!!)
在这种情况下,我们将构建选型一个多维分析平台,以便业务方能够自己取数,最好不要使用SQL,因为我们的大多数业务方都不懂SQL(虽然我们已经进行了SQL培训,但仍然有一定的门槛)。所以该平台至少满足以下要求:
SQL查询的速度更快(现在hue太慢,简单查询需要2分钟以上),所以底层应该支持大数据OLAP引擎
更傻瓜的自助分析模型,最好是拖拉拽,因为很多分析师不会SQL
可视化中有最基本的图表类型,包括表格,地图和时间趋势
最好不要开源,开发和运维都是填不完的大坑,可以接受经济高效的商业产品(能申请BI选型的预算),数据应该部署在自己服务器上
报表/看板筛选功能支持时间段筛选,最好是联动筛选;
权限满足最小阈值(可以控制表的修改和删除),可以控制数据的粒度(很多业务部分查看数据)
为了寻找满足以上要求的产品,我们进行了BI选型调研。
二、产品试用分析分析
根据大家的讨论和理解,以及几个业内同行推荐的BI工具,经过一轮筛选,选择以下产品作为重点调研对象:Superset、Metabase、FineBI。
1、Superset (开源,gihub star 25,163)
官方宣传特色:
用于探索和可视化数据集以及创建交互式仪表板的直观界面
各种漂亮的可视化展示的数据
简单,无需代码即可对数据进行深入分析
有高级SQL编辑器/ IDE,提供丰富的元数据浏览器
轻量级语义层,允许通过定义维度和指标来控制数据源向用户公开的方式
上手即用,支持大多数SQL的数据库
具有可配置性缓存的快速加载仪表板
目前来说,个人体验下来,感觉有这些:
安装教程很繁琐,和装MySQL一样麻烦
仅支持单表获取,不支持表连接,计算速度取决于数据库的速度
有许多可视化选项,并且有多套基于经纬度的地理位置可视化方案
权限控制很细,下至每个功能键
遗憾的是,最大的问题是业务分析师的用户体验不是很好,可视化流程是为不同图形方案设置相应的参数,权限控制复杂。
各方面的具体情况如下:
1)数据源与数据管理
支持多种数据库:Athena、Redshift、Drill、Druid、Hive、Impala、Kylin、Spark SQL、BigQuery、Pinot、ClickHouse、Google Sheets、Greenplum、IBM Db2、MySQL、Oracle、PostgreSQL、Presto、Snowflake、SQLite、SQL Server、Teradata、Vertica、支持上传本地CSV文件
对于数据表模型的管理,可以设置字段类型、维度/是否过滤/是否制作时间列、二次处理字段、统计指标
图表可用的数据表必须从数据库中逐个添加(可以在SQL工具箱中看到它们),这不是很方便
深度支持durid
2)chart单图&dashboard看板
单图制作流程:选择数据源(表或视图)->选择图表类型->设置图表参数(指标/维度/过滤条件)。只能从数据表列表页选择数据源。进入分析页面后,数据源不能更改;在不同图表类型之间切换时,需要根据不同的图表重新填写参数,不方便自助分析;
支持多种可视化图形种类和48种可视化方案;
看板的过滤功能非常弱,连最基本的日期过滤组件没有,通过单图中的过滤器组件实现,只能针对单个数据表做出过滤组件,然后应用到看板上,此功能也很不方便。看板的过滤功能非常弱,甚至没有最基本的日期过滤组件,只能通过单图中的过滤器组件来替代,只能通过针对单个数据表制作过滤组件应用到看板上,极不方便;
支持简单的图表钻取探索功能(直接进入单图),不支持图表的联动;
数据格式(如3721,显示0.4k)方案多样化;
看板不能直接复制粘贴,只能通过重新编辑选择单图来复制粘贴看板;
看板支持自动刷新,最少10秒刷新;
支持分享:包括公开链接,网页嵌入,底层参数调整免密;
应用于chart的sql视图必须是select from的形式,否则会查询错误(不能用with as)
报表数据不支持邮件发送
不支持对图表/看板的分组
不支持图表的下钻,多图联动
不支持直接对日期范围做筛选
透视表不能按行/列做百分比汇总;
Druid引擎的计算结果,不能在superset里面生成新的指标
3)SQL查询
支持关联填补字段/表信息
支持跨库关联查询
一个多选项卡环境,一次处理多个查询
查询结果可视化,保存视图跳转到chart页面;且需要对该视图做赋权(过程过于繁琐)
可搜索查询历史记录;
支持使用Jinja模板语言模板化,允许在SQL代码中使用宏
4)权限管理
通过设置角色权限,用户指定角色来控制权限
权限控制的粒度精细,支持功能型的权限控制(表的修改可细分到删除和添加),支持菜单,数据源,数据表,字段,图表,看板的权限控制
配置权限繁琐
不支持数据行级控制
5) 二次开发
技术架构:Python+Flask+Recat+Redux+SQLAlchemy
原属Airbnb的开源项目,维护更新,bug修复和二次开发有大公司保障
支持restful API
2、Metabase (开源,gihub star 15,670)
官方宣传特色
5分钟设置仪表板
使用者无需学习SQL
丰富美观的仪表板,支持自动刷新和全屏
适合分析师和数据专业人员的SQL模式
定向邮件发送数据
对于这个,体验感受如下:
交互体验对业务人员非常友好。通过看板和单图的全局搜索功能,营造”ask a question“的智能场景,即通过搜索框咨询答案,整个产品的界面非常简洁清晰。
制作单图时非常简单,以数据为中心选择不同的图形(非可选图形自动显灰)。可以做到单图分析半分钟完成。
然而,最大的缺点是权限管理太弱。只有可修改/可见的粗粒度控制,对于是否可以删除表没有单独的控制。
各方面的具体情况如下:
1)数据源与数据管理
支持的数据库相对较弱:Postgres、MySQL、SQL Server、Redshift、SQLite、Google BigQuery、H2、Oracle、Vertica、Snowflake、MongoDB、Druid、Presto、SparkSQL
(特别需要注意的是:其中Druid的版本为2.0版本,不支持sql查询,效果大打折扣;另外也不支持Hive,Kylin)
统一的数据模型管理入口,添加数据表/视图后,设置维度/度量字段(这部分很细节,大大扩展了设定的类型)
提供定时任务,数据库同步(以时为单位)
自助的表字段信息透视功能,智能化探索,自动显示看板,自动关联数据分布(特别有用)
2)chart单图&dashboard看板
单图制作流程简单:选择数据源->选择过滤条件->选择分析指标->选择分组维度->选择可视化类型
支持的可视化图形种类单一,14种可视化方案(包含漏斗、带变化的数字、地图)仅能满足基本需求,
可以对图表进行细节控制,比如表单根据条件控制行颜色,调整字段位置,显示迷你颜色栏,设置前后缀
支持基本过滤条件,包括日期段(筛选器的字段与单图中字段之间的关联)
提供简单的图表钻取功能,但不支持图表的联动
现有看板一键复制
自动刷新数据,最小粒度1分钟
支持分享:公开链接,公开嵌入(博客网页),嵌入应用
使用Pulses发送数据给Slack(一个国外的聊天工具)或发送电子邮件
3)SQL查询
支持关联填补字段/表信息
sql查询结果直接转换为图形展示方案
不支持跨库关联查询
原生查询中的变量允许使用筛选组件或URL参数来动态替换查询值
SELECT count(*)
FROM products
WHERE 1=1
[[AND id = {{id}}]]
[[AND category = {{category}}]]
4)权限管理
设置角色权限,用户指定角色,控制角色权限
权限设置粗糙,仅设置可访问权限(可直接删除可访问的数据)
权限设置对象不深:权限控制范围只有数据源,数据表,图表,分析项目集合,不涉及数据行级
字段级的字段控制可设置不可见(敏感字段),但不能角色权限管理区别
5)二次开发
技术架构:Clojure+Recat+Redux
提供了完整的API文档,可凭借丰富的API与文档完成多种二次开发
3、FineBI(商业)
官方的宣传特色:
零代码5分钟完成数据分析,点击拖拽完成分析,半个小时内完成数据报表
满足各种分析需求,数据处理,探索式OLAP分析,自助式数据分析
首要是自助数据集功能,普通业务人员可以对数据进行筛选、切割、排序、汇总等,自助灵活实现所需数据结果
一键式数据共享和管控,精致的数据权限管控,数据和报表实现全公司实时共享更新
支持大量数据分析,采用先进的列式存储,高效计算能力和强大的数据压缩能力,支持前端快速数据分析
总的来说,亲身体验感受如下:
新手使用需要适应流程,配置数据,处理自助数据集,制作可视化仪表板和图表,有点记不住
可视化流程简单,交互类似Tableau,拖拽数据字段到维度框,立即呈现可视化,然后基于可视化组件构建仪表板
联动钻取功能大,智能化,可自动关联到共性字段
数据处理功能强大,自助数据集具有多种数据处理功能,包括分组汇总、修改数据字段、合并表等
最大的亮点是权限控制细致实用,可以细分到原始数据源、已处理数据集、仪表板,可以管理不同角色用户,包括职位、部门等,有对管理员和用户的权限管控,类似OA,是这几个产品里最突出的
各方面的具体情况如下:
1)数据源与数据管理
支持的数据库多样化
业务包功能能够分类不同数据源,比如按部门或者按业务需求
可对数据表进行可视化管理、数据预览、血缘分析、关联视图等
2)chart单图&dashboard看板
可视化流程:连接数据源(导入数据库或excel)——自助数据集处理数据——依据数据制作图表组件——制作可视化仪表板。
可视化图表多样,有50多种基本图表,然后加上图表间的重叠使用样式设置能达到100多种;
有分组、交叉、明细等表格类型,不支持复杂的表格,复杂表格可以用报表软件finereport
仪表板有时间、文本、数值、查询等过滤组件,过滤功能有自定义条件过滤;
可钻取、联动、跳转数据,实现仪表板内互动,以及仪表板之间互动,支持图表的联动;
可以反复使用组件、看板,直接复制即可
有丰富的函数功能,在可视化中对数据进行二次的过滤、汇总、排序、以及自定义公式计算
仪表板定时刷新,可定时自动刷新单个仪表板、多个仪表板板和单个组件,但需要JS写定时刷新频率
支持仪表板公开链接,决策系统,网页嵌入等共享方式
仪表板直接共享、创建公共链接、悬挂仪表板。
3)SQL查询
JDBC直连数据库
支持跨库关联查询
支持SQL数据集,允许SQL取数
支持可视化数据预览,在添加更新数据表后,业务包编辑界面会有数据预览区域,可以查看编辑成功的表数据。
可视化关联表和血缘分析
BI工程提供实时数据和抽取数据两种计算模式
4)权限管理
可通过角色设置权限,权限受体包括部门、角色、职务和用户
权限可设置人员管理、目录权限、管理系统、数据连接、数据权限(数据表)、分享权限、定时调度管理权限等,权限设置粒度多
权限设置对象深,可细致到组件乃至数据行级
5) 二次开发
纯java开发,可以零代码操作
支持一定的二次开发,有API文档
总结
最后,从综合选型来看,BI选择选项还是要在Metabase和FineBI两者之中。前者是开源的,后者是商业的。开源有它的缺点:权限功能太弱,没有平台运维功能,界英文界面。我们的部门可以专业性开发,但是,考虑到我们可能会向整个公司推广BI,选型需要工具容易为面向方上手,产品稳定性需要技术和服务的保证。所以我们需要购买成熟的平台,因此后者在可接受的预算范围内,功能契合度高达90%。具体性能仍需实践考验。价格大约在二十万到几十万之间。还要看并发性和服务项。
数据分析 BI
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/173621.html