如何实现报表数据的动态层次钻取(二)-创新互联

《如何实现报表数据的动态层次钻取(一)》 介绍了利用复杂 sql 实现动态层次结构的方法,但该方法依赖 Oracle 的递归语法,在其他类型的数据库中难以实现。要想通用地实现此类报表,可以使用下面介绍的“集算脚本 + 本地文件”的方法。

创新互联主营虹口网站建设的网络公司,主营网站建设方案,重庆APP开发公司,虹口h5微信小程序开发搭建,虹口网站营销推广欢迎虹口等地区企业咨询

《各级部门 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

网站标题:如何实现报表数据的动态层次钻取(二)-创新互联
文章源于:https://www.cdcxhl.com/article24/cddice.html

成都网站建设公司_创新互联,为您提供做网站移动网站建设App设计网站营销微信小程序静态网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计