前言
前言
前言
项目背景
什么是数据可视化:
大数据已经被国家列入十三五规划,提倡开放,共享。开放共享的背后意味着人人都可以接触和进入大数据领域,企业不再为数据资源的垄断发愁,因为一切都是开放的,如何获取数据将不再是问题,困难在于数据有什么价值,用什么样的手段才能把数据的价值直观而清晰的表达出来。
我之前看到过一篇文章《设计中的设计》,里面提出一个概念叫视觉对话。如果要两个语言、文字不通的陌生人进行沟通,给他们一张纸,一只笔,他们一定是用最简洁的方式把自己的想法画下来进行交流,这就是视觉对话。
其实这也正是数据可视化的本质,通过可视化图表将用比文字快10倍的速度将陌生的读者带进门,大数据时代一个显著特征就是数据可视化的崛起。作为大数据最后一公里的展现环节,数据可视化将技术与艺术完美结合,借助图形化的手段,清晰有效地传达与沟通信息。
一方面,数据赋予可视化以价值;另一方面,可视化增加数据的灵性,两者相辅相成,帮助企业从信息中提取知识、从知识中收获价值。
-- 摘自 《数据可视化的作用和实现方法》
数据可视化的几种常见模式如下:
商业软件的几种模式
商业BI套件
能够提供BI生命周期全套的解决方案,业界比较知名BI套件老牌的有IBM的Cognos、SAP的BO、Oracle的BIEE,以及新生军Tableau、QlikView等等,这些产品前端可视化都做得非常强大,报表设计、Dashboard设计、Report邮件发送、OLAP分析都不在话下
!> 当然与之相对应的也是一笔少则几十万多则上百万的昂贵收费, 而且大数据/NoSQL/NewSQL产品五花八门、发展神速,想对所有数据源都提供支持也是很难做到的
第三方数据分析平台
通过SDK把数据发送到三方,如:友盟、百度统计、TalkingData、CNZZ、Google Analytics, 大概一般对数据比较敏感或者公司规模略大这种形式的数据处理都不能满足需求了,另外不乏一些优秀的创业公司或自己开发类似第一种BI套件打包软件和服务 这种解决方案比较适合没有研发能力和不想把精力过多花在软件解决方案上的小型、传统型企业
开源软件的几种模式
图形库
优秀的开源的可视化开发组件,以JS库和开发包的形式提供,如:ECharts、HighChart、D3、ChartJS等等,程序猿的利器,数据分析师无法直接使用
简单网页报表
简单网页版数据查询与图表展示,如:Art。 这类工具功能单一、对SQL查询出来的数据进行数据展示格式有严格要求,数据查询不能重用,图形简陋
报表工具
附录 12个最好的开源报表工具, 有兴趣的朋友可以自己去体验下
开源OLAP
这一块最近比较流行的是基于Mondrian的Saiku和Pivot4J。 这两种开源OLAP平台分析最大的好处是用户可以Self-Service的形式组织自己的数据、全方位多角度交互式的分析数据,我们从13年Saiku2.x的时候就开始使用,感觉非常不错,Saiku3之后并没有太多亮点,模型设计器和Saiku保存的查询组织成Dashboard也只有收费的企业版才有,想利用Saiku做多维分析,个人感觉2.6足以
开源BI组件
Pentaho, SpagoBI功能强大,但是系统架构非常笨重,组件复杂,难以驾驭
关于Dashboard
- 免费的Dashboard设计平台,体验过如:dashbuilder、razorflow,两者在可视化控制方面做得够不够好,Razorflow Dashboard设计还需要开发人员介入,再如Python系Superset之类产品没有细究过,个人感觉大数据产品主流还是JVM系语言开发的产品适应性比较好
- 业内另外一种普遍的Dashboard开发办法则是全定制,产品、运维提出需求想在一张页面上展示什么样的数据、以什么样的图形展示,前端工程师做好页面,后端服务准备数据。这种开发模式开发生命周期长,页面图表不可重复使用,比较适合业务和需求比较固定的公司。否则不断的页面新增与变更,代价非常之大
CBoard解决的问题
在这样的背景下CBoard的出发点为打造一款:
- 及时数据交互: 不需要轻量级模型(Mondrian Schema, BO Universe)的“多维”数据图表设计Dashboard, 做到xxx广告宣称的"Type SQL, Get Chart"。
- 拖拽维度交互: 借鉴了Databrick Cloud Platform和Zeppelin的可视化灵感,SQL或其他任何查询结构返回的二维数据表之后让用户通过简单拖拽列的组合方式进行数据透视、聚合与展示。
- 不仅仅限于JDBC开放的数据连接适配接口: (后称DataProvider) 目前CBoard支持JDBC数据源,Saiku2.x数据源,Kylin1.6,Elasticsearch 1.x, 2.x, 5.x,但是用户可以在不用更改前端界面的前提下继承DataProvider接口,返回普通二维数组即可,交互所需参数前端自动生成相应交互界面。