工作薄、报表、图表概念
进入页面,工作薄—>报表—>图表,工作薄 1: 报表 1: 图表,可以理解成excel中:文件==工作薄,sheet==报表,内容组成==图表
备注:现在只要做图表—表格,但是前面的概念要有,而且现在要把它设计进去,避免后面不好扩充,工作薄提供分享
功能点简单模块说明
- 工作薄—>报表—>图表,只要做基础信息维护
- 图表制作报表,以工作薄为单位分享,权限读写控制
- 每个图表数据导出数据,导出权限控制,由报表制作者设定(行数、列字段、审批人等等、[加密数据])
-
用户操作流程
创建工作簿,选择数据集(这里先做只能选一个数据集,不行让用户退到数据集去构建好完整的),来到报表页
面(实时保存报表,空白记录)。(todo-在工作薄列表中提供分享人员,读写)
- 报表制作,选择图表(这个现在可以不做,我们只要表格就行),选择加入进来的数据集中字段,在这里也可以添加计算字段,通过筛选器过滤数据,查询实时显示最多2000条的表格的数据
- 导出权限,在每个图表上设置导出权限,分享后,让部分不满足用户进入审核流程(todo)
-
技术思路实现
工作簿构建
用户选择完数据后构建时把kylin那边表关联保存das端,续接上报表这边的数据集模型内容,后续数据集可以回显回来,报表查询也通过本地构建的数据集查询结果集
操作:save 工作簿 && kylin端的数据关联信息接到das端,本地做一个保存,后面报表操作基于这个模型
备注:暂不支持工作薄更换数据集的操作报表构建
报表制作保存
- 考虑到报表端每点击一次要触发querydata去查询数据,返回结果,当用户页面操作过多后得到想要报表生成的页面,点保存万一失败(触发不了保存,一刷新整个页面没有,用户体验不好),当整个报表页面数据后面会有很多时,传参数据量也会很大,不好理解和设计传参的数据结构,故后端采用实时保存报表页面
- 采用实时保存,用户每操作一次(拖拽维度、设置筛选器、别名、报表、图表名称修改、排序、后面还有图表组合联动等等…),页面请求接口会很多,故后端采用用save一个方法来处理所有报表端保存的操作,需要前端与后端各自理解数据入参的结构,也会随着需求不断提高会不断要修改这个点
保存逻辑解析组成
- 先是对报表保存,主要是对保存报表名称的处理维护,刚进来报表就触发这个报表(未命名报表1)
- 处理各类图表:处理对一个图表信息保存维护(用户在页面一定只能操作一个图表的),每次触发会删除所有各类模型(过滤器、维度、度量)的数据,再插入进去保存报表信息
数据查询、导出处理
- 获取给页面配置好的数据集中的维度、指标(度量)信息
- 从工作簿中获取数据集信息、根据报表id获取到所有图表信息,对每个图表按用户配置(度量、维度、筛选器…)的做sql拼写组装处理去kylin平台处理得到结构集
sql拼写规则:维度 —- select 头部 直接显示+尾处group by
过滤器 —- where 操作符+字段类型
度量 —- dax函数 字段(kylin那边同步过来)
表别名处理 —- 统一按去掉库+表名称之间的点
(SHINEMO_CUBE.T_ORG_ORIGIN_INFO —>SHINEMO_CUBET_ORG_ORIGIN_INFO)
c.连接kylin端查询对返回的数据做一层数据封装处理返回前端
逻辑图
表结构设计
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 | 否 | 名称 |