Antv/S2 基于Canvas的高性能多维分析表格

avatar
数据可视化 @蚂蚁集团

导读

表,是日常生活工作中被广泛使用的图表之一,说到它的起源大概要从结绳记事,易货交易说起。那时为了交易计算方便,人们就开始拿根小木棍在地上画画写写,渐渐地开始有了最雏形的统计表格。

图1:结绳记事

从记录一维数据的统计表格到两维(两个变量)、直至多维(多个变量)的表格,逐渐承载着用户多维世界的思考,它们提供了多个变量之间相互关系的基本画面,帮助人们发现大数据之间的相互作用,进而进行深入的交叉探索分析,于是有了目前商业 BI 分析领域中使用频率最高的图表之一「多维交叉分析表格」。

图2:表格维度空间映射

市面上开源的表格非常多,大都是基于一维数据的展示型表格,然而好用且能开箱即用的多维分析表格却少之又少。想要实现一个下图这样复杂的透视表格,不仅需要大量的代码逻辑去定制开发,还很难解决在大数据量下的性能瓶颈问题。

image.png

图3:KPI趋势表-Powered by S2

S2 是什么

S2AntV 团队推出的数据表可视化引擎,旨在提供高性能、易扩展、美观、易用的多维表格。不仅有丰富的分析表格形态,还内置丰富的交互能力, 帮助用户更好地看数和做决策。

S 取自于 SpreadSheet 的两个 S2 也代表了透视表中的行列两个维度。

图4:表体结构

S2 能做什么

多维表用户一般为数据分析师或运营,数据类型为海量点数据,使用多维数据分析场景:通过数据明细,一是有目标性的探查异动发生原因;二是无目标性的探索新洞见新机会。

举个🌰,互联网运营在做人群运营的时候,前期需要找到优先运营人群,即需对人群进行细分和查看基本画像。我们将行列分别放置人群年龄、城市、岗位等维度,数据单元格中通过颜色对人群规模进行染色,便于不同维度交叉下的规模对比。

图5: 单人群占比表

而这样一张表,往往会解决多个场景诉求。

  • 场景1: 通过深色热力快速找到大规模占比的人群,通过行列维度查看大规模人群的用户画像
  • 场景2:通过行列人群属性不同维度交叉分析找到目标人群,查看画像(长什么样,喜欢什么),进行针对性的运营投放策略。

图6:分析思路

基于目标用户和场景下确定了 S2 多维表格高屏效的设计原则,围绕用户行为(Behavior)、场景(Scene) 构建多维表格设计体系。

  • 有效性: 组件非穷举的,而是基于用户「数据查阅>数据分析>策略建议」最佳实践下的组件设计
  • 高密度: 表的使用常常多为解决多个场景诉求,展示海量数据明细,因此往往以高密度形态出现
  • 低跳转: 追求「零」交互设计,分析思路不断层,保障丝滑的看数分析沉浸式体验

图7:表格设计体系

表形态

从表形态来说,S2 目前提供了明细表格透视表格两种基础表格形态,同时满足明细数据查看多维交叉分析两种看数诉求。

不仅如此,S2可以支持通过更改简单的配置项,实现透视表平铺模式、树状模式、指标置于行头、指标置于列头、明细表之间的自由切换。

图10:表形态切换

表交互

为了能提升更好的看数体验,S2 内置了丰富的交互能力

图11:Hover 交互

图12:点选交互

图13:圈选交互

图14:布局交互

此外还有诸如 「单元格合并」、「链接跳转」、「列头隐藏」等业务定制交互和 「自定义交互」能力,详情可参考 表格交互

表分析

字段标记

图形语法在专业数据产品中一般叫「字段标记」,通过不同通道去标记需要用户重点关注的数据,而表格里的数据类型一般就是单点数据,一个格子放置着一个数值。

图15:表和图表的映射关系图

S2 提供的「字段标记」能力,可以为你的数据表格添加文本、图标、条形图、背景色条四种字段标记,让你的数据洞察变得简单直接。

图16:字段标记

分析组件

S2 在内部业务的打磨下,沉淀出一套专业、通用的分析方法论,并将这些分析思路打包为开箱即用的 react 分析组件。如:表头组件、导出组件、维度下钻、行列维度切换、高级排序等,让表分析玩出更多花样。(更多示例请参考 表格组件

表主题

在实际的业务场景中少不了很多主题定制的需求。S2 内置了默认、多彩蓝、简约灰色三套默认主题包供选择。

用户也可以通过自定义色板或自定义主题 schema 的方式快速注册自定义主题包。更多请参考 表格主题

S2 的性能表现

S2 选择了 Canvas 作为渲染载体,在保证了交互丰富度、跨平台兼容性的同时,很好地提供了大数据看数场景下的性能基础。同时通过按需渲染、虚拟滚动等方式,保证了在百万级数据量下秒级渲染和滚动不卡顿的流畅体验。极限测试下 100w 的数据也能正常渲染。

更多性能解密请参考 性能介绍

S2 业务应用

在蚂蚁集团、阿里集团,多维表格是目前商业 BI 分析领域中使用频率最高的图表之一。它们提供单个、两个或者多个变量之间的相互关系的基本画面,可以帮助业务进行交叉探索分析。

根据分析目的不同大致有以下几种常见场景的表格:

  • 趋势表: 用于查看核心指标随时间变化的进度数据监控和分析,如对团队KPI的进展监控。
  • 占比表: 用于对比不同对象在相同维度下的比较,如分析人群在不同年龄和岗位属性下的规模占比分布,寻找人群规模大或小的影响因子和具体原因。
  • 对比表: 用于对比不同用户群或活动等对象在相同维度下的对比分析的场景,如不同年龄同岗位下的人群对比;不同平台同品类下的商品比价。

图25: 场景表分类

到真实的业务中,如何不受限制地满足业务多样的看数诉求呢?S2 内置的自定义 Hook,为开发者提供了足够的发挥空间,可以随性所欲定制各种业务场景表。更多请参考 场景案例

图26: 蚂蚁内部业务表格场景

发布内容

后记

非常感谢你的耐心阅读,如 AntV 的其他项目一样,S2 不是突发奇想三天两夜赶出来的 KPI 项目,是在蚂蚁集团内最重要的 BI 产品 DeepInsight 近3年的持续迭代、反复打磨沉淀而来,但深知依然还有很多遗漏和不足,欢迎大家在 GitHub 给我们反馈问题,更加欢迎有兴趣的同学一起来添砖加瓦,把表分析做得更加专业化、体系化。