返回顶部
首页 > 资讯 > 精选 >如何实现报表数据的动态层次钻取(一)
  • 316
分享到

如何实现报表数据的动态层次钻取(一)

2023-06-02 17:06:21 316人浏览 独家记忆
摘要

在报表项目中有时会遇到进行动态层次钻取的需求,这种报表的开发难度一般都较大。而润乾报表的实现则相对简便很多。下面就以《各级部门 KPI 报表》为例,讲解润乾报表(需要结合集算器实现)实现此类报表的过程。《各级部门 KPI 报表》初始状态如下

在报表项目中有时会遇到进行动态层次钻取的需求,这种报表的开发难度一般都较大。而润乾报表的实现则相对简便很多。下面就以《各级部门 KPI 报表》为例,讲解润乾报表(需要结合集算器实现)实现此类报表的过程。

《各级部门 KPI 报表》初始状态如下图:

如何实现报表数据的动态层次钻取(一)

当前节点是根节点“河北省”,要求报表显示当前节点的下一级节点“地市”,以及汇总的 KPI 数值。Kpi 又分为普通指标和 VIP 指标两类,共四项。当点击“石家庄”进行钻取的时候,要求显示石家庄下一级(区县)的 KPI 汇总指标,如下图:

如何实现报表数据的动态层次钻取(一)

再点击“中心区”进行钻取,要求显示下一级(营业部)的 KPI 汇总指标。以此类推,直到显示到最后一级。如下图:

如何实现报表数据的动态层次钻取(一)

前四级固定是“省、地市、区县、营业部”,后边则是动态的“架构 4、架构 5、架构 6. . . 架构 13”(根节点“省”对应“架构 0”)。

这个报表对应的 oracle 数据库表有两个,Tree(树形结构维表)和 kpi(指标事实表)。其中 Tree 表的叶子节点,通过 id 字段与 kpi 表关联,数据示例如下图:

如何实现报表数据的动态层次钻取(一)

                           Tree表

Tree表

如何实现报表数据的动态层次钻取(一)

                           Kpi表

Kpi表

这个报表的难点在于 1、动态的树形多层数据、标题;2、树形结构与事实表关联。

具体实现步骤如下:

第一步  编写集算脚本 tree.dfx,完成源数据计算。

集算脚本如下:

 A
1=connect(“ora”)
2=[“省”,“地市”,“区县”,“营业部”]|to(4,13).(“架构”+string(~))
3=A1.query(“SELECT id,name FROM tree    START WITH id = ?    CONNECT BY NOCYCLE PRioR pid = id order by id”,id)
4=A3.derive(A2.m(#):title)
5>level=A3.len()
6>xtitle=A2.m(level+1)
7=A1.query@x(“with leaf as( SELECT tree.id id,REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(id, ‘;’),‘[^;]+’,1,2)x FROM tree where connect_by_isleaf=1 START WITH ID = ? CONNECT BY NOCYCLE PRIOR id = pid) select nvl(leaf.x,max(leaf.id)) id,’”+xtitle+“’ title,max(tree.name) name, sum(kpi.kpi1) kpi1,sum(kpi.kpi2) kpi2,sum(kpi.vipkpi1) vipkpi1,sum(kpi.vipkpi2) vipkpi2 from leaf left join kpi on leaf.id = kpi.id left join tree on leaf.x=tree.id group by x order by x”,id)
8return A4,A7

--结束END--

本文标题: 如何实现报表数据的动态层次钻取(一)

本文链接: https://lsjlt.com/news/230786.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何实现报表数据的动态层次钻取(一)
    在报表项目中有时会遇到进行动态层次钻取的需求,这种报表的开发难度一般都较大。而润乾报表的实现则相对简便很多。下面就以《各级部门 KPI 报表》为例,讲解润乾报表(需要结合集算器实现)实现此类报表的过程。《各级部门 KPI 报表》初始状态如下...
    99+
    2023-06-02
  • 如何实现报表数据的动态层次钻取(二)
    《如何实现报表数据的动态层次钻取(一)》介绍了利用复杂 sql 实现动态层次结构的方法,但该方法依赖 Oracle 的递归语法,在其他类型的数据库中难以实现。要想通用地实现此类报表,可以使用下面介绍的“集算脚本 + 本地文件”的方法。《各级...
    99+
    2023-06-02
  • 大数据中如何实现动态列报表
    大数据中如何实现动态列报表,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一般有两种实现方式: 通过报表工具来做如下图这样的,浏览时候选择不同的指标,就可以展现不同的列具体做法参...
    99+
    2023-06-03
  • Python如何实现获取动态图表
    本篇内容介绍了“Python如何实现获取动态图表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!开发工具Python版本: 3.6.4相关模块...
    99+
    2023-06-22
  • sql存储过程如何实现动态根据表数据复制一个表的数据到另一个表
    这篇文章给大家分享的是有关sql存储过程如何实现动态根据表数据复制一个表的数据到另一个表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。动态根据表数据复制一个表的数据到另一个表把t...
    99+
    2024-04-02
  • 大数据报表如何动态选择数据源
    这篇文章主要为大家分析了大数据报表如何动态选择数据源的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“大数据报表如何动态选择数据源”的知识吧。假定一业务量较大的...
    99+
    2023-06-03
  • selenium动态数据获取的方法实现
    目录...
    99+
    2024-04-02
  • mongodb如何实现动态数据源
    在MongoDB中实现动态数据源可以通过使用多个MongoDB连接对象来实现。下面是一个示例代码:```pythonfrom pym...
    99+
    2023-08-23
    mongodb
  • 如何利用报表工具FineReport实现报表列的动态展示
    相信动态列的实现困扰了很多人,大数据量,多字段的加载将会非常耗时,数据又做不到真正的动态灵活。现有的方式都是通过变向的隐藏等方式来实现。那该如何解决呢?这里分享帆软报表设计器FineReport的实现方案,...
    99+
    2024-04-02
  • 普通填报表单元格如何实现数据二次筛选
    这期内容当中小编将会给大家带来有关普通填报表单元格如何实现数据二次筛选,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。问题:普通浏览式报表可以这样 =employee.select(编号, 部门 ==“综合...
    99+
    2023-06-03
  • Python+PyQt如何实现数据库表格动态增删改
    小编给大家分享一下Python+PyQt如何实现数据库表格动态增删改,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!题目描述本次实验为连接数据库的实验,并对数据库进行一些简单的操作,要实现的基本功能如下所示,要能连接并展现数...
    99+
    2023-06-29
  • echarts动态获取Django数据的实现示例
    目录一、后端二、前端三、页面效果四、总结在开发过程中我们需要将我们的数据通过图标的形式展现出来,接下来我为大家介绍一个有趣的框架:Echarts。这是一个使用JavaScript实现...
    99+
    2024-04-02
  • Ajax如何实现动态加载数据
    这篇文章给大家分享的是有关Ajax如何实现动态加载数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这个随笔实现了一个Ajax动态加载的例子。使用.net 的MVC框架实现。这个例子重点在前后台交互,其它略写。开...
    99+
    2023-06-08
  • 大数据报表中如何实现滚动的公告效果
    小编今天带大家了解大数据报表中如何实现滚动的公告效果,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“大数据报表中如何实现滚动的公告效果...
    99+
    2023-06-04
  • C#如何实现dataGridView动态绑定数据
    目录dataGridView动态绑定数据1.动态绑定DataTable数据2.动态添加数据datagridView数据插入dataGridView动态绑定数据 1.动态绑定DataT...
    99+
    2024-04-02
  • 大数据报表中如何添加动态文字水印
    大数据报表中如何添加动态文字水印,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。水印是把一些标识信息嵌入到信息载体中,在不影响原载体内容使用的同时,为原作者提供识...
    99+
    2023-06-04
  • 如何通过动态参数实现周报制作
    需求描述在货品交易系统里,用户不仅要看当天的交易情况,还需要查看一周 / 一个月 / 一年的情况,也叫做周报 / 月报 / 年报。下图所示就是其中订货信息周报的效果。它是如何根据用户输入的一个日期查询出该日期所在周的订货信息表的呢?实现步骤...
    99+
    2023-06-02
  • 易语言如何实现动态数据加密
    易语言对动态数据进行加密,具体方法如下:.版本 2.支持库 dp1.子程序 加密_加密or解密, 字节集.参数 字节集数据, 字节集.参数 加密or解密, 整数型, , 1加密,2解密.局部变量 密码文本, 文本型.局部变量 加密算法, 整...
    99+
    2024-04-02
  • SpringBoot+Mybatis如何实现动态数据源切换
    这篇文章主要介绍了SpringBoot+Mybatis如何实现动态数据源切换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。springboot是什么springboot一种全...
    99+
    2023-06-14
  • vue如何从后台获取数据生成动态菜单列表
    目录1.数据准备2.选择组件3.配置路由4.不出问题这样就可以实现动态路由了5.完整代码1.数据准备 树形菜单基本数据很简单,只需要菜单id,菜单名称,路由地址,图标。下图中的节点i...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作