• 最新功能
  • 1 EXCEL服务器概述
  • 2 安装与卸载
  • 3 基本概念&基本操作
  • 4 建立部门、角色、用户
  • 5 建立基础数据
  • 6 管理业务数据
  • 7 熟练填报
  • 8 数据查询
  • 9 工作流
  • 10 回写公式
  • 11 统计报表
  • 12 应用系统管理
  • 13 系统管理模块的常用操作
  • 14 填报网站
  • 15 移动端应用
  • 16 系统外观设计
  • 17 模板管理
  • 18 角色和用户
  • 19 数据项、数据表、数据库
  • 20 数据规范详解
  • 21 工作流详解
  • 22 表间公式详解
  • 23 实时系统、实时管理
  • 24 即时通讯
  • 25 文档管理
  • 26 网盘
  • 27 和其它系统的数据集成
  • 27.1 建立外部数据源
  • 27.2 注册外部数据源中的表/视图
  • 27.3 使用外部数据源中的表/视图
  • 27.4 如何保证外部数据的安全
  • 28 和CAD软件的集成
  • 29 与移动端其它应用的集成
  • 30 安装与部署的高级话题
  • 31 表达式函数详解
  • 32 通过VBA程序操纵EXCEL服务器
  • 33 通过命令行操作ES客户端
  • 34 商业智能BI系统
  • 35 WebApi的应用
  • 36 共享文档
上一节 下一节

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

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

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

  • 定义填写规范
  • 定义表间公式
  • 在模板上映射数据表

提数公式(以Oracle外部数据源为来源数据)的优化

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

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

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

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

(当提数公式的【来源数据】中含有Oracle外部数据源中的表时,则此提数公式会默认为:【自动判断执行模式】:此设置对符合优化条件的提数公式成功保存进行优化,以提高提数公式执行速度。不满足优化的条件的公式成功保存但不优化。)

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

可优化条件:

1.【来源数据】中全为相同Oracle外部数据源中的表。
 2.【筛选条件】或填入表达式中不使用[日期与时间函数]中的结算时间和[集合函数]中[此集合(<值1>,<值2>,...,<值n>)]此类不可翻译的函数。
 3.【筛选条件】或【填充方式】中不使用[本报表.明细表]。

注意:目前当不满足第二个条件时会出现错误提示,需进行手动确认。

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

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

若用户数据不满足优化条件或不想对提数公式时行进化优化,则打开提数公式窗口,选中【高级】选项卡,如下图设置为:“【手动选择执行模式】且选中【普通】”。
 说明:【手动选择执行模式】即手动选择优化还是不优化。

注意:选中此设置时,即使提数公式满足优化条件,公式也不会进行优化。

当设置为【手动选择执行模式】+优化。则当提数公式满足优化条件可成功保存执行优化,不满足条件时无法保存且不进行优化。



上一节 下一节