上一篇文章介绍了Metabase透视表的开源PR,时间较早,基于Metabase V0.30版本的实现,而Metabase V0.33版本之后变化较大,所以如果在新版上实现PR中Metabase 复杂表头表格功能需要做改造。当然如果实力允许,你也可以按照自己的思路去实现。
效果呈现
实现原理
数据结构
Metabase返回的数据结构,通过前端进行封装,版本之间会存在差别
1 | frontend\src\metabase\meta\types\Dataset.js |
1 | export type DatasetData = { |
新增的图表类型
由于Metabase组件化的代码,所以作者新增图表类型,不影响原来的功能和代码
1 | frontend\src\metabase\visualizations\index.js |
1 | import SummaryTable from "./visualizations/SummaryTable"; |
复杂表头图表设置项
1 | const emptyStateSerialized: SummaryTableSettings = { |
- 行显示字段:多个分组嵌套
- 列显示字段:列字段只能有一个不支持多个进行嵌套
- 聚合字段(度量)
- 不可见字段:分组列表里面有,但是手动设置不显示的字段
行和列字段支持功能:
- 汇总
- 排序
核心处理
在原有的table基础上进行的修改,主要添加了这个js实现计算汇总及后续处理
1 | frontend\src\metabase\visualizations\lib\summary_table_datasetdata_builder.js |
1 | export const buildDatasetData = (//格式化数据集 |
js组件(lodash)数据处理
Lodash是一个著名的javascript原生库,不需要引入其他第三方依赖,像Jquery的一样,十分简洁,正是利用lodash实现数据的js处理。
1 | "lodash.flatmap": "^4.5.0", |