公司最近打算自研一个报表平台,基于低代码开发思想, 业务人员只需要通过简单的拖拽方式,即可生成需要的报表。整体架构如下:
通过 kettle 来将线上业务数据同步到大数据平台,presto 来实现跨数据源查询功能, 报表可视化平台提供一些报表组件(图表、表格)来供业务人员使用,业务人员拖拽并进行数据绑定后,即可实时进行数据报表的渲染。
我这边主要可视化报表数据接口, 简单的折线图、柱状图、柱线混合、简单图表等都比较简单,在开发交叉透视表的时候走了一些弯路,但好在最后及时回正,现将思路整理如下:
交叉透视表数据结构:
{ "success": true, "data": { "data": { "superHeaders": [ [ { "colspan": 2 }, { "colspan": 2, "name": "Apple" }, { "colspan": 4, "name": "Huawei" } ] ], "columns": [ { "name": "area", "id": "area" }, { "name": "province", "id": "province" }, { "id": "SUM(money)@0", "name": "iphoneX" }, { "id": "SUM(money)@1", "name": "macbook pro" }, { "id": "SUM(money)@2", "name": "Huawei P40" }, { "id": "SUM(money)@3", "name": "Huawei P50" }, { "id": "SUM(money)@4", "name": "iphoneX" }, { "id": "SUM(money)@5", "name": "荣耀x" } ], "fixRow": 2, "combineNum": 1, "rows": [ { "area": "华东", "province": "上海", "SUM(money)@0": "-", "SUM(money)@1": "15000", "SUM(money)@2": "-", "SUM(money)@3": "223000", "SUM(money)@4": "-", "SUM(money)@5": "-" }, { "area": "华东", "province": "吉林", "SUM(money)@0": "-", "SUM(money)@1": "-", "SUM(money)@2": "3000", "SUM(money)@3": "-", "SUM(money)@4": "-", "SUM(money)@5": "-" }, { "area": "华东", "province": "山东", "SUM(money)@0": "-", "SUM(money)@1": "-", "SUM(money)@2": "4000", "SUM(money)@3": "-", "SUM(money)@4": "-", "SUM(money)@5": "-" }, { "area": "华东", "province": "广东", "SUM(money)@0": "-", "SUM(money)@1": "-", "SUM(money)@2": "-", "SUM(money)@3": "-", "SUM(money)@4": "-", "SUM(money)@5": "10000" }, { "area": "华东", "province": "江苏", "SUM(money)@0": "-", "SUM(money)@1": "-", "SUM(money)@2": "-", "SUM(money)@3": "5", "SUM(money)@4": "-", "SUM(money)@5": "-" }, { "area": "华东", "province": "江西", "SUM(money)@0": "-", "SUM(money)@1": "-", "SUM(money)@2": "-", "SUM(money)@3": "-", "SUM(money)@4": "-", "SUM(money)@5": "10000" }, { "area": "华东", "province": "河北", "SUM(money)@0": "-", "SUM(money)@1": "-", "SUM(money)@2": "-", "SUM(money)@3": "-", "SUM(money)@4": "-", "SUM(money)@5": "7500" }, { "area": "华东", "province": "河南", "SUM(money)@0": "-", "SUM(money)@1": "-", "SUM(money)@2": "-", "SUM(money)@3": "-", "SUM(money)@4": "-", "SUM(money)@5": "11000" }, { "area": "华东", "province": "湖南", "SUM(money)@0": "-", "SUM(money)@1": "-", "SUM(money)@2": "-", "SUM(money)@3": "-", "SUM(money)@4": "8400", "SUM(money)@5": "1800" }, { "area": "华东", "province": "黑龙江", "SUM(money)@0": "-", "SUM(money)@1": "-", "SUM(money)@2": "4400", "SUM(money)@3": "-", "SUM(money)@4": "-", "SUM(money)@5": "-" }, { "area": "华中", "province": "安徽", "SUM(money)@0": "5000", "SUM(money)@1": "-", "SUM(money)@2": "-", "SUM(money)@3": "-", "SUM(money)@4": "-", "SUM(money)@5": "-" }, { "area": "华中", "province": "湖北", "SUM(money)@0": "-", "SUM(money)@1": "-", "SUM(money)@2": "4600", "SUM(money)@3": "-", "SUM(money)@4": "-", "SUM(money)@5": "-" }, { "area": "华北", "province": "山西", "SUM(money)@0": "-", "SUM(money)@1": "-", "SUM(money)@2": "-", "SUM(money)@3": "75000", "SUM(money)@4": "-", "SUM(money)@5": "-" } ] }, "code": 1, "msg": "成功" }
通过结果来反向推:
传参:行列、指标
交叉透视表数据结果就有三部分组成: 超级表头(superHeaders), 列(columns),数据行(rows)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)