【高手区第二期报表作品】某地区月度统计综合报表
正在加载中...
资料简介:
某地区月度统计综合报表
一、 行业背景
对外贸易
二、 应用方向
业务综合报表因整合各项指标于一体,便于全面了解分析业务的整体运作状况,是领导层较为关注的一类报表。这类报表的底层数据库表链接复杂,表格页面计算密集,在制作时要倍加耐心细致。
三、 ETL工具
存储过程
四、 数据库
DB2 V9.5
五、 需求分析
以下是业务人员提供的报表模板,要求选择年月后生成本年累计金额及其他各项指标。
六、 元数据建模
报表数据来自底层数据库的8个事实表,实际建模时每二个事实表与共享时间维构成一个星型结构组(见下图),形成四个星型结构组(Star Schema Grouping)。这样处理有助于模型清晰简约,避免多事实表关联时可能出现的拼接错误。
七、 报表的拆分与拼接
分析一下报表的总体结构可知,该报表属交叉表,行为度量(或度量计算),列为针对时间维的计算。制作的难点在于如何处理各行出现的多个度量,这也是综合统计报表常有的情况。本实例采取的解决方法是“化整为零、分而治之;无缝对接、形同一体。”
如上图所示,根据度量所在的区域将报表拆分成6块,分别用6个交叉表实现所需计算,然后将各交叉表按顺序放置到一个1X6的表格中,通过设置边框,行高等参数,隐藏多余的行标题,使6个交叉表无缝地拼接到一起,以达到形同一表的效果。
八、 密集计算的实现
处理交叉表时,某些单元格会遇到来自行与列的多轮计算,如果计算顺序出现偏差,将无法得到预期结果。以Crosstab5为例,每个单元格隐含有四轮计算,即本年累计、累计同比、增速(本年累计同比与上年累计同比的差)、增速差(本地增速与全国增速的差)。为了便于理解单元所含的计算,制作时先罗列各轮计算的细项,正确设置求解顺序(Solve Order),然后剪除不用显示的行与列。需要说明的是,这里采用剪除(Cut)而不是删除(Delete)操作,目的在于使这些数据项仅从报表页面中剪裁出去,在查询中仍保留,因为这些数据项要被其他数据项直接或间接引用。
以下是Crosstab5的实战截图:
为保证结果正确,求解计算细分为四轮:
1、 累计金额,包括:
[L0] -本年累计金额,
[L1] -上年累计金额,
[L2] -上二年累计金额,
数据项Solve Order设为1;
(注:公式中[mymonth]为通过下拉列表选择的统计月份)
2、 累计同比,包括:
[T0] -本年累计同比,
[T1] -上年同期累计同比,
数据项Solve Order 设为2;
3、 增速,即:
[Z0] -本年同比与上年同比之差,
数据项Solve Order 设为3;
4、增速差,即本地与全国之增速差,包括:
[ZI1] -项目1之增速差,
[ZI2] -项目2之增速差,
[ZI3] -项目3之增速差,
------
数据项Solve Order 设为4;
验证计算结果正确后,剪除多余的行与列,页面中仅保留的列为(Z0),行为(ZI1、ZI2、ZI3、------),隐藏行标题(Box Type设为None),抹去左边框(边框属性设为None),以避免与前一个交叉表(Crosstab4)的边框重复,取消自动换行(White Space设为No wrap)以确保各行边框横向对齐。最后几行无数据的单元格则用Crosstab Space代替,保证报表外形的完整性。
九、 实际效果展示
以下是报表最终运行效果,所示数据已作虚拟化处理。
一、 行业背景
对外贸易
二、 应用方向
业务综合报表因整合各项指标于一体,便于全面了解分析业务的整体运作状况,是领导层较为关注的一类报表。这类报表的底层数据库表链接复杂,表格页面计算密集,在制作时要倍加耐心细致。
三、 ETL工具
存储过程
四、 数据库
DB2 V9.5
五、 需求分析
以下是业务人员提供的报表模板,要求选择年月后生成本年累计金额及其他各项指标。
[url=/club/attachments/month_1005/1005171643dc98eb96142d9612.jpg]
[/url]六、 元数据建模
报表数据来自底层数据库的8个事实表,实际建模时每二个事实表与共享时间维构成一个星型结构组(见下图),形成四个星型结构组(Star Schema Grouping)。这样处理有助于模型清晰简约,避免多事实表关联时可能出现的拼接错误。
[url=/club/attachments/month_1005/10051716439865377437a03c29.jpg]
[/url]七、 报表的拆分与拼接
分析一下报表的总体结构可知,该报表属交叉表,行为度量(或度量计算),列为针对时间维的计算。制作的难点在于如何处理各行出现的多个度量,这也是综合统计报表常有的情况。本实例采取的解决方法是“化整为零、分而治之;无缝对接、形同一体。”
[url=/club/attachments/month_1005/1005171643e0ff043456458d39.jpg]
[/url]如上图所示,根据度量所在的区域将报表拆分成6块,分别用6个交叉表实现所需计算,然后将各交叉表按顺序放置到一个1X6的表格中,通过设置边框,行高等参数,隐藏多余的行标题,使6个交叉表无缝地拼接到一起,以达到形同一表的效果。
八、 密集计算的实现
处理交叉表时,某些单元格会遇到来自行与列的多轮计算,如果计算顺序出现偏差,将无法得到预期结果。以Crosstab5为例,每个单元格隐含有四轮计算,即本年累计、累计同比、增速(本年累计同比与上年累计同比的差)、增速差(本地增速与全国增速的差)。为了便于理解单元所含的计算,制作时先罗列各轮计算的细项,正确设置求解顺序(Solve Order),然后剪除不用显示的行与列。需要说明的是,这里采用剪除(Cut)而不是删除(Delete)操作,目的在于使这些数据项仅从报表页面中剪裁出去,在查询中仍保留,因为这些数据项要被其他数据项直接或间接引用。
以下是Crosstab5的实战截图:
[url=/club/attachments/month_1005/1005171643e23e3f2db99c780c.jpg]
[/url]为保证结果正确,求解计算细分为四轮:
1、 累计金额,包括:
[L0] -本年累计金额,
[L1] -上年累计金额,
[L2] -上二年累计金额,
数据项Solve Order设为1;
(注:公式中[mymonth]为通过下拉列表选择的统计月份)
2、 累计同比,包括:
[T0] -本年累计同比,
[T1] -上年同期累计同比,
数据项Solve Order 设为2;
3、 增速,即:
[Z0] -本年同比与上年同比之差,
数据项Solve Order 设为3;
4、增速差,即本地与全国之增速差,包括:
[ZI1] -项目1之增速差,
[ZI2] -项目2之增速差,
[ZI3] -项目3之增速差,
------
数据项Solve Order 设为4;
验证计算结果正确后,剪除多余的行与列,页面中仅保留的列为(Z0),行为(ZI1、ZI2、ZI3、------),隐藏行标题(Box Type设为None),抹去左边框(边框属性设为None),以避免与前一个交叉表(Crosstab4)的边框重复,取消自动换行(White Space设为No wrap)以确保各行边框横向对齐。最后几行无数据的单元格则用Crosstab Space代替,保证报表外形的完整性。
九、 实际效果展示
以下是报表最终运行效果,所示数据已作虚拟化处理。
[url=/club/attachments/month_1005/10051716434dcbe5568b0716c1.jpg]
[/url]2010-05-17
页数8
浏览15013
下载129