excel服务器明细表不显示,Excel Server Tutorial

22.3 使用外部数据源中的表/视图

外部数据源中的表或视图被注册了以后,有权限的设计者就可以在设计时使用它们。

能够使用它们的场合包括:

定义填写规范

定义表间公式

在模板上映射数据表

Oracle外部数据源查询优化

想获得外部数据源中的数据,常见的做法是定义一个提数表间公式,用外部数据源的表作为来源表。

需要大家知道的是,Excel服务器所用的数据库是SQL Server,所有对数据的读写功能,全部是在SQL Server 数据库中执行,即使是读取其它数据库的外部数据源的数据,也是从SQL Server 中向其它数据库发出一个查询命令,其它的数据库把查询的结果返回给SQL Server,SQL Server再把结果反馈到界面上,我们就能看到查出的数据。通过SQL Server去查询其它数据库的数据,会有一个限制,就是利用不到其它数据库中的索引,当外部数据源表中数据量很大时,查询速度会比较慢。为了解决这个问题,针对Oracle 外部数据源,专门设计了查询优化的功能。

当我们定义一个提数公式,其来源数据表选择了Oracle外部数据源的表后,界面上可能会出现如下的选项:

“以Oracle 为外部数据源时,优化执行速度....”,如下图所示。

d6464c2423d391a73e75cea67ddc53a0.png

图中可见,执行速度有两种可选的模式:普通模式和优化模式。当然优化模式执行速度更快,所以我们肯定愿意选择优化模式。但是,要想选择优化模式,您定义的表间公式必须同时满足以下条件:

1)表间公式的来源数据,都是同一个oracle外部数据源中的表

2)筛选条件或填充方式中,不能用到:结算年、结算月、结算日等带结算时间的函数,此集合函数。

3)筛选条件或填充方式中,不要用到“本报表.明细表.字段”

如果不能同时满足以上条件,就不能选择优化模式,只能选择普通模式,相应地,也就达不到优化查询速度的目的。至于为什么要满足以上条件,涉及到具体的数据库查询处理方式,这里不细说,只说明一点,满足这些条件保证了,所做的数据库查询只需要对Oracle 数据库查询,不需要对Oracle的表和SQL Server的表联合查询。 单纯对Oracle 数据库查询,可以优化,而一旦需要对Oracle 的表和SQL Server的表做联合查询,就会受到 SQL Server 的制约,就无法做查询优化。

这也提示了我们针对Oracle外部数据表定义提数公式时的一个原则,就是,让提数公式做的事情尽量“单纯”,宁可多写几条公式。 比如,我们自己做的Excel服务器的系统要管理订单,订单本身是Excel服务器的模板上定义的表,订单上用的产品信息来自SAP系统,是Oracle外部数据源的表,以往,我们可能定义一条公式,公式的来源数据是两个表,一个是oracle 外部数据源的产品表,另一个是订单模板上的订单表,这样写公式很简洁,一条公式就把要查的数据查了,但是不够“单纯”,因为一条公式,既用到了oracle中的表,也用到了SQL Server中的表,这样的公式是无法优化的。为了达到优化的目的,我们需要把这一条公式拆成两条公式,一条查Oracle 中的产品,另一条查订单,如此满足了优化的条件,查Oracle 产品的公式就可以选优化模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值