语义层设计之多表级联的性能分析

 

使用语义层设计报表,当出现多表级联时,视图之间的关联方式可能不只一种,有时会有多种关联方式。但是,不同的关联方式对性能是否有影响?会不会对报表的运算速度有影响呢?下面我们就分析一下多表级联的性能。

假设有这样的三张表,客户类型表(类型编号、类型名称),客户表(客户编号,客户名称,客户类型),合同表(合同编号、合同金额、客户编号,……),其关联关系一目了然,客户类型表通过类型编号和客户表关联,为一对多,客户表通过客户编号和合同表关联,也是一对多。现在需要通过语义层设计报表,报表样式如下图

这张表乍一看,是跨表关联,即表1和表2关联,表2再和表3关联,而最终的报表里只需要显示表1和表3。于是,有人在语义层中为表1(客户类型表)定义了和表3(合同表)的关联。

设置关联表达式:合同.客户编号 in( 客户.select(客户编号,false,客户类别.类别编号 == 客户.客户类别))

设置关联关系:一对多

最后,从语义层中拖拽出来的报表设计如下图

从上述做法,我们分析一下引擎的计算次数(假设合同表10000条记录,客户表1000条记录,客户类型是10条记录):

首先,对合同表的每一条记录都要计算一次( 客户.select(客户编号,false,客户类别.类别编号 ==客户.客户类别 )),而括号中的表达式是对客户表进行遍历,求出符合客户类别.类别编号 == 客户.客户类别条件的表达式(即遍历1000次),而客户类别有几个就要重复多少遍,因此最终的遍历次数是10*1000*10000,即一亿次遍历;

其次,从比较运算来看,这个做法需要做两次比较,即比较合同的客户编号是否in括号里的客户编号,还要比较客户类别是否相等,我们假设按平均值来算,每种客户类型有100个客户,因此每次遍历要进行101次比较,比较运算需要进行101亿次,速度非常慢。

其实,我们仔细观察上面的表,不难发现,客户表里有客户类型字段,我们可以把表间关系简化成表2和表3的关系,在表2(客户表)的客户类型字段中定义和表3(合同表)的关系,如下

设置关联表达式:客户.客户编号 == 合同.客户编号

设置关联关系:一对多

最后,从语义层中拖拽出来的报表定义如下

其中的客户类型用显示值显示成名称,可以在语义层中为该字段定义显示值属性,用户拖拽报表的时候不用管。

我们分析一下这样的做法:

对客户表进行分组,然后对着客户表的所有记录,把合同表也进行分组,这样运气好的合同表记录可能遍历一次就找到了归宿,运气不好的合同表记录可能要第1000次才能找到归宿,我们取个平均值,500,于是总的遍历次数为500*10000,即遍历500万次。对于每一次遍历,只需要进行一次比较运算,即计算客户编号是否相等,因此,比较运算次数为500万次。

当然,对于第一种做法还有一个比较大的弊端,也就是说,(客户.select(客户编号,false,客户类别.类别编号 == 客户.客户类别))表达式需要在内存中保留一个数组,该数组如果数据量大的话,还会占用比较多的内存。

综上所述,第二种做法的速度大大优于第一种做法。因此在使用语义层设计报表时,如遇到多级关联的情况,尽量化解为二级关联,会加快报表的运算速度。
引自:润乾报表知识库
原文链接:语义层设计之多表级联的性能分析

相关文章:润乾报表:远程设计器使用语义层的一个问题解决;语义层设计之数据表视图;润乾报表语义层介绍;语义层设计之指标

其他相关内容: 润乾 ; 商业智能BI联盟 报表软件Java报表商业智能解决方案web报表的扩展功能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第1 章 Designer 简介 1.1 概述 ...................................................... 8 1.2 Designer 和 Universe 基本原理 ............................. 8 1.3 如何使用 Designer 来创建 Universe? ...................... 12 1.4 谁是 Universe 的设计员? ................................. 15 1.5 Universe 开发过程简介 .................................... 16 1.6 Designer 示例材料 ........................................ 19 第2 章 执行基本操作 2.1 概述 ..................................................... 21 2.2 启动 Designer ............................................ 21 2.3 导入 Universe ............................................ 25 2.4 打开 Universe ............................................ 27 2.5 导出 Universe ............................................ 28 2.6 保存 Universe ............................................ 30 2.7 关闭 Universe ............................................ 32 2.8 创建 Universe ............................................ 32 2.9 设置 Universe 参数 ....................................... 35 2.10使用 Designer 用户界面 ................................... 67 2.11使用 “查找并替换” .......................................71 2.12组织显示 ............................................... 74 2.13选择模式显示选项 ......................................... 79 2.14打印 Universe ............................................ 86 第 3 章 创建包含和联接的架构 3.1 概述 ..................................................... 89 3.2 什么是模式? ............................................. 89 3.3 插入 ................................................... 91 3.4 使用派生 ............................................... 95 3.5 定义联接 ................................................. 99 3.6 定义特定的联接类型 ...................................... 116 3.7 使用基数 ................................................ 132 3.8 检查 Universe ........................................... 140 第 4 章 解决架构中的联接问题 4.1 概述 .................................................... 145 4.2 什么是联接路径问题? .................................... 145 4.3 定义别名 ................................................ 147 4.4 定义上下文 .............................................. 152 4.5 解决环路 ................................................ 162 4.6 解决断陷阱 ............................................ 188 4.7 解决扇形陷阱 ............................................ 193 4.8 以图形方式检测联接问题 .................................. 199 4.9 检查 Universe ........................................... 202 第 5 章 构建 Universe 5.1 概述 .................................................... 207 5.2 Universe 构建简介 ....................................... 207 5.3 使用 “Universe”窗格 ................................... 210 5.4 有关类、对象和条件的基本操作 ............................211 5.5 定义类 ..................................................212 5.6 定义对象 ................................................215 5.7 定义次结构 ............................................247 5.8 使用次结构的级联值列 ................................251 5.9 使用值列 ..............................................254 5.10自动创建基本的 Universe .................................269 5.11测试 Universe ...........................................276 第6 章 生成 OLAP Universe 6.1 概述 ....................................................278 6.2 依据 OLAP 多维数据集源生成 OLAP Universe ................279 6.3 创建 OLAP 连接 ..........................................280 6.4 创建 OLAP Universe ......................................282 6.5 保存并导出 OLAP Universe ................................285 6.6 更新 OLAP Universe ......................................286 6.7 OLAP 至 Universe 映射 ...................................286 第7 章 依据元数据源创建 Universe 7.1 概述 ....................................................295 7.2 依据元数据源生成 Universe ...............................295 7.3 选择元数据源 ............................................296 7.4 XML 元数据源 ............................................298 7.5 Oracle 分析工作区 .......................................308 第8 章 创建 Universe 以用作 Metric 8.1 概述 ....................................................321 8.2 使用 Universe 来构建 Metric .............................321 8.3 企业 Metric ............................................. 324 8.4 Process Analysis 统计图的 Universe 配置 ................. 327 8.5 为基于集合的 Metric 设计 Universe ....................... 330 第 9 章 优化 Universe 9.1 概述 .................................................... 333 9.2 使用聚合 .............................................. 333 9.3 使用 @ 函数 ............................................. 346 9.4 使用外部策略定制 Universe 创建 .......................... 354 9.5 使用分析函数 ............................................ 367 第 10 章 管理 Universe 10.1概述 .................................................... 379 10.2部署 Universe ........................................... 379 10.3针对 Universe 设置访问限制 .............................. 380 10.4与多个设计员一起工作 .................................... 389 10.5链接 Universe ........................................... 390 10.6在一个 Universe 中包含另一个 Universe ................... 399 10.7管理用户和登录 .......................................... 400 10.8优化 Universe ........................................... 402 附录 A 使用示例资料 A.1 概述 .................................................... 405 A.2 Club 数据库 ............................................. 405 附录 B Business Objects 信息资源 B.1 文档和信息服务 .......................................... 411 B.2 文档 .................................................... 411 B.3 客户支持、咨询和培训 ....................................412 B.4 实用地址一览 ............................................413 附录C 版本发布后的补遗 C.1 概述 ....................................................414 C.2 DBUser/DBPass ...........................................414 索引.............................................415

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值