zoukankan      html  css  js  c++  java
  • 塞库报表封装问题分析--一篇不太成功的问题分析报告

    塞库报表封装问题分析

    一、问题描述

    借助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

    2SVG 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、服务器下发数据、数据接口

    array.gifcellset

    • s.gifs.gifs.gifarray.gif0
      • s.gifs.gifs.gifs.gifobject.gif0
        • s.gifs.gifs.gifs.gifs.gifblue.gifvalue : "MeasuresLevel"
        • s.gifs.gifs.gifs.gifs.gifblue.giftype : "ROW_HEADER_HEADER"
        • s.gifs.gifs.gifs.gifs.gifobject.gifproperties
          • s.gifs.gifs.gifs.gifs.gifs.gifblue.gifhierarchy : "[Measures]"
          • s.gifs.gifs.gifs.gifs.gifs.gifblue.gifdimension : "Measures"
          • s.gifs.gifs.gifs.gifs.gifs.gifblue.giflevel : "[Measures].[MeasuresLevel]"
      • s.gifs.gifs.gifs.gifobject.gif1
        • s.gifs.gifs.gifs.gifs.gifblue.gifvalue : "星火"
        • s.gifs.gifs.gifs.gifs.gifblue.giftype : "COLUMN_HEADER"
        • s.gifs.gifs.gifs.gifs.gifobject.gifproperties
          • s.gifs.gifs.gifs.gifs.gifs.gifblue.gifuniquename : "[dimens3.MerchantHie].[0000160]"
          • s.gifs.gifs.gifs.gifs.gifs.gifblue.gifhierarchy : "[dimens3.MerchantHie]"
          • s.gifs.gifs.gifs.gifs.gifs.gifblue.gifs.gifs.gifs.gifs.gifs.gifs.gifblue.giflevel : "[dimens3.MerchantHie].[MerchantLevel]"
      • s.gifarray.gif1
      • s.gifs.gifs.gifs.gifobject.gif0
      • s.gifs.gifs.gifs.gifs.gifblue.gifvalue : "成功笔数占比"
      • s.gifs.gifs.gifs.gifs.gifblue.giftype : "ROW_HEADER"
      • s.gifs.gifs.gifs.gifs.gifobject.gifproperties
        • s.gifs.gifs.gifs.gifs.gifs.gifblue.gif成功笔数占比s.gifs.gifs.gifs.gifs.gifs.gifblue.gifhierarchy : "[Measures]"
        • s.gifs.gifs.gifs.gifs.gifs.gifblue.gifdimension : "Measures"
        • s.gifs.gifs.gifs.gifs.gifs.gifblue.giflevel : "[Measures].[MeasuresLevel]"
      • s.gifs.gifs.gifs.gifobject.gif1
      • s.gifs.gifs.gifs.gifs.gifblue.gifvalue : "83.00%"
      • s.gifs.gifs.gifs.gifs.gifblue.giftype : "DATA_CELL"
      • s.gifs.gifs.gifs.gifs.gifobject.gifproperties
        • s.gifs.gifs.gifs.gifs.gifs.gifblue.gifposition : "0:0"
        • s.gifs.gifs.gifs.gifs.gifs.gifblue.gifraw : "0.8300195828187892"
      • s.gifs.gifs.gifs.gifobject.gif2

    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-

  • 相关阅读:
    访问修饰符、封装、继承
    面向对象与类
    内置对象
    三级联动 控件及JS简单使用
    asp。net简单的登录(不完整)
    asp。net:html的表单元素:
    ASP.Net简介及IIS服务器及Repeater
    用户控件
    登陆,激活,权限
    timer控件,简单通讯
  • 原文地址:https://www.cnblogs.com/feng9exe/p/12177410.html
Copyright © 2011-2022 走看看