塞库报表封装问题分析
一、问题描述
借助saiku生成数据模型;
借助saiku生成图文文件;
———(数据、格式)——》塞库处理——〉图片报表
二、saiku原理描述
现状1:
——(数据源)——》---建模控制+权限系统——〉数据+模型—》绘图数据——>绘图引擎——> 图片——>导出接口——〉图形文件
所有的过程都在会话系统的控制下进行
现状2:(详见附录数据)
1、前端绘制:
——(源数据)—》saiku建模————〉绘图源数据—》前端绘制
2、导出绘制
绘图源数据—>svg数据——》服务器转换引擎——〉图形文件——》导出接口
——(源数据)—》saiku建模————〉
三、问题分析
1、数据模型导出分析
模型数据 = 元数据(数据库)+ 建模数据 + 导出接口
元数据 = 数据库选择 = 数据库连接选择 = 数据库连接设置 + 数据库选择接口 + 会话参量
数据建模 = 数据模型配置 + 数据库选择 + 模型设置接口 + 会话参量;
数据导出 = 会话参量 + 导出接口;
现存问题:
1)不支持多数据库连接选择
2)没有做会话参量的保存;
3)没有超级账户
连接+视图+权限
2、图文导出
模型数据—》svg——〉需要的图文格式;
模型数据—》报表数据
现存问题
1)svg
数据模型—〉js引擎—>svg—》后继处理
数据模型—〉java引擎—>svg—》后继处理
2)乱码问题
3)svg的数据数据
与
模型数据
与
saiku模型数据
的关系
———》svg数据解析
四、解决方案
1、数据方案
模型数据——》svg格式—〉图文数据
2、部署方案
saiku服务器+新开放接口——》适配服务器——〉用户
用户需求 = 数据库选择 + 模型数据配置 + 输出结果
四、技术方案
1、svg转数据
使用Java解析svg文件,以及将获取的Element转换成String
https://blog.csdn.net/genius_wolf/article/details/78794059
2、SVG 与 HTML5 的 canvas 各有什么优点,哪个更有前途?
https://www.zhihu.com/question/19690014
3、Java Batik操作SVG,实现svg读取,生成,动态操作
https://my.oschina.net/yuyidi/blog/339684
Java 的 SVG 库 JFreeSVG
如何使用JFreeChart创建SVG?
五、数据分析
请求接口
1、图文导出接口
http://ns-bi.creditease.corp/saiku/rest/saiku/admin/export/saiku/chart
2、模型修改接口
http://ns-bi.creditease.corp/saiku/rest/saiku/admin/query/E504DC28-6754-E9DE-8F6C-B84CDAF4B33D/axis/COLUMNS/dimension/Measures/member/%5BMeasures%5D.%5BALL_AMT%5D
3、数据接口
http://ns-bi.creditease.corp/saiku/rest/saiku/admin/query/E504DC28-6754-E9DE-8F6C-B84CDAF4B33D/result/flattened?limit=0&_=1578560443459
附录数据
1、服务器下发数据、数据接口
cellset
- 0
- 0
- value : "MeasuresLevel"
- type : "ROW_HEADER_HEADER"
- properties
- hierarchy : "[Measures]"
- dimension : "Measures"
- level : "[Measures].[MeasuresLevel]"
- 1
- value : "星火"
- type : "COLUMN_HEADER"
- properties
- uniquename : "[dimens3.MerchantHie].[0000160]"
- hierarchy : "[dimens3.MerchantHie]"
- level : "[dimens3.MerchantHie].[MerchantLevel]"
- 1
- 0
- value : "成功笔数占比"
- type : "ROW_HEADER"
- properties
- 成功笔数占比hierarchy : "[Measures]"
- dimension : "Measures"
- level : "[Measures].[MeasuresLevel]"
- 1
- value : "83.00%"
- type : "DATA_CELL"
- properties
- position : "0:0"
- raw : "0.8300195828187892"
- 2
2、导图时的请求数据
type=png&
svg=%3Csvg+xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22+font-size%3D%2210px%22+font-family%3D%22sans-serif%22+fill%3D%22none%22+stroke%3D%22none%22+stroke-width%3D%221.5%22+style%3D%22-webkit-touch-callout%3A+none%3B+-webkit-user-select%3A+none%3B+-khtml-user-select%3A+none%3B+-moz-user-select%3A+none%3B+-ms-user-select%3A+none%3B+user-select%3A+none%3B%22+unselectable%3D%22on%22+width%3D%22859%22+height%3D%22303%22%3E%3Cdefs%2F%3E%3Crect+pointer-events%3D%22all%22+width%3D%22859%22+height%3D%22303%22+fill%3D%22rgb%28127%2C127%2C127%29%22+fill-opacity%3D%220.00001%22%2F%3E%3Cg%3E%3Cg+transform%3D%22translate%283%2C3%29%22%3E%3Cg+transform%3D%22translate%28762%2C0%29%22%3E%3Cg+clip-