工作薄、报表、图表概念

进入页面,工作薄—>报表—>图表,工作薄 1: 报表 1: 图表,可以理解成excel中:文件==工作薄,sheet==报表,内容组成==图表
备注:现在只要做图表—表格,但是前面的概念要有,而且现在要把它设计进去,避免后面不好扩充,工作薄提供分享

功能点简单模块说明

  1. 工作薄—>报表—>图表,只要做基础信息维护
  2. 图表制作报表,以工作薄为单位分享,权限读写控制
  3. 每个图表数据导出数据,导出权限控制,由报表制作者设定(行数、列字段、审批人等等、[加密数据])
  4. 邮件订阅,图表or报表关联一个邮件订阅信息,定时发送

    用户操作流程

  5. 创建工作簿,选择数据集(这里先做只能选一个数据集,不行让用户退到数据集去构建好完整的),来到报表页

面(实时保存报表,空白记录)。(todo-在工作薄列表中提供分享人员,读写)

  1. 报表制作,选择图表(这个现在可以不做,我们只要表格就行),选择加入进来的数据集中字段,在这里也可以添加计算字段,通过筛选器过滤数据,查询实时显示最多2000条的表格的数据
  2. 导出权限,在每个图表上设置导出权限,分享后,让部分不满足用户进入审核流程(todo)
  3. 邮件订阅,在每个图表or报表上选择需要发送人员(todo)image.png

    技术思路实现

    工作簿构建

    用户选择完数据后构建时把kylin那边表关联保存das端,续接上报表这边的数据集模型内容,后续数据集可以回显回来,报表查询也通过本地构建的数据集查询结果集
    操作:save 工作簿 && kylin端的数据关联信息接到das端,本地做一个保存,后面报表操作基于这个模型
    备注:暂不支持工作薄更换数据集的操作

    报表构建

    报表制作保存

    1. 考虑到报表端每点击一次要触发querydata去查询数据,返回结果,当用户页面操作过多后得到想要报表生成的页面,点保存万一失败(触发不了保存,一刷新整个页面没有,用户体验不好),当整个报表页面数据后面会有很多时,传参数据量也会很大,不好理解和设计传参的数据结构,故后端采用实时保存报表页面
    2. 采用实时保存,用户每操作一次(拖拽维度、设置筛选器、别名、报表、图表名称修改、排序、后面还有图表组合联动等等…),页面请求接口会很多,故后端采用用save一个方法来处理所有报表端保存的操作,需要前端与后端各自理解数据入参的结构,也会随着需求不断提高会不断要修改这个点

保存逻辑解析组成

  1. 先是对报表保存,主要是对保存报表名称的处理维护,刚进来报表就触发这个报表(未命名报表1)
  2. 处理各类图表:处理对一个图表信息保存维护(用户在页面一定只能操作一个图表的),每次触发会删除所有各类模型(过滤器、维度、度量)的数据,再插入进去保存报表信息

数据查询、导出处理

  1. 获取给页面配置好的数据集中的维度、指标(度量)信息
  2. 从工作簿中获取数据集信息、根据报表id获取到所有图表信息,对每个图表按用户配置(度量、维度、筛选器…)的做sql拼写组装处理去kylin平台处理得到结构集

sql拼写规则:维度 —- select 头部 直接显示+尾处group by
过滤器 —- where 操作符+字段类型
度量 —- dax函数 字段(kylin那边同步过来)
表别名处理 —- 统一按去掉库+表名称之间的点
(SHINEMO_CUBE.T_ORG_ORIGIN_INFO —>SHINEMO_CUBET_ORG_ORIGIN_INFO)
c.连接kylin端查询对返回的数据做一层数据封装处理返回前端

逻辑图

BI报表构建 .png

表结构设计

t_workbook

字段 类型 是否可为空 说明注释
id int 主键
gmt_create datetime 记录创建时间
gmt_modified datetime 记录修改时间
name varchar 工作薄名称
set_id bigint 数据集id
owner varchar 拥有者用户id
owner_name varchar 用户名称
star int 标记星级0-没有,1-有

t_workbook_share(todo)

字段 类型 是否可为空 说明注释
id bigint 主键
gmt_create datetime 记录创建时间
gmt_modified datetime 记录修改时间
workbook_id bigint 工作簿id
user_id varchar 用户id
user_name varchar 用户名称
reason varchar 原因说明
status bigint 标示:0—失效,1—修改权利,2—可读

t_report_info

字段 类型 是否可为空 说明注释
id int 主键
gmt_create datetime 记录创建时间
gmt_modified datetime 记录修改时间
workbook_id varchar 工作薄id
name varchar 报表名称
owner varchar 创建者
owner_name varchar 姓名
sort int 排序字段
page_element varchar 页面布局元素(前端)

t_grid_chart

字段 类型 是否可为空 说明注释
id bigint 主键
gmt_create datetime 记录创建时间
gmt_modified datetime 记录修改时间
report_id bigint 报表id
name varchar 图表名称
sort int 排序字段

新度量模型

字段 类型 是否可为空 说明注释
id bigint 主键
gmt_create datetime 记录创建时间
gmt_modified datetime 记录修改时间
resource_id bigint 资源id
type varchar 类型(哪种资源)
table_name varchar 表名
field varchar 字段
field_type varchar 字段类型
function varchar 函数(count,sum,max…)
name varchar 名称

接口文档

https://mock.jituancaiyun.com/repository/editor?id=129&amp%3Bmod=297&mod=297