《如何实现报表数据的动态层次钻取(一)》介绍了利用复杂 sql 实现动态层次结构的方法,但该方法依赖 Oracle 的递归语法,在其他类型的数据库中难以实现。要想通用地实现此类报表,可以使用下面介绍的“集算脚本 + 本地文件”的方法。
《各级部门 KPI 报表》的格式和具体要求参见上一篇文章。有所不同的是,报表数据源从数据库表变为本地文件:tree.b(树形结构维表)和 kpi.b(指标事实表),数据示例如下图:
Tree 文件数据
Kpi 文件数据
说明:Tree 的叶子节点,通过 id 字段与 kpi 表关联。KPI 文件每个 ID 每天都会新增 kpi 记录,总数据量较大。
具体实现步骤如下:
第一步 编写集算脚本 tree.dfx,完成源数据计算,输入参数为当前节点号 id。
集算脚本如下:
A | B | C | |
---|---|---|---|
1 | =[“省”,“地市”,“区县”,“营业部”]|to(4,13).(“架构”+string(~)) | =file(“D:\\files\\tree.b”).import@b() | =file(“D:\\files\\kpi.b”).cursor@b() |
2 | =B1.switch(PID,B1:ID) | =B1.select@1(ID==string(id)) | =B2.prior(PID).rvs() |
3 | =C2.new(ID,NAME,A1.m(#):title) | >xtitle=A1.m(A3.len()+1) | =B1.select(PID==B2) |
4 | =if(C3.len()>0,C3,B1.create().insert(0)) | =B1.new(ID, ~.prior( PID, B2):GID ).select( GID) | =B4.run(GID=GID.m(-1).ID ) |
5 | =C1.switch@i(ID,C4:ID) | =A5.groups(ID.GID:ID;sum(KPI1):KPI1,sum(KPI2):KPI2,sum(VIPKPI1):VIPKPI1,sum(VIPKPI1):VIPKPI2) | =B5.align(A4:ID,ID) |
6 | =C5.new(A4(#).ID:ID,A4(#).NAME:NAME,xtitle:TITLE,KPI1:KPI1,KPI2:KPI2,VIPKPI1:VIPKPI1,VIPKPI2:VIPKPI2) | return A3,A6 |
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 如何在 Java 中创建 Date 对象?(java怎么创建date对象)
- 如何利用 Java Milo 开展网络编程?(如何使用Java Milo进行网络编程)
- 如何高效使用Redis客户端进行故障排查
- 如何使用 getresources 获取文件系统资源?(getresources如何获取文件系统资源)
- 如何利用 Java 的多线程提升效率?(Java的多线程如何提高效率 )
- Java 中 file.exists 方法在不同操作系统下的表现及差异(java file.exists在不同操作系统下)
- 在 Java 中,究竟什么是线程安全?(java中什么是线程安全)
- Java 中 toString 方法该如何使用呢?(java中tostring方法如何使用)
- JavaScript函数式编程有哪些实用技巧?(JavaScript函数式编程有啥技巧)
- Java 中 random 函数的异常处理机制究竟是什么?(java random函数的异常处理机制是什么)
猜你喜欢
AI推送时光机如何实现报表数据的动态层次钻取(二)
后端开发2023-06-02
如何实现报表数据的动态层次钻取(一)
后端开发2023-06-02
大数据中如何实现动态列报表
后端开发2023-06-03
普通填报表单元格如何实现数据二次筛选
后端开发2023-06-03
如何利用报表工具FineReport实现报表列的动态展示
后端开发2024-04-02
Python+PyQt如何实现数据库表格动态增删改
后端开发2023-06-29
大数据报表中如何实现滚动的公告效果
后端开发2023-06-04
sql存储过程如何实现动态根据表数据复制一个表的数据到另一个表
后端开发2024-04-02
Java如何实现自动数据库表的创建
后端开发2023-09-27
如何实现参数和报表间的联动效果
后端开发2023-06-02
vue中如何使用echarts实现动态数据绑定及获取后端接口数据
后端开发2023-07-02
如何使用Oracle结合Mybatis实现取表的10条数据
后端开发2024-04-02
如何使用ajax实现数据库中随机读取5条数据动态在页面中刷新
后端开发2024-04-02
如何实现MySQL底层优化:数据表的水平和垂直分割策略
后端开发2023-11-08
详解如何实现OpenAPI开发动态处理接口的返回数据
后端开发2023-05-15
如何设计一个优化的MySQL表结构来实现数据报表功能?
后端开发2023-10-31
Html5新标签datalist如何实现输入框与后台数据库数据的动态匹配
后端开发2024-04-02
咦!没有更多了?去看看其它编程学习网 内容吧