Findreport中框架图使用的注意事项

2024年 2月 20日 64.5k 0

简介

        在框架图的应用中,一些表达上下游关系的数据非常适合用于做链路图相关的报表。可以展示成雪花图,普通架构图。但是在实际操作中有几点关于数据的注意事项需要留意。

        关于框架的基本使用方法帆软官方帮助文档中,已经给出教程。可以自行前往观看。

测试数据

使用版本

数据库:Oracle19C

报表:Finereport-11

  1. id NUMBER(10) NOT NULL,

  2. name VARCHAR2(100) NOT NULL,

  3. CONSTRAINT employees_pk PRIMARY KEY (id),

  4. CONSTRAINT employees_fk FOREIGN KEY (manager_id) REFERENCES employees(id)

  5. INSERT INTO employees (id, name, manager_id) VALUES (i, 'Employee ' || i, NULL);

  6. INSERT INTO employees (id, name, manager_id) VALUES (i, 'Employee ' || i, MOD(i,10)+1);

  7. select * from employees ;

        此时框架图没有问题

闭环链路关系

        id为1依然是置顶,我们给数据做一次修改,使其数据形成一个闭环的递归下转关系。

  1. set manager_id=25 where id = 1

        报表端预览数据是否更新成功(注意数据库AC状态是否开启。以报表段预览的数据为准)

        此时我们再看一下报表展示效果。其闭环的下钻关系,导致其无法成功展示出来

当整个链路没有形成闭环的时候,数据便不可展示,

        解决办法:

        此时我们就需要把闭环的链路进行断开,使其能形成单向下钻的数据链路

根不唯一

        在这个数据的递归关系中,ID为1的数据,我们称之为“根”,做框架图,需要保证其根是唯一的,如果不唯一,在框架图中会随机抽取一个根进行下转。

此时我们删刚刚ID为1的数据使其“根”不唯一

以下删掉1,20各位造的数据随机性不一样,需要根据情况删除

  1. delete from employees where id =1

  2. delete from employees where id =20

  3. select * from employees

        注:本文中采用事务随机生成数据,各位模仿者,请根据生成数据的实际情况进行删除,以达到本博文的实际效果。

            此时可以通过递归查看部分根的关系

  1. SELECT id, name, manager_id,level

  2. START WITH manager_id =20

  3. CONNECT BY PRIOR id = manager_id;

        (至于为什么删掉1,20,在finereport,其会采用string的数据类型以第一列为准,在框架图中,会优先检索父节点值为空数据为“根”进行下钻,当根不唯一的时候,其“根”的选择会具有不可控性。所以我们根据他选择的“根”将1,10删掉后,20会作为“根”进行下转)。  

        此时ID为20的数据其没有可以进行下钻的层级

          此时我们再观看报表的展示情况

        关于框架图,当“根”不唯一的时候,其并不会产生扩散效果。

        解决办法:

        当“根”不唯一,我们可以增加一个节点作为当前所有“根”的上一层级,使其汇总到新增的“根”上,当然这个新增的“根”可以作为一个主题名称、公司名称、业务名称存在。如下图所示。

         如对本文中相关的操作仍有疑问,欢迎私信咨询。

        希望能帮助各位。双击三连。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论