龙空技术网

阿里创业员工分享公司的BI选型之路!自研、开源的坑都踩过

IT技术管理那些事儿 3132

前言:

当前看官们对“javaoracle报表开发”大体比较关怀,你们都需要了解一些“javaoracle报表开发”的相关文章。那么小编也在网摘上搜集了一些有关“javaoracle报表开发””的相关文章,希望咱们能喜欢,看官们快快来了解一下吧!

一、业务背景与需求梳理

年初盘年度计划的时候计划今年要上BI的,但疫情的原因一拖再拖,也正好在那时候需求爆发,各种业务各种问题各种数据各种分析,意识到不上不行了,负荷扛不住啊,于是就开始立项,进行BI选型调研。

这里把自己的调研笔记整理成文分享,仅代表个人观点。

公司现在的数据需求主要分为两类:

临时需求:业务突然想看看这波活动的效果怎样,(数据指标的定义可能随时改,随时加)固化需求:每周要看,每月要看的数据,(数据的定义已经非常明确)。

对于这两类需求,我们现在的处理方案是:

对于临时需求:写HQL到Hive里去查一遍,然后将结果转为excel发送给需求人员。对于固化需求:编写脚本,结合Hive跑出结果,将结果写入对应DB库,然后通过第三方开源的BI工具进行汇总展现。

这样做简洁明了,但很明显的问题:

开发成本太高:每来一个需求,不管是临时需求还是长期需求,都需要进行定制开发,这种情况下,我们的人力深陷其中。使用不灵活:一个报表,只能进行展示,没有分析功能,如果要进行分析,需要将数据复制到excel里,利用excel进行处理分析,而我们的数据使用人员不一定具备这种能力。资源浪费:不同人员开发的报表,很多情况下存在很多重复计算。体验吐槽:hue的查询速度特别慢,做select from简单的查询,要等一分钟以上(底层引擎tez太慢!!)

在这种情况下,我们准备构建其实就是选型一个多维分析平台,让业务方自己能够取数,而且最好不用SQL,因为我们的业务方大部分不会SQL(尽管我们已经开展SQL培训,但还是有一定门槛)。

基于以上,我们进行了BI选型的产品调研。

二、产品试用分析分析

基于大家讨论了解以及几个群里同行推荐比较多的BI工具,一轮筛选后,最后筛选出了下面几个产品作为重点调研对象:Superset、Metabase、FineBI。

1、Superset

整体上,个人体验下来,感觉如下:

安装教程较为蛋疼,和装mysql一样蛋疼只支持单表获取,不支持表连接计算速度取决于你的数据库的速度可视化选择非常丰富,基于经纬度的地理位置可视化方案有好几套权限控制非常细,细到每个功能键;可惜最大的问题是对于业务分析师的用户体验不是很好,可视化流程是要对不同图形方案做对应参数设置,权限控制也非常复杂。

各方面的具体情况如下:

1)数据源与数据管理

支持的数据库非常丰富: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文件数据表模型的管理,可设置字段类型,维度/可否过滤/可否做时间列,二次加工字段,统计指标chart可用的数据表得一个一个从数据库里添加(SQL工具箱可以全部看到),不是很方便。深度支持durid

2)chart单图&dashboard看板

单图制作流程:选择数据源(表或视图)->选择图表类型->设置图表参数(指标/维度/过滤条件)。选择数据源只能从数据表列表页选择,进到分析页面后无法更换数据源;由于切换不同的图表类型时就要按照不同图重新填写参数,在自助分析时用起来不大方便;支持的可视化图形种类十分丰富,48种可视化方案;看板的过滤功能非常弱,连最基本的日期过滤组件没有,通过单图中的过滤器组件实现,只能针对单个数据表做出过滤组件,然后应用到看板上,此功能也很不方便。提供简单的图表钻取探索功能(直接跳入到单图里面),但不支持图表的联动;看板不能直接复制克隆,要做复制一个看板只能重新编辑选择单图;看板支持自动刷新,刷新最小时间粒度为10秒

3)SQL查询

支持关联填补字段/表信息支持跨库关联查询一个多选项卡环境,一次处理多个查询查询结果可视化,需要保存成视图,再跳转到chart页面;且需要对该视图做赋权(过程非常不方便)可对查询历史记录做搜索;支持使用Jinja模板语言 进行模板化,该语言允许在SQL代码中使用宏

4)权限管理

通过对角色设置权限,用户指定角色,实现权限的控制权限控制的粒度非常细,支持功能型的权限控制(表的修改可细分到删除,新增操作),支持对菜单,数据源,数据表,字段,图表,看板的权限控制权限的配置非常复杂,繁琐不支持数据行级控制

5) 二次开发

技术架构:Python+Flask+Recat+Redux+SQLAlchemy原属Airbnb的开源项目,背后有大公司团队支持维护,版本更新,bug修复,二次开发有较大保障支持restful API2、Metabase (开源,gihub star 15,670)

整体上,个人体验下来,亮点特色如下:

交互体验对业务人员非常友好。通过一个对看板和单图做了一个全局搜索的功能,营造一种”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参数来动态替换查询中的值

4)权限管理

通过对角色设置权限,用户指定角色,实现权限的控制权限设置力度非常弱,只能设置是否可访问权限(可访问的数据可能直接被删除)权限设置对象较浅:仅可对数据源,数据表,图表,分析项目集合的权限控制,不到数据行级字段级的字段控制可设置可见不可见(敏感字段场景),但不能分角色管理

5)二次开发

技术架构:Clojure+Recat+Redux提供了完整的API文档,可凭借丰富的API与文档完成许多二次开发3、FineBI(商业)(此处已添加小程序,请到今日头条客户端查看)5分钟完成数据分析,零代码操作,点击和拖拽完成分析,可半小时内作出数据报表。满足多样的分析需求,数据处理,探索式OLAP分析,自助数据分析主打自助数据集功能,普通业务人员就能对数据做筛选、切割、排序、汇总等,自助灵活地达成期望的数据结果一键实现数据共享与管控,细致精准的数据权限管控,数据和报告可在全公司内分享,分享结果实时更新支持超大数据量分析,采用先进的列式存储,具备高效计算能力和强大的数据压缩能力,支撑前端快速数据分析。

整体上,个人体验下来,亮点特色如下:

上手使用需要适应下流程,先配置数据,处理自助数据集,再是可视化仪表板和图表,有点懵制作可视化非常简单,交互有点类似Tableau,拖拽数据字段到维度框,立马呈现可视化,然后再基于可视化组件构建仪表板有联动钻取功能大,也很智能,能自动关联到共性字段数据处理功能很强大,自助数据集,能对数据处理的功能很多,包括分组汇总、修改数据字段、表合并等等最大的亮点,权限控制非常细且实用,能细分到原始数据源、处理后的数据集、仪表板,能对不同角色用户管理,包括职位、部门等,有管理员和用户等权限管控,有点OA的味道,算是这几个里面最强大的

各方面的具体情况如下:

1)数据源与数据管理

支持的数据库非常丰富,下图可见有个业务包功能,能够对不同的数据源做好分类,比如按部门或者按业务需求可对数据表进行可视化管理、数据预览、血缘分析、关联视图等

2)chart单图&dashboard看板

可视化制作流程:连接数据源(数据库或导入excel)——自助数据集处理数据——根据数据制作图表组件——制作可视化仪表板。可视化图表种类丰富,有50多种基本图表,然后加上图表间的重叠使用样式设置能达到100多种样式;有分组、交叉、明细3种表格类型,特别复杂的表格不支持,有另外的报表软件finereport仪表板有时间、文本、数值、查询等过滤组件,还有自定义条件过滤,过滤功能比较强大;提供数据钻取、联动、跳转功能,能在仪表板直接互动,也能和其他仪表板互动,支持图表的联动;组件、看板都可以直接复用,直接复制即可有丰富的函数功能,在做可视化时可对数据进行二次的过滤、汇总、排序、以及自己写公式计算仪表板有定时刷新功能,能单个仪表板、多个仪表板板和单个组件的自动定时刷新,需要JS写定时刷新频率分享上支持仪表板公开链接,也可挂到它的决策系统中,也可嵌入到网页仪表板直接分享、仪表板创建公共链接、挂出仪表板。

3)SQL查询

通过 JDBC 的方式直接连接数据库

支持跨库关联查询支持SQL数据集,允许写SQL取数支持可视化的数据预览,在业务包中添加并更新完成数据表以后,业务包编辑界面存在数据预览区域,可以查看已编辑成功的表数据。可视化关联表和血缘分析提供实时数据和抽取数据两种计算模式的 BI 工程

4)权限管理

可通过角色设置权限,权限受体包括部门、角色、职务、用户可对人员管理、目录权限、管理系统、数据连接、数据权限(数据表)、分享权限、定时调度管理权限等设定权限,权限设置力度丰富权限设置对象较深,可细致到组件还是数据行级

5) 二次开发

纯java开发,基本是零代码的工具支持一定的二次开发,有API文档总结

最后综合选型来看,此次BI选型的选项落在Metabase和FineBI,前者开源,后者商业。

开源有其弊端,权限功能太弱,没有平台运维的功能,界面都是英文,我们部门几个开发用还行,但考虑到后面可能面向全公司推广BI,选型上需要工具上手度能被业务方接受,且产品稳定性,需要技术和服务的保障。

横竖都是要采购成熟平台的,所以在预算可接受的范围内更青睐后者,功能满足度达90%,具体性能还得等测试,价格大概在二十万~几十万,看并发还有服务项目等。

标签: #javaoracle报表开发