logo

S2

  • 使用文档
  • API 文档
  • 图表示例
  • 在线体验
  • 更新日志
  • 所有产品antv logo arrow
  • 2.x
  • 简介
  • 快速上手
  • 基础教程
    • 基本概念
      Updated
    • 表形态
      • 透视表
        Updated
      • 明细表
        Updated
    • 字段标记
      Updated
    • 小计总计
    • 排序
      • 基础排序
        Updated
      • 组内排序
        Updated
    • 主题配置
      Updated
    • Tooltip
      Updated
    • 数据格式化
      New
    • 多行文本
      New
    • 国际化
    • 分页
      New
  • 进阶教程
    • 单元格渲染类型
      • 链接
      • 图片
        New
      • 视频
        New
      • 迷你图表
      • 结合@antv/g2
      • 自定义渲染
    • 自定义
      • 自定义 Hook
        Updated
      • 自定义行列头分组
        New
      • 自定义 Icon
        Updated
      • 自定义单元格对齐方式
        Updated
      • 自定义单元格宽高
        Updated
      • 自定义排序操作
        Updated
      • 自定义折叠/展开节点
        New
    • 交互
      • 基础交互
        Updated
      • 自定义交互
      • 隐藏列头
        Updated
      • 行列宽高调整
        Updated
      • 合并单元格
      • 滚动
        Updated
      • 复制与导出
        New
      • 高亮/选中单元格
        New
    • 分析组件
      • 简介
        New
      • 高级排序
        Updated
      • 维度切换
        Updated
      • 导出
        Updated
      • 分页
        Updated
      • 维度下钻
        Updated
    • 表格组件
      • 编辑表
      • 趋势分析表
        Updated
    • 高清适配
      Updated
    • 获取表格实例
    • 表格自适应
    • 获取单元格数据
      Updated
    • 注册 AntV/G 插件
      New
    • 透视组合图
      Experimental
    • Vue 3.0 组件 (停止维护)
  • 扩展阅读
    • 数据流处理
      • 透视表
      • 明细表
    • 布局流程
      • 透视表
      • 明细表
    • 性能介绍
      Updated
  • 贡献指南
  • 常见问题
  • S2 2.0 升级指南

小计总计

上一篇
字段标记
下一篇
基础排序

Resources

Ant Design
Galacea Effects
Umi-React 应用开发框架
Dumi-组件/文档研发工具
ahooks-React Hooks 库

社区

体验科技专栏
seeconfSEE Conf-蚂蚁体验科技大会

帮助

GitHub
StackOverflow

more products更多产品

Ant DesignAnt Design-企业级 UI 设计语言
yuque语雀-知识创作与分享工具
EggEgg-企业级 Node 开发框架
kitchenKitchen-Sketch 工具集
GalaceanGalacean-互动图形解决方案
xtech蚂蚁体验科技
© Copyright 2025 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

简介

小计总计属于表的透视功能,可以给行头和列头分别配置汇总能力,展示小计总计,开启 自定义行列头 时,对应行列头的汇总能力无效。

小计

汇总某一维度的度量值

形式一:增加额外行/列

平铺模式下,给当前维度额外增加一行/列

row

形式二:挂靠节点

树状模式下,挂靠到当前节点所在行/列中

row

总计

汇总所有维度的度量值,平铺模式和树状模式都需增加额外行/列

1. 单度量值

平铺:

row

树状:

row

2. 多度量值

平铺:

row

树状:

row

分组汇总

按维度进行 小计/总计 的汇总计算,用于进行某一维度的数据对比分析等。

行总计/行小计分组


列总计/列小计分组


使用

1. 显示配置

配置 S2Options 的 totals 属性来实现是否展示行列小计总计以及显示位置,类型如下:

Totals

功能描述:行/列小计总计配置。

参数说明类型必选默认值
row行总计配置(在 自定义行头时 无效)Total-
col列总计配置(在 自定义列头时 无效)Total-

Total

功能描述:小计总计配置。查看 文档 和 示例

参数说明类型默认值必选
showGrandTotals是否显示总计booleanfalse
showSubTotals是否显示小计。配置为对象时,always 用于控制当子维度小于 2 个时是否始终展示小计,默认展示boolean | { always: boolean }false
subTotalsDimensions小计的汇总维度string[][]
reverseGrandTotalsLayout总计布局位置,默认下或右booleanfalse
reverseSubTotalsLayout小计布局位置,默认下或右booleanfalse
grandTotalsLabel总计别名string总计
subTotalsLabel小计别名string小计
calcGrandTotals自定义计算总计CalcTotals
calcSubTotals自定义计算小计CalcTotals
grandTotalsGroupDimensions总计的分组维度string[]
subTotalsGroupDimensions小计的分组维度string[]

CalcTotals

功能描述: 小计总计计算方式配置。查看 文档 和 示例

参数说明类型必选默认值
aggregation聚合方式SUM | MIN | MAX | AVG
calcFunc自定义方法(query: Record<string, any>, data: Record<string, any>[], spreadsheet: SpreadSheet) => number

2. 数据

1. 数据传入

数据根据行/列位置以及 key 值传入,维度 key 值没有包含所有行、列的 key,举例如下:

[
// 总计/总计
{
price: '15.5',
},
// 浙江/总计
{
province: '浙江',
price: '5.5',
},
// 浙江-杭州/总计
{
province: '浙江',
city: '杭州',
price: '3',
},
// 总计/笔
{
type: '笔',
price: '10',
},
// 浙江-小计/笔
{
province: "浙江",
type: "笔",
price: "3"
},
]
将总计、小计数据集合到 data 中
const s2DataConfig = {
data: [
{
province: '浙江',
city: '杭州',
type: '笔',
price: '1',
},
// 总计/总计
{
price: '15.5',
},
],
...
}

2. 计算出数据

可以给 totals 下的 row 、 col 分别配置属性 calcGrandTotals 、 calcSubTotals 来实现计算汇总数据

2.1. 配置聚合方式

通过配置 aggregation 来实现,聚合方式目前支持 SUM (求和)、 MIN (最小值)、 MAX (最大值)和 AVG (算术平均)。 查看示例

const s2Options = {
totals: {
row: {
showGrandTotals: true,
showSubTotals: true,
reverseGrandTotalsLayout: true,
reverseSubTotalsLayout: true,
subTotalsDimensions: ['province'],
calcGrandTotals: {
aggregation: 'SUM',
},
calcSubTotals: {
aggregation: 'SUM',
},
},
col: {
showGrandTotals: true,
showSubTotals: true,
reverseGrandTotalsLayout: true,
reverseSubTotalsLayout: true,
subTotalsDimensions: ['type'],
calcGrandTotals: {
aggregation: 'SUM',
},
calcSubTotals: {
aggregation: 'SUM',
},
},
},
};

2.2. 配置自定义计算方法
const s2Options = {
totals: {
row: {
showGrandTotals: true,
showSubTotals: true,
reverseGrandTotalsLayout: true,
reverseSubTotalsLayout: true,
subTotalsDimensions: ['province'],
calcGrandTotals: {
calcFunc: (query, data, spreadsheet) => {},
},
calcSubTotals: {
calcFunc: (query, data, spreadsheet) => {},
},
},
col: {
showGrandTotals: true,
showSubTotals: true,
reverseGrandTotalsLayout: true,
reverseSubTotalsLayout: true,
subTotalsDimensions: ['type'],
calcGrandTotals: {
calcFunc: (query, data, spreadsheet) => {},
},
calcSubTotals: {
calcFunc: (query, data, spreadsheet) => {},
},
},
},
};

通过配置 calcFunc: (query: Record<string, any>, data: Record<string, any>[], spreadsheet: SpreadSheet) => number 来实现。查看示例

注意:data 为明细数据,如需获取包含汇总的数据

import { QueryDataType } from '@antv/s2';
const calcFunc = (query, data, spreadsheet) => {
const allData = spreadsheet.dataSet.getCellMultiData({
query,
queryType: QueryDataType.All,
});
console.log('data(明细数据):', data);
console.log('data(全部数据,含汇总):', allData);
};

优先级

  1. 数据传入优先级高于计算数据

  2. 配置自定义方法优先级大于配置聚合方式,即配置 calcFunc > aggregation

  3. 当同一个单元格为 行+列 汇总值时,优先级为:列总计/列小计 > 行总计/行小计