DataEase 设计理念浅析

3,885 阅读5分钟

导读

本篇内容是笔者在做 开箱即用的 BI 工具 系列的过程中的一些个人总结。为了保证文章的整体结构,特单独提炼出这一篇关于 DataEase 的解析。各位读者请放心,本篇内容会很独立,没有其他上下文也不影响阅读。

正文

DataEase 简介

DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便地与他人分享。

这是其 官网文档 给的定义,其实跟其他 BI 可视化工具一样,都是为了能够通过拖拽、点选等可视化操作生成图表。同时,它们可以从各种数据库或其他数据源导入数据进行消费。如下图官网给的示例。

image.png

可以在 在线体验地址 体验。快速了解其操作可以观看 快速入门DataEase入门教学视频 的视频。

设计分析

分析之前,我们要先提出关键问题,也就是分析什么。

  1. 各种数据源的数据结构和类型都不太一样,它是如何做到统一多种数据源的?
  2. 每种图表需要配置的属性也不同,属性最终要绑定到数据字段上的,它是如何用可视化的方式做到这种绑定的? 其实这两个问题适用于所有的 BI 可视化工具,也是它们底层要解决的问题。下面我们来看下 DataEase 的解决思路,先上产品架构图。

image.png

数据集

第一个重要的概念 —— 数据集,用它来解决数据源统一的问题。数据集里的数据类型只有:文本时间数值数值(小数)地理位置 这几类。不管从什么数据源导入的数据,都会被转换为数据集。这里拿比较特殊的 Excel 方式举个例子,看其如何生成一个数据集。为方便理解概念,列一下与 MySQL 的对比:

ExcelMySQL数据集
文件数据库数据集分组
Sheet数据集
字段字段
记录记录

这么一列实际上就比较清楚了,如果看了 快速入门 的介绍视频,可以知道,上传 Excel 文件并选择 Sheet 后,就可以初步生成多个数据集了。那么数据类型如何确定呢?

首先会根据 Excel 自带的列信息分析,匹配相应的数据类型。然后还提供了手动修改数据类型的功能。其他数据源的接入也大同小异。通过提供自动分析 + 手动设置的功能,解决了各种数据源数据类型与数据集数据类型的映射问题。

第 1 个问题解决完毕。

维度/指标

数据格式统一的问题通过数据集解决了,下面来看看视图(图表)的问题。

从产品架构图可以看出,DataEase 支持 ECharts 和 AntV 两种图表库,笔者毫不怀疑,如果还有更多图表库,DataEase 支持起来也不会太麻烦。那么它们是如何做到的呢?我们看一下生成视图的步骤:

image.png 从上图可以看到,右侧数据操作区分成了左右两列。

  • 左侧是维度指标列表。都是数据集里的字段,所以内容会根据选择的数据集不同而变化;
  • 右侧是图表属性字段。会根据选择图表类型的不同而变化; 我们可以注意到,图表属性每一项后面都标明了维度指标,反应快的小伙伴应该已经明白了:DataEase 就是靠维度/指标的概念将数据集与图表属性关联起来的。

试想一下,假设有另外一个图表库 xxCharts,只需要将图表的各种属性打上维度或指标的标签,就可以直接接入 DataEase 的视图体系,这就是抽象的魔力。

那么维度和指标在数据集这边是如何定义的呢?

首先,导入数据时,DataEase 会根据字段类型归类,数值类型的为指标字符、时间类型的为维度。然后,在数据集的字段管理页面下,可以修改字段的维度/指标类型。

仍然是自动分析 + 手动设置的功能设计,解决了数据集的问题。至于图表库,那就需要 DataEase 在代码层面配置了。

第 2 个问题解决完毕。

总结

DataEase 通过增加数据集这个概念或者说是抽象,解决了不同数据源数据格式统一的问题。这让视图层只需要考虑对数据集格式的适配即可,屏蔽了数据源层面的复杂度。

再通过增加维度/指标的概念,让数据集字段(数据集层)和图表属性(即视图层)得以解耦。

这两个抽象最终达成的效果就是:一头不怕数据源的扩展,一头不怕视图层的扩展,整个架构让两头都稳了,这就是抽象和架构设计的魔力。

All problems in computer science can be solved by another level of indirection.——David Wheeler

计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。——大卫·惠勒 更多 DataEase 系统架构相关的资料可以查看官方文档:系统架构