IBM Cognos 最佳实践: IBM Cognos 10 动态查询秘籍

产品:IBM Cognos 10:关注领域:基础架构

本文档旨在为处理 IBM Cognos 10 交付的 Dynamic Query Mode 时的技术和产品行为提供单点参考。

Daniel Wagemann, Cognos 最佳实践顾问, IBM

Daniel Wagemann 是位于加拿大的 Business Analytics 的一名 IBM Cognos 可靠实践顾问。在他从事 IBM Cognos 产品套件的 11 年中,他对 IBM Cognos 部署的所有领域有了广阔的理解。他的专业领域包括课程开发、技术写作、咨询和客户支持。可在 Proven Practices Site 的几乎所有领域内找到他的作品。



Pierre Valiquette, 软件工程师, IBM

Pierre Valiquette 是 IBM Cognos SAP BW 开发团队内的一名软件工程师。他的主要角色包括缩小 SAP BW 开发团队、IBM Cognos Support 组织和客户群之间的差距。Pierre 已经在渥太华实验室工作了 13 年,涉及从客户支持到开发的各个领域。整个过程中他一直以面向客户的工作为重点。



Armin Kamal, Cognos 最佳实践顾问, IBM

Armin Kamal 是位于加拿大的 Business Analytics 的一名 IBM Cognos 可靠实践顾问。他在 IBM Cognos 产品方面具有 9 年的经验,重点是元数据建模和报表设计。他持有渥太华大学的交际与心理学学位,且拥有 ITI 的信息技术文凭。他的专长领域包括课程开发、技术写作、咨询和客户支持。他撰写了大量关于 IBM Cognos Framework Manager 和 IBM Cognos Report Studio 的作品。



Ken Tanaka, 开发经理, IBM

Ken Tanaka 是 Cognos 平台团队中的一名开发经理,主要工作领域是数据访问基础架构和集成。他的技术兴趣领域主要是数据库和报表,具有大约 17 年的软件开发经验。



Wassim Hassouneh, 产品经理, IBM

Wassim Hassouneh 是 Cognos 平台的一名产品经理。他负责 Cognos BI 产品套件中的数据访问功能。Wassim 与客户和 IBM R&D 密切合作来开发 Cognos BI 数据访问平台。Wassim 在商业智能软件方面具有 8 年多的经验,专长是关系型数据访问和建模。



Joachim Limburg, 开发负责人, IBM

Joachim Limburg 是 IBM Cognos 报表服务的开发负责人,该服务特别包含新的 Dynamic Query 功能。Joachim 已经从事软件业务有 23 年了,其中最后 5 年主要专注于 Cognos。他持有计算机信息管理学士学位。



2011 年 7 月 22 日 (最初于 2010 年 10 月 27 日)

免费下载:IBM® Cognos® Express V9.5 或者 Cognos® 8 Business Intelligence Developer Edition V8.4 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

目的

本文档旨在为处理 IBM Cognos 10 交付的 Dynamic Query Mode 时的技术和产品行为提供单点参考。

适用性

本文中概述的技术和产品行为适用于:

  • IBM Cognos 10 Fix Pack 1

例外与除外责任

本文中概述的技术和产品行为可能不适用于未来版本。


IBM Cognos 10 动态查询模式简介

Dynamic Query Mode 是一种增强的基于 Java 的查询模式,提供以下主要功能。

  • 查询优化,通过改进的查询执行语言解决查询复杂性、数据量和及时性期望等相关问题。
  • 通过本地和远程处理以及更佳 MDX 生成的智能结合极大地改进复杂的 OLAP 查询。
  • 安全感知的缓存。
  • 利用 64 位处理的新数据接口。
  • 易于维护和查询可视化。

查询优化

查询的优化通过严格查询规划规则的高级应用实现。这些规划规则纳入了下一代规划方法,该方法更精简且能够提高质量和执行查询的速度。查询规划流程本质上也经过优化,以更好地利用元数据和表达水平缓存,包括提供更高应用程序吞吐量的规划缓存。

通过平衡的本地处理工具实现性能提升

Dynamic Query Mode 制定智能的、基于规则和系统负载的决策,其中部分查询应当在应用程序服务器本地执行,而不是在数据库服务器中远程执行。这确保用户拥最高级的功能,不管基础数据源是否支持商务智能报表的意图。此外,Dynamic Query Mode 包含一个细粒度元数据和单元数据缓存(即一个 trickle fed)以及一个比以前更高的缓存命中率。另外,被发送到远程数据源的查询由执行层根据缓存内容和高级空抑制逻辑进行进一步优化。

安全感知的缓存

当连接到安全的元数据源时,Dynamic Query Mode 下提供的缓存逻辑能够在每个用户访问数据源时确定安全的元数据源。然后该信息用于优化内存使用率和内部表示该用户的数据源元数据的安全视图。也可以设置安全性,这样就可以共享整个 OLAP 维度,提供缓存重用和性能效益。

利用 64 位处理的新数据接口

Dynamic Query Mode 是一个完全支持 64 位的数据访问环境。它允许使用 64 位数据源驱动程序,且可以利用 64 位满足查询处理、元数据缓存和数据缓存的空间。

易于维护和查询可视化

Query visualization 能够让系统管理员分析 Dynamic Query Mode 生成的查询,并可视地看到其处理方式。这些可视化包括来自查询执行的基于成本的信息。该信息允许快速识别模型和查询优化,应用该优化的目的是达到更好的性能。


IBM Cognos 10 架构

兼容查询模式的架构图

图 1 兼容的查询模式架构
图 1 兼容的查询模式架构

如上图所示,查询模式架构包括多个层。当从 authoring studios 之一、报表查看器或 IBM Cognos Software Development Kit (SDK) 等其他来源收到报表请求时,该请求首先会由 Query Planning 层处理。

Query Planning 层的上部是 Query Framework (QFW)。QFW 会检查报表请求并确定它是否包含一个或多个请求,且应当在这里处理查询。针对 SAP BW,比如 Oracle Essbase 和 IBM Cubing Services 类型的数据源的 OLAP 式查询,会转到 OLAP 查询规划器。针对 IBM DB2、Oracle、Teradata 类数据源的关系型查询会转到关系型查询规划器。Dimensionally Modeled Relational (DMR) 式的查询会转到 DMR 查询规划器。

每个查询规划器会生成适当的查询语言,并将请求发送到其各自的查询执行层。对于 OLAP,查询规划器生成一个 MDX (Multidimensional Expressions) 查询并将其发送到多维数据服务(MDDS);对于关系型查询,它生成 SQL 并将其发送到通用数据访问(UDA)模块。对于 DMR,首先处理一个多维数据集构建请求,这会创建和加载一个临时多维数据集,然后生成一个新 OLAP 式的查询,发送该查询并针对该临时多维数据集处理此查询。架构的最低层表示 IBM Cognos BI 支持的单个数据源类型和数据源。通过 MDDS 或 UDA 处理的查询会被转化成一种数据源理解的查询语言惯用语,然后使用一个直接专用接口或通过 ODBC 或 XMLA 等通用接口发送到数据源。

基本的兼容查询请求流

下面是缩略词清单及其在用于描述各种场景的请求流时的含义。

  • MQP (Metadata Query Planner) - 准备和执行元数据查询的内部组件
  • RQP (Relational Query Planner) - 对数据库(SQL)准备和执行关系型查询的内部组件
  • OQP (OLAP Query Planner) - 对 OLAP 数据源准备和执行 OLAP 查询(MDX)的一个内部组件
  • PCODP (PowerCube/PC OLAP Data Provider) - 对 PowerCubes 处理 MDX 和元数据查询的内部组件
  • PPDS PCA (PowerPlay Data Service / PowerCube Adapter) - 用于 PowerCube 数据访问的内部库
  • QF (Query Framework) - 用于元数据查询、数据查询、本地数据处理和结果集的内部库
  • QFS (Query Framework Service) - QF 提供的内部 API
  • QF Planner - 使用模型信息从 V5 查询转换为 SQL 或 MDX
  • QF Provider - 对应于查询(V5、SQL、MDX 或元数据)执行和检索结果
  • RSVP (Report Server) - 调用 QFS 来执行查询、规划布局和呈现报表的 BIBus 服务
  • QS - Query Studio
  • V5 Query - 包含数据项和结果(结构)定义的 QF 查询
  • V5 RS - QF 查询结果集

IBM Cognos 8 Query Studio Metadata Tree Request Flow

以下示例概括在首次打开 IBM Cognos 8 Query Studio 时填充左边元数据的请求流。

图 2 IBM Cognos Query Studio 请求流
图 2 IBM Cognos Query Studio 请求流
  • RSVP 通过 QFS 打开一个会话并发送一个元数据请求 (2)
    参见 qfs_commands.log:
    <qs:command><connection><QFProviderType value="MQProvider"/>...
  • QFS 根据提供程序 API (3) 将请求转交给 MQP 参见 MQProvider_commands.log
  • MQP 通过 QF 打开一个会话并将其请求发送给 PowerCubeODP 提供程序 (4,5) 参见 QFS_Commands.log: <command><connection><dataSourceType value="PowerCubeODP"/>...
  • MQP 基于 PCODP 响应 (a,b) 准备元数据响应并将其返回给 QFS (c)
  • QFS 将请求交还给 RSVP (d)

IBM Cognos 8 Query Studio 数据查询请求流

以下示例概括在将列从左边的元数据树拖入列表中时检索数据的请求流。

图 3 IBM Cognos Query Studio 数据请求流
Figure 3 IBM Cognos Query Studio 数据请求流
  • RSVP 通过 QFS 打开一个会话 (2)
    参见 QFS_Commands.log
  • RSVP 发送一个 V5 查询请求给 QFS (2)
    <connection><QFProviderTypevalue="QueryFrameworkService"/> …
  • QFS 按照 qfs_config.xml 中的配置加载默认提供程序
    <defaultProvider value="CoordinationPlanner"/>
    并根据提供程序 API 将查询交给它
  • Coordination Planner 调用以下查询规划/提供程序来准备 V5 查询 (4~8):RefinerProvider、NoDataModeProvider、MasterDetailProvider、ZeroSuppressionProvider、MDOperationProvider、ReporterModeProvider、OlapQueryProvider
  • 所有这些提供程序以空响应(或输入查询)回应,表示它们不支持除 Refiner(修改查询)和 OQP 之外的任何一块查询
  • OQP 用 providerQuery 中的一个准备好的查询响应 <providerQuery name="Query.0" provider="OlapQueryProvider">
  • Coordination Planner 在规划序列中检查来自所有提供程序的准备响应,并确定仅允许 OQP 参与执行阶段。它调用 OQP 来执行准备好的查询 (9)
  • OQP 针对 PowerCubeODP (10,11) 发送查询给 QFS
  • PCODP RSAPI 被返回到 QFS,QFS 将其交还给 OQP (a,b,c)
  • OQP Post Processing 发生,一个 RSAPI 被返回到 QFS,QFS 将其交还给 RSVP (d,e)

Dynamic Query Mode 的架构图

图 4 Dynamic Query Mode 架构
图 4 Dynamic Query Mode 架构

虽然支持非常类似的请求流,Dynamic Query Mode 的架构大大不同于 Compatible Query Mode。顶部的客户端层显示一个系统管理客户端,它与查询模式交互来显示指标和统计并更改配置设置,比如运行查询日志。

规划层被整合到一个名为 Transformation Layer 的层中。转换层本身不实现任何查询规划逻辑,它仅仅提供一个用于查询转换的执行环境,这些转换存放在名为转换库的独立库中。这是为了将规划逻辑与规划层分离开来。转换库为所有受支持的 OLAP 查询提供查询规划逻辑,且在 Compatible Query Mode 下支持查询框架提供的所有功能。

在 Compatible Query Mode 下 Execution Layer 提供类似的查询执行功能给 MDDS 和 UDA,但是也是整合到单一模式中。它可以独立于查询或目标数据源的类型执行任何查询请求,且能够在单一环境中执行 SQL、MDX 和 XML。这部分地通过混合结果集(HResult)格式实现,该格式允许内存中的单个查询结果同时以 OLAP 型(带有轴、维度和单元)和关系型(表格,行和列)呈现。通过 HResult,执行模式可以在单个运行树中结合 MDX 和 XML,实现更高的灵活性和查询性能。

图 5 Dynamic Query Mode 结果片段
图 5 Dynamic Query Mode 结果片段

数据源适配器层非常类似于 Compatible Query Mode 下的这个层,除了使用的接口不同之外。

基本的动态查询请求流

Compatible Query Mode 由大量单个组件组成,每个组件都有特定用途,共同实现查询规划和处理功能。Dynamic Query Mode 仅有两个主要组件,transformation layerexecution layer,不过还有元数据框架等配套组件。两个模式共享同一环境,且处理相同的查询对象,即规划树运行树

传入 Dynamic Query Mode 的一个报表请求首先会被解析成一个规划树。解析过程会将传入的 V5 查询规范或任何潜在的嵌入式 SQL 或 MDX 查询转换成一个树表示。该树将有两个主要分支,V5Query(描述用户希望看到什么)和 V5QueryResultSet (QRD),后者描述用户希望如何看到结果(列表或交叉表)。

图 6 查询树表示
图 6 查询树表示

有了树之后,规划流程就可以开始了。转换层将应用一个推理过程(类似于前推链接法),并检查规划树中的每个节点,看哪些查询转换适用于该节点。查询转换实现可将 IBM Cognos 查询规范转化成 MDX 查询的逻辑,方便数据源理解。

这在若干传递中完成,且每个传递可能需要若干迭代,直至应用了所有可能的转换。

在这个过程中,转换层通过元数据框架连接到 IBM Cognos 10 Content Manager,以查询适用于正在处理的查询的模型信息。

在应用所有转换之后,规划树已经演变成一个运行树,且准备执行。

图 7 一个简单的 MDX 运行树
图 7 一个简单的 MDX 运行树

运行树处于查询执行的核心,且可以包含多个不同类型的运行树节点。节点可以是 SQL 执行节点、MDX 执行节点、本地处理节点、装饰节点(decoration nodes)等等。结果从运行树(叶子节点)流到顶部(XTree 节点),其中结果以 RSAPI (Resultset API) 格式表示,且可被发送到报表服务以供呈现。

在上述示例中一个 MDX 查询(绿色节点)被发送到一个 MDX 数据源以便执行。返回的结果会经过一些装饰节点(装饰是一个内部流程,允许模式在查询结果的不同部分有所不同),然后是会精简结果(MDX 结果在本质上是多维的)的一个节点,最后是一个会处理精简的结果并排序的排序节点。这是最简单的一种 OLAP 式查询。


配置 IBM Cognos 10 Data Source Connectivity

IBM Cognos 10 Dynamic Query Mode 可利用以下 OLAP 数据源。

  • Oracle Essbase
  • SAP BW
  • TM1

IBM Cognos 10 Dynamic Query Mode 可通过使用维度模式关系(DMR)程序包利用以下关系型数据源。

  • IBM DB2
  • Netezza
  • Microsoft SQL Server
  • NCR Teradata
  • Oracle

IBM Cognos 10 Dynamic Query Mode 使用模型的维度层来对关系型数据源提供 OLAP 查询行为。这些 DMR 模型及其各自的报表必须是在 IBM Cognos 10 环境内新建的。请参阅 IBM Cognos 10 Framework Manager User Guide 获取有关维度建模的准则。

另外请务必参考位于 http://www.ibm.com/support/docview.wss?uid=swg27014782 的一致性页面,获取受支持数据源及其用法的一个完整且最新的清单。

与 IBM Cognos 8 一样,IBM Cognos 10 需要数据源客户端连接安装在用于执行数据访问的所有 IBM Cognos 10 Framework Manager 和 Report Server 机器上。对于上面列出的 OLAP 源,IBM Cognos 10 将对动态和兼容查询使用相同的数据源连接安装。下面部分将详细解释每个数据源连接类型。

Oracle Essbase

理解 IBM Cognos 10 如何连接到 Oracle Essbase

IBM Cognos 10 Compatible Query Mode 和 Dynamic Query Mode 都使用相同的 Oracle Essbase 客户端安装。IBM Cognos 10 Compatible Query Mode 使用 Oracle Essbase bin 目录上的网格 API,而 IBM Cognos 10 Dynamic Query Mode 使用位于 Oracle Essbase JavaAPI lib 目录中的 JAR 文件。可以使用由 Oracle Essbase 客户端安装创建的 Oracle Essbase 环境变量找到这两种文件。下表概述每个 IBM Cognos 10 查询模式使用的文件名和环境变量。

Oracle Essbase 9.3.XOracle Essbase 11.1.X
环境变量连接 文件名环境变量连接 文件名
IBM Cognos 10
Compatible Query Mode
ARBORPATHEssapinu*ESSBASEPATHEssapinu*
IBM Cognos 10
Dynamic Query Mode
ARBORPATHEss_es_server.jar
Ess_japi.jar
ARBORPATHEss_es_server.jar
Ess_japi.jar
Cpld14.jar

当 IBM Cognos 10 连接到一个 Oracle Essbase 9.3.X 数据源时,它会对两种查询模式都使用 ARBORPATH 来查找客户端库。但是,在对 Oracle 11.1.X 数据源使用 IBM Cognos 10 时,Compatible Query Mode 查询会使用 ESSBASEPATH,而 Dynamic Query Mode 查询会使用 ARBORPATH。通常在 Oracle Essbase 安装过程中 ESSBASEPATH 和 ARBORPATH 会被设置为同一位置。

配置到 Oracle Essbase 的连接

下面部分将分步介绍如何配置 Oracle Essbase 连接,以供在 Microsoft Windows 上安装的 IBM Cognos 10 使用。该部分假设已成功安装 Oracle Essbase 客户端。

  1. Start\Run 菜单中输入 cmd 并单击 Enter 键。这会调出命令提示符窗口。
  2. 在命令提示符窗口内,输入 Esscmd 并按下 Enter 键。如果已成功安装 Oracle Essbase 客户端,Oracle Essbase 命令提示符应当启动并显示版本。
    图 8 显示 Oracle Essbase 版本的 ESSCMD 命令窗口
    图 8 显示 Oracle Essbase 版本的 ESSCMD 命令窗口
  3. 如果 Oracle Essbase 发行版本是 11.1.2,无需进一步配置。如果发行版本是 9.3.X 或 11.1.1,那么继续后续步骤。
  4. 找到 c10\configuration\qfs_config.xml 文件并做一个备份。
  5. 使用文本编辑器打开原始 qfs_config.xml 文件。
  6. 找到以下部分:
    <!--provider name="DB2OlapODP" libraryName="essodp93" connectionCode="DO"-->
    		<provider name="DB2OlapODP" libraryName="essodp111" connectionCode="DO">
    <provider name="DB2OlapODP" libraryName="essodp112" connectionCode="DO">
  7. 根据您的 Oracle Essbase 版本,删除 essodp93 或 essodp111 提供程序上的注释标记。本例中使用的 Oracle Essbase 版本是 9.3.X。
  8. 注释掉 essodp112 提供程序。完成之后,条目现在应当如下所示:
    <provider name="DB2OlapODP" libraryName="essodp93" connectionCode="DO">
    	<!--provider name="DB2OlapODP" libraryName="essodp111" connectionCode="DO"-->
    <!--provider name="DB2OlapODP" libraryName="essodp112" connectionCode="DO"-->
  9. 保存更改并关闭文件。
  10. 在 IBM Cognos 10 服务上完成 StopStart 之后将接受对该文件的更改。

Oracle Essbase 特定于数据源的配置设置

下面部分讨论 eb.properties 文件内的任何 IBM Cognos 10 配置设置,在将 Oracle Essbase 用作数据源时予以提供。

Treat Nulls as Zeros within Calculations

影响:在包含 null 数据值的数据项上的计算的结果。

用法:该参数控制在计算中是否将 null 数据值看作 0。如果启用了参数,100 + null 的结果是 100。如果参数被禁用,100 + null 的结果为 null。

默认情况下,这些参数是被禁用的。

与其他参数的互操作性:无

设置该参数:在以下部分的 C10/configuration/xqe/eb.properties 文件内该参数可用。

null.plus.operator=null
null.minus.operator=null
null.multiply.operator=null
null.divide.numerator=null
null.divide.denominator=null
null.modulo.dividend=null
null.modulo.divisor=null

要启用该特性,将 null 值改为 0。完成的条目如下所示。

null.plus.operator=zero
null.minus.operator=zero
null.multiply.operator=zero
null.divide.numerator=zero
null.divide.denominator=zero
null.modulo.dividend=zero
null.modulo.divisor=zero

在重启 IBM Cognos 10 之后会立即接受这些更改。重启之后,该更改会影响通过 IBM Cognos 10 对任何 Essbase 数据源进行的所有查询。在一个分布式环境中,该更改需要在所有执行数据访问的 IBM Cognos 10 服务器上进行。

SAP BW

理解 IBM Cognos 10 如何连接到 SAP BW

由于两种 IBM Cognos 10 查询模式使用相同的 SAP BW 客户端和相同的 librfc32 客户端库,除了实际安装 SAP BW 客户端之外无需其他配置。惟一的例外情况在下面部分介绍。

配置到 SAP BW(仅 64 位)的连接

当将 IBM Cognos 10 作为一个 64 位应用程序安装时,Compatible Query Mode 查询将需要 32 位 librfc32 客户端库,而 Dynamic Query Mode 查询将需要 64 位 librfc32 客户端库。由于 32 位和 64 位库都有相同的名称,直观地区分它们的惟一方式是根据其文件大小。

下面部分提供在将 IBM Cognos 10 作为 64 位应用程序安装时为 Compatible Query Mode 和 Dynamic Query Mode 查询启用 SAP BW 连接所需的步骤。

  1. 从 SAP BW Administrator 或 SAP Marketplace 获取 32 位和 64 位 librfc 客户端库。64 位 librfc 库必须具有 7.10 或更低版本。
  2. 如果使用 SAPCAR 压缩库,使用以下命令解压它。
    sapcar -xvf librfxxxxxx.sar
    图 9 显示 32 和 64 位 Librfc 客户端库的图像
    图 9 显示 32 和 64 位 Librfc 客户端库的图像
  3. 将 32 位库复制C10\bin 目录中。
  4. 将 64 位库复制C10\bin64 目录中。
  5. 停止启动 IBM Cognos 10 服务之后会接受这些客户端库。

SAP BW 特定于数据源的配置设置

下面部分讨论 bw.properties 文件内的任何 IBM Cognos 10 配置设置,在将 SAP BW 用作数据源时予以提供。

Treat Nulls as Zeros within Calculations

影响:在包含 null 数据值的数据项上的计算的结果。

用法:该参数控制在计算中是否将 null 数据值看作 0。如果启用了参数,100 + null 的结果是 100。如果参数被禁用,100 + null 的结果为 null。

默认情况下,这些参数是被禁用的。

与其他参数的互操作性:无

设置该参数:在以下部分的 C10/configuration/xqe/bw.properties 文件内该参数可用。

null.plus.operator=null
null.minus.operator=null
null.multiply.operator=null
null.divide.numerator=null
null.divide.denominator=null
null.modulo.dividend=null
null.modulo.divisor=null

要启用该特性,将 null 值改为 0。完成的条目如下所示。

null.plus.operator=zero
null.minus.operator=zero
null.multiply.operator=zero
null.divide.numerator=zero
null.divide.denominator=zero
null.modulo.dividend=zero
null.modulo.divisor=zero

在重启 IBM Cognos 10 之后会立即接受这些更改。重启之后,该更改会影响通过 IBM Cognos 10 对任何 SAP BW 数据源进行的所有查询。在一个分布式环境中,该更改需要在所有执行数据访问的 IBM Cognos 10 服务器上做出。

IBM Cognos TM1

理解 IBM Cognos 10 如何连接到 IBM Cognos TM1

对于该数据源,安装 32 位 IBM Cognos 10 需要安装 32 位 IBM Cognos TM1 客户端。在这种情况下 Compatible Query Mode 和 Dynamic Query Mode 都将使用相同的 IBM Cognos TM1 客户端来建立连接。安装 64 位 IBM Cognos 10 将需要同时安装 32 和 64 位版本的 IBM Cognos TM1。在这种情况下 Compatible Query Mode 将使用 32 位 IBM Cognos TM1 客户端,而 Dynamic Query Mode 将使用 64 位版本。

不管位深度如何,IBM Cognos 10 都使用一个注册表设置,该设置是通过仅对 IBM Cognos TM1 服务器安装媒介上的 IBM Cognos TM1 客户端执行自定义安装而创建的,以便找到正确的 TM1API.dll。

IBM Cognos 10 UNIX 安装中将 IBM Cognos TM1 客户端软件包含为安装包的一部分。这表示无需额外配置或安装,且 IBM Cognos 10 应当能够开箱即用地连接到 IBM Cognos TM1。

配置到 IBM Cognos TM1 的连接

下面部分提供在 Windows 操作系统上安装 IBM Cognos 10 时为 Compatible Query Mode 和 Dynamic Query Mode 查询启用 IBM Cognos TM1 连接所需的步骤。

  1. 下载 IBM Cognos TM1 9.5.1 服务器安装包之后,将存档内容提取到一个目录。
  2. 在上一步中创建的目录内,双击 setup.exe 启动安装程序。
  3. 在仔细阅读升级警告消息之后,按下 OK 按钮继续。
  4. 单击 Next
  5. 如果许可协议是可以接受的,选择 I accept… 单选按钮,然后单击 Next 按钮继续安装。
    图 10 显示选中 TM1 组件的 IBM Cognos TM1 安装界面
    图 10 显示选中 TM1 组件的 IBM Cognos TM1 安装界面
  6. 从可用产品选项中,确保选中 TM1 产品,然后单击 Next 按钮。
  7. 仔细阅读 .Net Framework 警告按钮,然后单击 OK 按钮。
    图 11 显示 Install Path 和 Custom Install Selection 的 IBM Cognos TM1 安装界面
    图 11 显示 Install Path 和 Custom Install Selection 的 IBM Cognos TM1 安装界面
  8. 选择一个 IBM Cognos 10 目录结构外的安装路径。对于本例安装路径是 C:\Program Files\Cognos\TM1。
  9. 从可用菜单选项中选择 Custom Installation 类型并单击 Next 按钮继续。
    图 12 显示选中 TM1 OLEDB Provider 的 IBM Cognos TM1 安装界面
    图 12 显示选中 TM1 OLEDB Provider 的 IBM Cognos TM1 安装界面
  10. 在可用安装组件中,确保仅选中 TM1 OLEDB Provider。单击 Next 按钮继续。
    图 13 显示 TM1 Client Configuration 无必需项的 IBM Cognos TM1 安装界面
    图 13 显示 TM1 Client Configuration 无必需项的 IBM Cognos TM1 安装界面
  11. 清除所有设置并单击 Next 按钮。
  12. 单击 Install 按钮完成安装。
  13. 停止启动 IBM Cognos 10 服务之后接受该客户端库。

IBM Cognos TM1 特定于数据源的配置设置

下面部分讨论 qfs_config.xml 文件内的任何 IBM Cognos 10 配置设置,在将 IBM Cognos TM1 用作数据源时予以提供。

UseNonEmptyOnDataQueryThreshold

影响:成员使用 Dynamic Query Mode 获取 IBM Cognos 10 报表。

用法:当元组数超过设定的阈值时,该参数控制是否对成员请求应用 NON EMPTY 子句的决策。应用 NON EMPTY 子句允许 MDX 仅返回具有度量数据的成员。如果 MDX 中预计没有度量,假定默认度量。

默认情况下,该参数被设置为 0,表示禁用该特性。参数为 1 表示启用该特性。

与其他参数的互操作性:启用时,该参数连同 UseProviderCrossJoinThreshold 参数一起使用。

设置该参数:该参数在 TM1OlapODPXQE 提供程序下的 C10/configuration/qfs_config.xml 文件内可用。

<parameter name="UseNonEmptyOnDataQueryThreshold" value="1"/>

重启 IBM Cognos 10 之后接受对该文件的更改,并根据 IBM Cognos 10 安装全局应用更改。

UseProviderCrossJoinThreshold

影响:成员使用 Dynamic Query Mode 获取 IBM Cognos 10 报表。

用法:该参数控制何时向查询 MDX 应用 NON EMPTY 子句的决策。如果通过使用 Cartesian 产品计算的元组数超过设定的阈值,将 NON EMPTY 子句应用于查询。NON EMPTY 子句的应用将查询从返回所有成员修改为仅返回具有度量值的那些成员。

默认情况下,该参数被设置为 0,表示禁用该特性。参数大于 1 表示启用该特性。该设置的理想值会随环境而变化,不过一个好的起点是 10000 个元组。

与其他参数的互操作性:该参数连同 UseNonEmptyOnDataQueryThreshold 参数一起使用。

设置该参数:该参数在 TM1OlapODPXQE 提供程序下的 C10/configuration/qfs_config.xml 文件内可用。

<parameter name="UseProviderCrossJoinThreshold" value="10000"/>

重启 IBM Cognos 10 之后接受对该文件的更改,并根据 IBM Cognos 10 安装全局应用更改。

IBM DB2

理解 IBM Cognos 10 如何连接到 IBM DB2

对于该数据源,IBM Cognos 10 Compatible Query Mode 要求安装 IBM DB2 客户端软件。而 IBM Cognos 10 Dynamic Query Mode 仅要求访问 IBM DB2 类型 4 JDBC 驱动程序及其相应的许可文件。下表列出 IBM DB2 数据库的类型和所需的许可文件名。

IBM DB2 DatabaseLicense File Name
DB2 UDB for Linux, UNIX and Windowsdb2jcc_license_cu.jar
DB2 UDB for Linux, UNIX, Window, z/OS, OS/390 and iSeriesdb2jcc_license_cisuz.jar

配置到 IBM DB2 的连接

下面部分分步概述如何配置 IBM DB2 连接以在安装到 Microsoft Windows 上的 IBM Cognos 10 内使用。

  1. 在要用于连接的数据库的 IBM DB2 安装目录内,找到 ..\SQLIB\JAVA 目录。
  2. 在该目录内,找到并复制 db2jcc4.jar 和 db2jcc_license_cu.jar 文件。
  3. 在 IBM Cognos 10 安装目录内,找到 ..\v5dataserver\lib 目录。
  4. 将 db2jcc4.jar 和 db2jcc_licencse_cu.jar 文件粘贴到该目录中。
  5. 为了让 IBM Cognos 10 接受 IBM DB2 驱动程序,需要停止和启动 IBM Cognos 10 服务。

Netezza

理解 IBM Cognos 10 如何连接到 Netezza

对于该数据源,IBM Cognos 10 Compatible Query Mode 使用 Netezza ODBC 驱动程序连接到 Connect 服务器而 IBM Cognos 10 Dynamic Query Mode 使用类型 4 JDBC 驱动程序。

配置到 IBM Netezza 的连接

下面部分分步概述如何配置 Netezza 连接以在安装到 Microsoft Windows 上的 IBM Cognos 10 内使用。

  1. 在 Netezza 客户端安装目录内,找到并复制 nzjdbc.jar。
  2. 在 IBM Cognos 10 安装目录内,找到 ..\v5dataserver\lib 目录。
  3. 将 nzjdbc.jar 文件复制到 v5dataserver\lib 目录中。
  4. 为了让 IBM Cognos 10 接受 Netezza 驱动程序,需要停止和启动 IBM Cognos 10 服务。

Microsoft SQL Server

理解 IBM Cognos 10 如何连接到 Microsoft SQL Server

IBM Cognos 10 Compatible Query Mode 可以通过 Microsoft SQL Server ODBC、OLE-DB 或通过 Microsoft SQL Server 本地客户端连接到 Microsoft SQL Server。对于任何这些连接类型,IBM Cognos 10 Compatible Query Mode 要求客户端安装在与 IBM Cognos 10 软件相同的计算机上。而 IBM Cognos 10 Dynamic Query Mode 仅要求访问 Microsoft SQL Server 类型 4 JDBC 驱动程序。

配置到 Microsoft SQL Server 的连接

下面部分分步概述如何配置 Microsoft SQL Server 连接以在安装到 Microsoft Windows 上的 IBM Cognos 10 内使用。

  1. http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a737000d-68d0-4531-b65d-da0f2a735707&displaylang=en 下载和安装 Microsoft SQL Server JDBC 驱动程序。
  2. 在 Microsoft SQL Server JDBC 驱动程序安装目录内,找到并复制 sqljdbc4.jar 文件。
  3. 在 IBM Cognos 10 安装目录内,找到 ..\v5dataserver\lib 目录。
  4. 将 sqljdbc4.jar 文件复制到 v5dataserver\lib 目录。
  5. 为了让 IBM Cognos 10 接受 Microsoft SQL Server 驱动程序,需要停止和启动 IBM Cognos 10 服务。

NCR Teradata

理解 IBM Cognos 10 如何连接到 NCR Teradata

对于该数据源,IBM Cognos 10 Compatible Query Mode 使用 NCR Teradata ODBC 驱动程序连接到 Connect 服务器而 IBM Cognos 10 Dynamic Query Mode 使用类型 4 JDBC 驱动程序及其所需的配置文件。

配置到 NCR Teradata 的连接

下面部分分步概述如何配置 NCR Teradata 连接以在安装到 Microsoft Windows 上的 IBM Cognos 10 内使用。

  1. 在要用于连接的数据库的 NCR Teradata 安装目录内,找到并复制 terajdbc4.jar 和 tdgssconfig.jar 文件。
  2. 在 IBM Cognos 10 安装目录内,找到 ..\v5dataserver\lib 目录。
  3. 将 terajdbc4.jar 和 tdgssconfig.jar 文件粘贴到该目录中。
  4. 为了让 IBM Cognos 10 接受 NCR Teradata 驱动程序,需要停止和启动 IBM Cognos 10 服务。

Oracle

理解 IBM Cognos 10 如何连接到 Oracle

对于该数据源,IBM Cognos 10 Compatible Query Mode 要求安装 Oracle 客户端软件。而 IBM Cognos 10 Dynamic Query Mode 仅要求访问 Oracle 类型 4 JDBC 驱动程序。要使用的 Oracle JDBC 驱动程序的名称取决于在 IBM Cognos 10 安装内使用的 Java 版本。下表提供 Java 版本对应的 Oracle JDBC 驱动程序名。

Java 版本Oracle JDBC 驱动程序名
1.5ojdbc5.jar
1.6ojdbc6.jar

配置到 Oracle 的连接

下面部分分步概述如何配置 Oracle 连接以在安装到 Microsoft Windows 上的使用 Java 1.6 的 IBM Cognos 10 内使用。

  1. 在要用于连接的数据库的 Oracle 安装目录内,找到并复制 ojdbc6.jar 文件。
  2. 在 IBM Cognos 10 安装目录内,找到 ..\v5dataserver\lib 目录。
  3. 将 ojdbc6.jar 文件粘贴到该目录中。
  4. 为了让 IBM Cognos 10 接受 Oracle 驱动程序,需要停止和启动 IBM Cognos 10 服务。

IBM Cognos 10 Framework Manager 和 Dynamic Query Mode 数据源

在 IBM Cognos 10 Framework Manager 中,当将一个程序包发布到 IBM Cognos 10 时,建模器可以决定在针对该包运行报表时会使用的查询模式。如果您希望切换一个程序包的查询模式,必须使用要求的设置重新发布程序包。

程序包必须只能包含受支持的 Dynamic Query Mode 数据源才能启用 Dynamic Query Mode。如果包中含有不受支持的数据源,在尝试发布程序包时会收到一条错误消息。

为了利用 IBM Cognos 10 Dynamic Query Mode 的优势,确保您的 IBM Cognos 10 环境经过配置,可以连接到受支持的数据源。请参见第 4 部分获取详情。

本节中的以下主题将说明如何配置每个受支持的 Dynamic Query Mode 数据源,以及如何发布使用新查询服务的程序包。

可以在 IBM Cognos Connection 中或通过 IBM Cognos 10 Framework Manager 创建数据源连接。在这些示例中将用到 IBM Cognos 10 Framework Manager;但是配置步骤是相同的。

为 Oracle Essbase 创建一个 Project、Data Source Connection 和 Package

确保已安装 Oracle Essbase 客户端,且在 IBM Cognos 10 Framework Manager 机器和任何 IBM Cognos BI 服务器上进行了配置,以便连接到 Oracle Essbase。

必须通过 Framework Manager 将 Oracle Essbase 数据源发布到 IBM Cognos 10。

  1. 打开 IBM Cognos 10 Framework Manager,然后单击 Create a new project
  2. 在 Project name 框中,输入合适的名称,在本例中使用 Oracle Essbase - GO Sales,然后单击 OK
    Select Languages 对话框出现。
  3. 选择所需的设计语言,在本例中选择 English,然后单击 OK
    Metadata Wizard 出现。
  4. 确保选中 Data Sources,然后单击 Next
  5. 单击 New 按钮创建一个新的数据源连接。
  6. New Data Source 向导中,单击 Next,在 Name 框中,输入 Oracle Essbase,然后单击 Next
  7. Type 下选择 Oracle Essbase
    图 14 New Data Source 向导
    图 14 New Data Source 向导
  8. 单击 Next。
  9. 根据 Oracle Essbase 管理员提供的信息,输入服务器名称并配置登录凭据。
    图 15 New Data Source 向导 – Signon
    图 15 New Data Source 向导 – Signon
  10. 单击 Test the connection,然后单击 Test
    在连接测试的结果页面上,注意 Type/Query Mode 列的结果。
    图 16 Test the connection – 结果
    图 16 Test the connection – 结果
    Compatible 表示 Compatible Query Mode,而 Dynamic 表示新的 Dynamic Query Mode。
  11. 单击 Close,再次单击 Close,然后单击 Finish
  12. 单击 Close
    新数据源出现在列表中。
    图 17 Metadata 向导 - 选择数据源
    图 17 Metadata 向导 - 选择数据源
    下一步是导入一个多维数据集并将其发布到 IBM Cognos 10。
  13. 确保选中创建的 Oracle Essbase 数据源,单击 Next,然后找到并选择所需的多维数据集。
  14. 单击 Next,然后为多维数据集选择所需的语言以及呈现属性维度的方式。
    图 18 Metadata 向导 - 选择语言
    图 18 Metadata 向导 - 选择语言
  15. 单击 Next,保持 Create a default package 选项处于选中状态,然后单击 Finish
  16. Name 框中为程序包输入适当的名称,在本例中使用 Oracle Essbase - GO Sales,然后单击 Yes 打开 Publish Package 向导。
  17. 遵循向导指示做出所需的适当配置并单击 Next,直到出现 Options 界面。
    注意 Use Dynamic Query Mode 选项。
    图 19 Publish 向导 – 选项
    图 19 Publish 向导 – 选项
  18. 选择 Use Dynamic Query Mode 选项,单击 Publish,然后单击 Finish
    该程序包现在可在 IBM Cognos 10 中使用了,且将使用 Dynamic Query Mode 进行报告。在 IBM Cognos Connection 中,程序包使用的查询模式的类型可在程序包属性中加以验证。
    图 20 程序包属性
    图 20 程序包属性

为 SAP BW 创建一个 Project、Data Source Connection 和 Package

确保已安装 SAP GUI,且在 IBM Cognos Framework Manager 机器和任何 IBM Cognos BI 服务器上进行了配置,以便连接到 SAP BW。参见 4.4 节获取详情。

可以直接从 IBM Cognos Connection 或通过 Framework Manager 发布一个 SAP BW 包。但是,将 SAP BW 元数据导入 Framework Manager 将允许在发布程序包之前进行额外建模和测试。在本例中将用到 Framework Manager。有关在 IBM Cognos Connection 中直接发布 SAP BW 包的信息,请参见 IBM Cognos 10 Administration and Security Guide。

  1. 打开 IBM Cognos 10 Framework Manager,然后单击 Create a new project
  2. Project name 框中,输入合适的名称,在本例中使用 SAP BW - GO Sales,然后单击 OK
    Select Languages 对话框出现。
  3. 选择所需的设计语言,本例中选择 English,然后单击 OK
    Metadata Wizard 出现。
  4. 确保选中 Data Sources,然后单击 Next
  5. 单击 New 按钮创建一个新数据源连接。
  6. New Data Source 向导中,单击 Next,在 Name 框中,输入 SAP BW,然后单击 Next
  7. Type 下选择 SAP BW
    图 21 New Data Source 向导
    图 21 New Data Source 向导
  8. 单击 Next
  9. 根据 SAP BW 管理员提供的信息,选择 SAP logon type,输入 Application server 名、System numberClient number 并提供安全登录配置。
    图 22 New Data Source 向导
    图 22 New Data Source 向导
  10. 单击 Test the connection,然后单击 Test。
    结果如下图所示。
    图 23 Test the connection – 结果
    图 23 Test the connection – 结果
    Compatible 表示 Compatible Query Mode,且 Dynamic 表示新的 Dynamic Query Mode。
  11. 单击 Close,再次单击 Close,然后单击 Finish
  12. 单击 Close
    新数据源出现在列表中。
    图 24 Metadata 向导 - 选择数据源
    图 24 Metadata 向导 - 选择数据源
    下一步是导入 SAP BW 元数据。
  13. 确保选中创建的 SAP BW 数据源,单击 Next,然后找到并选择所需的报表对象(InfoQuery、InfoCube 等)导入。
  14. 单击 Next,添加所需的语言,然后单击 Next
    图 25 Metadata 向导 - 选择要导入的语言
    图 25 Metadata 向导 - 选择要导入的语言
  15. Generate Dimensions 界面上,选择显示对象名和组织维度的方式。
    图 26 Metadata 向导 - 生成维度
    图 26 Metadata 向导 - 生成维度
  16. 单击 Next 导入元数据,然后单击 Finish
  17. Project Viewer 中,扩展为 SAP BW 元数据创建的新名称空间,注意到所有维度和关键数字已导入。
    图 27 Project Viewer
    图 27 Project Viewer
    有关使用 SAP BW 元数据的更多信息,请参阅 IBM Cognos 10 Framework Manager User Guide。
    在接下来的步骤中将创建和发布一个程序包。
  18. Project Viewer 中,右键单击 Packages,指向 Create,然后单击 Package
  19. Name 框中,为程序包输入一个适当的名称,在本例中使用 SAP BW - GO Sales,单击 Next,然后选择要包含在程序包中的对象。
    图 28 创建程序包 - 定义对象
    图 28 创建程序包 - 定义对象
  20. 单击 Next,单击 Finish,然后单击 Yes 打开 Publish Package 向导。
  21. 遵循向导指示做出所需的适当配置并单击 Next,直到出现 Options 界面。
  22. 选择 Use Dynamic Query Mode。
    图 29 Publish 向导 - 选项
    Figure 29 Publish 向导 - 选项
  23. 单击 Publish,然后单击 Finish

该程序包现在可在 IBM Cognos 10 中使用了,且将使用 Dynamic Query Mode 进行报告和分析。

为 IBM Cognos TM1 创建一个 Project、Data Source Connection 和 Package

确保已安装 IBM Cognos TM1 客户端,且在 IBM Cognos Framework Manager 机器和任何 IBM Cognos BI 服务器上进行了配置,以便连接到 TM1。参见 4.7 节获取详情。

IBM Cognos TM1 包必须通过 IBM Cognos 10 Framework Manager 发布。

  1. 打开 IBM Cognos 10 Framework Manager,然后单击 Create a new project
  2. 在 Project name 框中,输入合适的名称,在本例中使用 IBM Cognos TM1 - GO Sales,然后单击 OK
    Select Languages 对话框出现。
  3. 选择所需的设计语言,在本例中选择 English,然后单击 OK
    Metadata Wizard 出现。
  4. 确保选中 Data Sources,然后单击 Next
  5. 单击 New 按钮创建一个新数据源连接。
  6. New Data Source 向导中单击 Next,在 Name 框中,输入 IBM Cognos TM1,然后单击 Next
  7. Type 下选择 IBM Cognos TM1
    图 30 New Data Source 向导
    图 30 New Data Source 向导
  8. 单击 Next
  9. 根据 IBM Cognos TM1 管理员提供的信息,输入 Administration HostServer NameSignon 凭据。
    Administration Host 是托管 IBM Cognos TM1 服务器的物理机器的名称。Server Name 是指由管理主机上的一台 IBM Cognos TM1 服务器服务的多维数据集的名称。
    图 31 New Data Source 向导
    图 31 New Data Source 向导
    Compatible 表示 Compatible Query Mode 而 Dynamic 表示新的 Dynamic Query Mode。
  10. 单击 Test the connection,然后单击 Test
    结果如下所示。
    图 32 Test the connection - 结果
    图 32 Test the connection - 结果
  11. 单击 Close,再次单击 Close,然后单击 Finish
  12. 单击 Close
    新数据源出现在列表中。
    图 33 Metadata 向导 - 选择数据源
    Figure 33 Metadata 向导 - 选择数据源
    下一步是导入多维数据集并将其发布到 IBM Cognos 10。
  13. 确保选中创建的 IBM Cognos TM1 数据源,单击 Next,然后选择要导入的多维数据集。
    图 34 Metadata 向导 - 选择多维数据集
    图 34 Metadata 向导 - 选择多维数据集
  14. 单击 Next,如有必要,选择要导入的每个维度和 Alias 表语言。
    图 35 Metadata 向导 - 选择语言
    图 35 Metadata 向导 - 选择语言
  15. 单击 Next,保持 Create a default package 选项处于选中状态,然后单击 Finish
  16. Name 框中,为程序包输入一个适当的名称,在本例中使用 IBM Cognos TM1 - GO Sales,单击 Finish,然后单击 Yes 打开 Publish Package 向导。
  17. 遵循向导指示做出所需的适当配置并单击 Next,直到出现 Options 界面。
  18. 选择 Use Dynamic Query Mode
    图 36 Publish 向导 - 选项
    图 36 Publish 向导 - 选项
  19. 单击 Publish,然后单击 Finish
    该程序包现在可在 IBM Cognos 10 中使用了,且将使用 Dynamic Query Mode 进行报告和分析。

IBM Cognos 10 Administration

Dynamic Query Mode 特有的管理特性

随着 Dynamic Query Mode 的引入,IBM Cognos 10 Administration 中提供新的元素来配置、调优和诊断新查询服务。以下部分将识别新 UI 元素并简要描述每个元素。

Status 选项卡

在 IBM Cognos 10 Administration 中,可在 System 下的 Status 选项卡上看到 Query Service 的指标。导航到 Scorecard 窗格中的 QueryService 服务,查看指标以及 Logging 和 Tuning 设置。

图 37 IBM Cognos Administration - Status 选项卡 - System
图 37 IBM Cognos Administration - Status 选项卡 - System

Scorecard 窗格指出哪些服务器、调度程序和服务可用,且支持这样的管理任务,比如启动和停止服务或设置属性。

Metrics 窗格显示统计信息,且与其他服务一样,某些指标具有可配置的阈值。可通过单击每个指标右边的 Edit 图标(铅笔)编辑它们。

Settings 窗格指出如何配置 Scorecard 窗格中的选中项。通过单击 Settings 窗格右上角的 Set properties 图标,也可以在该部分编辑 Logging 和 Tuning 设置。也可以在 Configuration 选项卡下的 Dispatchers and Services 区域中编辑它们,这将在下一节讨论。

Configuration 选项卡

在 Configuration 选项卡上有 4 个与 Dynamic Query Service 相关的位置。

  • Data Source Connections,用于配置数据源,包括受支持的 Dynamic Query Mode 数据源
  • Content Administration,用于调度查询服务管理任务
  • Dispatchers and Services,用于配置 QueryService 任务
  • Query Service Caching,用于立即执行缓存任务

Data Source Connections

如前所示,Configuration 选项卡下的 Data Source Connections 是为 IBM Cognos 10 创建数据源的地方。

图 38 IBM Cognos Administration - Configuration 选项卡 - Data Source Connections
图 38 IBM Cognos Administration - Configuration 选项卡 - Data Source Connections

在测试连接时,Dynamic Query Mode 受支持的数据源将通过 Dynamic Query 服务显示连接成功。

图 39 Test the connection - 结果
图 39 Test the connection - 结果

Content Administration

Configuration 选项卡下的 Content Administration 现在有一个 New Query 服务管理任务图标,如下所示。

图 40 IBM Cognos Administration - Configuration 选项卡 - Content Administration
图 40 IBM Cognos Administration - Configuration 选项卡 - Content Administration

该新特性可用的任务是能够清理 Dynamic Query 缓存(使用过时的数据避免)或将缓存状态写到(以便进行缓存使用分析)IBM Cognos 10 服务器上的一个文件上。

对于 IBM Cognos TM1,IBM Cognos 10 一方没有缓存,因此这些任务不适用于该数据源。

可根据需要调度和配置每个任务。

图 41 New Query Service Administration Task 向导
图 41 New Query Service Administration Task 向导

在这里您可以指定一个具体的数据源、目录和多维数据集名称,或使用 * character 字符为上述的任何条目清理所有项目。

例如,要为一个 Oracle Essbase 多维数据集写入缓存状态文件,设置将与下图类似。

图 42 New Query Service Administration Task 向导
图 42 New Query Service Administration Task 向导

注意,多维数据集名称和目录名称是一样的。

注意:要找到为这些任务输入的正确语法,在针对考虑中的数据源运行报表之后,您可以使用 Write cache state 特性(在接下来的 Query Service Caching 部分讨论)来为所有缓存编写缓存状态文件。在该文件中您可以看到您关心的数据源的 Data source、Catalog 和 Cube 的适当语法,并将其输入到任务向导中。

Write cache state 设置将写入一个时间戳 XML 文件,显示指定缓存的状态,这有助于验证正清理的缓存以及在 IBM Cognos 开发的指导下进行故障排除。

XML 文件被写入 <C10 Install Location>/logs/XQE 目录,文件名具有以下格式:

SALDump_prefix_datasource name_category name_cube name_timestamp.xml

Example:

SALDump_Essbase_GODB_GODB_1281624776529.xml

样例文件输出:

<?xml version="1.0" encoding="UTF-8" ?> 
	<xqeCacheMetric>
	<dataSource type="EB">
   Essbase 
	  <catalog>
  	GODB 
 		<cube>
  		GODB 
  		<model>/content/package[@name='Essbase']/model[last()]</model> 
  		<status>Active</status> 
			<!-- Cache Metrics --> 
  		<totalrequests>591</totalrequests> 
  		<cachehitcount>587</cachehitcount> 
  		<cachemisscount>4</cachemisscount> 
			<!-- List of partially/Fully Cached dimensions. If there is 
			no level information below dimension tag it implies the 
			root level of the dimension is fully cached and is fetched 
			from the locally available sources (MFW cube).
	  		--> 
  		<dimension>[Order Method]</dimension> 
  		<dimension>[Product]</dimension> 
  		<dimension>[Retailer Geography]</dimension> 
 		 	<dimension>[Retailer]</dimension> 
  		<dimension>[Sales Staff]</dimension> 
  		<dimension>[Sales Territory]</dimension> 
  		<dimension>[Time]</dimension> 
  	  </cube>
  	 </catalog>
  	</dataSource>
  </xqeCacheMetric>

在运行这些管理任务时,所有服务器组都会受到影响。换言之,根据运行的任务,每个 IBM Cognos 10 报表服务器会为指定数据源清理其缓存或将缓存状态文件写入其本地 logs/XQE 目录。

同样,在实际应用中,缓存状态文件可用于验证缓存清理,如下所示。

<?xml version="1.0" encoding="UTF-8" ?> <xqeCacheMetric>No cached cube found matching the criteria: dataSource name = Essbase catalog name = GODB cube name = GODB</xqeCacheMetric>

Dispatchers and Services

在 Configuration 选项卡下的 Dispatchers and Services 中,现在有一个 QueryService 项,用于为 Dynamic Query Mode 配置设置。

图 43 IBM Cognos Administration - Configuration 选项卡 - Dispatchers and Services
图 43 IBM Cognos Administration - Configuration 选项卡 - Dispatchers and Services

服务包括以下可配置设置。

图 44 QueryService - 属性
图 44 QueryService - 属性

Advanced settings 和 Audit logging level 是所有服务的标准设置。Advanced settings 支持由 IBM 提供额外服务设置用于特定的和不常见的场景。

  • Enable query execution trace?
    启用或禁用一个查询执行跟踪。启用查询执行跟踪设置会将本地 MDX 等信息写到 <cognos_install_dir>/logs/XQE 目录内的一个运行树日志。另外写入配置文件信息来捕获用于构造查询的执行和等待时间指标。由于为每个执行的报表生成了日志,日志文件遵循以下命名约定。
    timestamp_reportName/runtreeLog.xml
    timestamp_reportName/profilingLog-#.xml

    例如,执行一个名为 top_sales 的报表会生成一个名为 2010-05-10_11h33m700s_top_sales/runtreeLog.xml 的日志文件、一个或多个名为 2010-09-10_11h33m700s_top_sales/profilingLog-0.xml 的配置文件日志、2010-09-10_11h33m700s_top_sales/profilingLog-1.xml,等等。
    有些报表执行需要执行子查询。子查询执行踪迹存储在主报表目录内的一个独立目录下。子查询目录包含与主报表目录相同的日志元素,即 runTreeLog.xml 和 profilingLog-#.xml。
    如果执行 top_sales­ 报表需要执行一个或多个子查询,这些子查询的踪迹存储在 2010-09-10_11h33m700s_top_sales/subqueries 中。
    可以使用 Dynamic Query Analyzer 分析这些文件,这将在本书的 9.4 节介绍。
  • Enable query planning trace?
    启用或禁用查询规划跟踪,也称为规划树,它捕获一个查询的转换流程。您可以使用该信息深入理解为生成执行树而执行的决策和规则。为使用 Dynamic Query Mode 执行的每个查询记录查询规划踪迹。规划跟踪日志位于报表服务器上,该服务器为以下位置中的请求服务:
    <C10 Install Location>/logs/XQE/reportName/plantreeLog.xml
    由于规划日志很大,在启用该设置时可能会影响查询性能。
  • Disable query plan caching?
    指定服务缓存是否计划可能的重用。缓存查询规划需要额外的资源,且可能不适用于您的环境。例如,如果环境没有大量 CPU 功率,且终端用户请求的性质每一次可能不同,使用 Query Plan Cache 就没有意义。
  • Idle connection timeout
    指定维护空闲数据源连接以便进行重用的秒数。默认设置是 300。有效条目是 0 到 65535。较低的设置会减少连接数,但是以性能作为代价。较高的设置可能会提高性能,但增加数据源连接数。
  • Write model to file?
    指定在执行一个查询时查询服务是否应将模型写到一个文件。该文件仅用于在 Customer Support 的指导下进行故障排除。文件被写到以下位置: <C10 Install Location>/logs/model/packageName.txt

Query Service Caching

如果数据源数据很少变化或需要清理自动调度的缓存清理之间的缓存,那么手动清理缓存可能就是必须的。

Configuration 选项卡下的 Query Service Caching 部分允许手动清理 Dynamic Query 缓存并为一个或多个服务器组将缓存状态写到文件上。

图 45 IBM Cognos Administration - Configuration 选项卡 - Query Service Caching
图 45 IBM Cognos Administration - Configuration 选项卡 - Query Service Caching

有关服务器组的更多信息,请参见 IBM Cognos 10 Administration and Security Guide。

同样,Write cache state 特性会将一个时间戳 XML 文件写到 <C10 Install Location>/logs/XQE 目录,显示所有缓存的状态。该实例中的文件名具有以下格式:

SALDump_all_all_all_timestamp.xml

在分布式安装中,拥有一个缓存的每个报表服务器都会将缓存状态文件写到其本地日志目录。


IBM Cognos 10 Caching

虽然 IBM Cognos BI 的大多数版本具有一定的缓存水平,最新版本增加了服务,确保实现比先前版本无可匹敌的性能提升。该功能与 SAP BWOracle Essbase 数据源相关。

缓存的主要目的是在可能的情况下重用之前执行的结果,避免往返于数据库。缓存的性能优势在以下情况下很显而易见:

  • 报表在具有较小修改的情况下被重新执行
  • 在同一数据集内执行分析
  • 为大型报表执行重复的主细节请求

缓存加载机制在收到和执行请求时执行。

在线分析处理(OLAP)缓存

IBM Cognos v8.2 到 v8.4 在查询某些数据源时利用了一个元数据/数据获取概念。在当前创作的报表的复杂程度下,较大的本地处理控制具有性能优势。另外,一些数据源仍然利用了远程类型方法,其中处理被下推到各个数据库。

本地处理方法(针对 Oracle Essbase 和 SAP BW 的 DQM 行为)背后的基本原则是,从基础数据源检索基本的原生数据并在本地处理其他数据。虽然这是广义的,因为一定程度的聚合、过滤和其他简单功能可能仍然会被发送到数据源,但本地方法可以确保我们避免偶尔出现的陷阱,即在试图将复杂的 SQL/MDX 推向查询数据源时会引起性能低下。

此时,只有本地处理方法使用安全缓存。

本地的 OLAP 报表方法分为两个简单的步骤:元数据和数据获取。当执行一个报表时,我们最初根据级别和/或加入的独特成员检索请求的所有成员(元数据),然后利用检索到的成员来构建 MDX 用作数据检索(事实)。在执行这些调用时,返回的每个结果都被缓存,且当在同一上下文中做出进一步请求时可能会被重新利用。

在安全缓存领域,理解上下文的概念很重要。它基于请求的内容识别结果。例如,使用执行查询的主体、查询了哪个多维数据集、特别使用了哪一年进行过滤等来构建上下文。本质上,缩小同样被发送到数据源的结果的任何内容被看作是一个上下文。如果在同一上下文内作出后续请求,将用到缓存的结果。上下文可能会同时影响元数据和数据缓存。

SAP BW 数据源仍然可以利用远程处理。该方法依赖于基础数据源来处理整个 MDX 请求(除去一些例外情况)。可以通过将查询处理更改为 “Database Only” 来利用该功能,这将在下一段中解释。一些报表非常适合于这种处理 – 例如简单的分组列表报表,比如进行穿透钻取(Drill-through)的目标报表。在这些场景中,由于报表复杂度大大降低,整个请求会因避免了元数据获取部分而受益,仅仅检索数据并将其呈现给用户。但是,该结果不会利用缓存,且不能被重用。

为了对某个查询强制一个特定模式(本地与远程)的行为,必须更改查询提示。在 Report Studio 内,仅选择讨论中的查询,然后在左边的窗格中,在查询提示下选择合适的 “Processing”。默认选项会遵从服务器的默认行为,“Database only” 会强制远程行为,且 “Limited Local” 会强制本地行为。请注意,该更改此时仅在 Report Studio 中可行。所有其他 studios 将使用默认的本地方法处理。

图 46 IBM Cognos Report Studio 查询属性
图 46 IBM Cognos Report Studio 查询属性

一种实用的 OLAP 缓存示例

我们感兴趣的是构建一个报表,为每个销售区域内的所有客户检索 2009 年的所有产品销售。列表报表通过嵌套和分组三个维度创建 – Sales regionCustomerProduct。我们对两个度量感兴趣,购买的 QuantityUnit Price。因为我们仅对去年的结果感兴趣,我们还为 Year 2009 添加了一个 slicer。然后执行了该报表。

图 47 IBM Cognos Report Studio 简单列表报表
图 47 IBM Cognos Report Studio 简单列表报表

报表模式会针对销售区域、客户和产品顺序获取所有成员,并将结果存储在缓存中。

图 48 IBM Cognos Report Studio 报表显示如何将列映射到元数据缓存
图 48 IBM Cognos Report Studio 报表显示如何将列映射到元数据缓存

然后它会使用枚举的成员构造一个 MDX 语句,以检索带有请求的度量的嵌套成员。

图 49 图像显示数据请求所需的 MDX
图 49 图像显示数据请求所需的 MDX

然后简化构建的 MDX 会被发送到数据源来检索事实数据。结果集最初会被存储在缓存中,随后产生所需的输出。

图 50 图像显示数据请求所需的 MDX 以及如何链接回 IBM Cognos Report Studio 报表
图 50 图像显示数据请求所需的 MDX 以及如何链接回 IBM Cognos Report Studio 报表

这里发生了两个阶段,提取所有请求的成员的元数据阶段,和使用事实数据获取这些成员的第二个阶段。

此时,如果报表创建者添加一个计算(例如 Quantity x Unit Price),由于计算涉及到相同的成员和相同的度量,报表模式可以重用来自上一请求的元数据和数据,因此绕过数据源,产生期望的输出。这是可行的,因为从数据库请求的内容不更改,因为计算是在本地处理的。

图 51 图像显示使用缓存进行计算的请求流
图 51 图像显示使用缓存进行计算的请求流

另外,如果用户决定从数据源中添加另一个度量,我们将能够重用元数据(第一个阶段),但是需要重新执行数据获取(第二个阶段),因为添加了一个新度量。

虽然这个例子过分简化了缓存,证明的原则仍然有效。

上下文依存性

如前所述,缓存也依赖于上下文。在上面的例子中,虽然报表中没有包含/映射 year,但是它充当一个上下文,因为它在一个 slicer 中用到。检索的数据是在 2009 年的上下文中。过滤一个不同的年份或添加另一个过滤器会提供一个新的缓存上下文,此时先前的缓存可能就不可重用了。

另一个重要的上下文是用户。每个数据源可能/可以基于专有授权规则和技术保护其数据。因此,用户 X 可能有权查看所有数据,而用户 Y 可能仅能查看数据的有限的一部分。因此,每个用户 id 成为其自己的上下文,且元数据/数据不能在他们之间共享。

要缓存还是不缓存

应当注意,并非所有的数据请求都会被缓存。有些请求/结果类型不会从缓存中受益。例如,非常大批量的报表具有成百上千个页面,因此将结果写入缓存比随后重新执行同一请求要花费更多的时间。而且有些缓存在基础数据源上执行时表现良好,且可能不会因使用缓存而受益。

Dynamic Query Mode 必须确定一个结果是否可以使用在运行时收集的大量数据点存储到缓存中。这些包括一个结果集的密度、一个结果集的大小、执行 MDX 所需的时间,等等。默认情况下,我们将仅可能缓存少于 150,000 的元组。这只是保守限度,它可以轻松增加到 15,000,000 或甚至 150,000,000。请注意,该数字涉及到结果的潜在大小,这是通过将每个维度上包含的所有成员乘以其他维度的所有成员计算得出的。例如,如果一个报表是针对一个给定度量、根据嵌套区域和产品创作的,其中存在 10 个区域和 10 种产品,那么潜在结果是 100 (10 x 10 x 1)。

可以通过打开 bw.properties (SAP BW) 或 eb.properties (Essbase) 和增加以下设置来增加该设置:

lolap.tupleStorageThreshold=150000

也存在其他设置,但不应予以篡改,除非由 Customer Support 或 IBM Cognos Development 特别推荐,在这种情况下他们使用预定义的指标读写缓存,这是根据本地测试预先确定的。

从性能角度来看,请注意,每个结果都存储在已发布包中的所有维度的上下文中。虽然有多个因素影响缓存上的读写性能,设置大量的维度对缓存性能具有负面影响。在为消费者创建程序包时应将一些事项考虑在内,并将维度限制为真正需要的那些。这对于大多数程序包来说并不是显而易见的,但是值得一提。


从 Compatible 转换到 Dynamic Mode

尽管我们竭尽全力让用户毫不费力地从 Compatible Query Mode 到 Dynamic Query Mode 转换报表,但有些情况下在迁移时报表表现不同。这些不同可由这样一个事实解释:即 Dynamic Query Mode 对所有适用的情况应用与相关构造行为一致的明确行为规则。在不能应用这些规则的情况下,报表会出错,生成一条确认潜在问题的错误消息。下面部分详细讨论这些情况。

OLAP 场景

来自同一等级结构的等级的不相邻嵌套

在使用基于 OLAP 的程序包时,具有来自同一等级结构的不相邻等级的报表会产生以下错误:

XQE-PLN-0212 The report nests more than one level from the same hierarchy but they are not adjacent to each other. Please make levels from the same hierarchy adjacent.

以下案例研究将让一个用户逐渐转换一个报表,其中报表创建者以不相邻的格式利用来自同一等级结构的级别。交叉表将 Sales region、Product line 和 Country 分别映射到交叉表的行上。Years 映射到列上。Quantity 是交叉表的度量指标。报表布局描述如下:

图 52 交叉表将 Sales region、Product line 和 Country 分别映射到交叉表的行上。Years 映射到列上。
图 52 交叉表将 Sales region、Product line 和 Country 分别映射到交叉表的行上。Years 映射到列上。

Sales region 和 Country 是同一等级结构上的级别,其中 Sales region 比 Country 级别高:

图 53 显示 Sales region 和 Country 级别的元数据布局图
图 53 显示 Sales region 和 Country 级别的元数据布局图

在 Compatible Query Mode 下执行时,报表会显示以下输出:

图 54 带有数据值的映射交叉表
图 54 带有数据值的映射交叉表

如果在启用 Dynamic Query Mode 且报表被重新执行的情况下重新发布上述报表的程序包,用户会收到以下错误消息:

XQE-PLN-0212 The report nests more than one level from the same hierarchy but they are not adjacent to each other. Please make levels from the same hierarchy adjacent.

为了不出错地执行该报表,Dynamic Query Mode 需要同一等级结构上的级别以同一等级顺序相邻。可以重排上面的示例报表让其在 Dynamic Query Mode 下运行,方法就是将 Country 直接嵌套在 Sales region 旁边(Sales region 和 Country 不由 Product line 分割):

图 55 显示整齐级别的交叉表映射
图 55 显示整齐级别的交叉表映射
图 56 具有整齐级别和数据的映射交叉表
图 56 具有整齐级别和数据的映射交叉表

以不同的、非元数据定义的等级顺序,嵌套来自同一等级结构的级别

在使用基于 OLAP 的程序包时,以不同的、并非根据元数据的等级结构定义的顺序映射来自同一等级结构的级别的报表将产生以下错误:

XQE-PLN-0213 The report nests levels from a hierarchy which breaks the hierarchy level order. Please nest levels according to hierarchy level order.

以下案例研究将让一个用户逐渐转换一个报表,其中报表创建者以不同的、并非由等级结构定义的顺序利用同一等级结构上的级别。交叉表将 Country 和 Sales region 分别映射到行上。Years 映射到列上,且 Quantity 是度量指标。报表布局描述如下:

图 57 交叉表将 Country 和 Sales region 分别映射到行上。Years 映射到列上。Quantity 是度量指标。
图 57 交叉表将 Country 和 Sales region 分别映射到行上。Years 映射到列上。Quantity 是度量指标。

如上所示,Sales region 嵌套在 Country 下面。这种嵌套顺序与 Sales regions 等级结构定义的顺序不一致,如下所示:

图 58 显示 Sales Region 和 Country 级别的元数据视图
图 58 显示 Sales Region 和 Country 级别的元数据视图

在 Compatible Query Mode 下执行时,报表会显示以下输出:

图 59 带有数据的映射交叉表
图 59 带有数据的映射交叉表

如果在启用 Dynamic Query Mode 且报表被重新执行的情况下重新发布上述报表的程序包,用户会收到以下错误消息:

XQE-PLN-0213 The report nests levels from a hierarchy which breaks the hierarchy level order. Please nest levels according to hierarchy level order

为了不出错地执行该报表,Dynamic Query Mode 要求根据等级结构指定的顺序嵌套级别。可以重排上面的示例报表让其在 Dynamic Query Mode 下运行,方法就是将 Country 嵌套在 Sales region 下面:

图 60 重排级别的映射交叉表
图 60 重排级别的映射交叉表
图 61 重排级别且填充有数据的映射交叉表
图 61 重排级别且填充有数据的映射交叉表

XQE-PLN-0215 The report has levels from the same hierarchy on multiple edges. Please place levels from a single hierarchy on only one edge

以下案例研究将让一个用户逐渐转换一个报表,其中报表创建者在多个边缘利用同一等级结构上的级别。看看下面的交叉表:

图 62 Sales region 映射到行且 Country 映射到列边缘的交叉表
图 62 Sales region 映射到行且 Country 映射到列边缘的交叉表

Sales region 映射到行边缘,且 Country 映射到列边缘。在 Compatible Query Mode 下执行时,报表会显示以下输出:

图 63 斜对角上有数据的交叉表
图 63 斜对角上有数据的交叉表

如果在启用 Dynamic Query Mode 且报表被重新执行的情况下重新发布上述报表的程序包,用户会收到以下错误消息:

XQE-PLN-0215 The report has levels from the same hierarchy on multiple edges. Please place levels from a single hierarchy on only one edge.

为了不出错地执行该报表,Dynamic Query Mode 要求根据等级结构指定的顺序在单一边缘嵌套级别。可以重排上面的示例报表让其在 Dynamic Query Mode 下运行,方法就是在行上将 Country 嵌套在 Sales region 下面:

图 64 通过在行上将 Country 嵌套在 Sales region 下面重排交叉表让其在 Dynamic Query Mode 下运行
图 64 通过在行上将 Country 嵌套在 Sales region 下面重排交叉表让其在 Dynamic Query Mode 下运行
图 65 通过在行上将 Country 嵌套在 Sales region 下面重排交叉表让其在 Dynamic Query Mode 下运行,填充有数据
图 65 通过在行上将 Country 嵌套在 Sales region 下面重排交叉表让其在 Dynamic Query Mode 下运行,填充有数据

在 IBM Cognos Analysis Studio 内使用 % of Each Column Total

在使用基于 OLAP 的程序包创建一个 Analysis Studio 报表时,其中同一等级结构的两个级别在相同的边缘上,且选中了将值显示为 ‘% of Each Column Total’ 的选项,每种模式的输出有所不同。

以下场景说明在两种查询模式下运行同一报表所产生的输出的不同。

在 Compatible Query Mode 下执行时,报表显示如下输出。

图 66 子成员的百分比加起来是父成员的 100% 的交叉表
图 66 子成员的百分比加起来是父成员的 100% 的交叉表

如果在启用 Dynamic Query Mode 且报表被重新执行的情况下重新发布上述报表的程序包:

图 67 子成员的百分比加起来是所有父成员的 100% 的交叉表
图 67 子成员的百分比加起来是所有父成员的 100% 的交叉表

在 Dynamic Query Mode 下这会返回每个值的百分比,而在 Compatible Query Mode 下会返回默认成员(通常是根成员)的子成员总数。

当前 Dynamic Query Mode 返回的结果不能由一个报表重新设计覆盖。如果需要 Compatible Query Mode 结果,将排除这种类型的报表,而转向 Dynamic Query Mode。


调试和诊断 Dynamic Query Mode

Dynamic Query Mode 提供很多跟踪功能来帮助诊断与查询相关的问题。可通过 IBM Cognos Administration Portal、经由 QueryService 服务的属性访问 Dynamic Query Mode 的跟踪设置。默认情况下,跟踪文件被写入到 C10 install <cognos_install_dir>/logs/XQE。但是可通过一个配置文件更改配置跟踪输出目录。

查询执行跟踪

启用查询执行跟踪设置会将本地 MDX 等信息写入到 <cognos_install_dir>/logs/XQE 目录内的一个运行树日志。另外写入配置文件信息来捕获用于构造查询的执行和等待时间指标。由于为每个执行的报表生成了日志,日志文件遵循以下命名约定。

timestamp_reportName/runtreeLog.xml
timestamp_reportName/profilingLog-#.xml

例如,执行一个名为 top_sales 的报表会生成一个名为 2010-09-10_11h33m700s_top_sales/runtreeLog.xml 的日志文件、一个或多个名为 2010-09-10_11h33m700s_top_sales/profilingLog-0.xml 的配置文件日志、2010-09-10_11h33m700s_top_sales/profilingLog-1.xml。

一些报表执行需要执行子查询。子查询的执行踪迹存储在主报表目录内的一个独立目录下。子查询目录包含与主报表一样的日志元素,即 runTreeLog.xml 和 profilingLog-#.xml。

如果执行 top_sales­ 报表需要执行一个或多个子查询,这些子查询的踪迹存储在 2010-09-10_11h33m700s_top_sales/subqueries 中。

启用查询执行跟踪

以下部分概述如何启用查询执行跟踪。

  1. 在浏览器中,进入 IBM Cognos Administration 门户。
  2. 单击 Configuration 选项卡。
  3. 选择 Dispatchers and Services 链接。
  4. 选择调度程序链接。
  5. 在可用服务列表内,找到 QueryService 并单击 Properties
  6. 单击 Settings 选项卡显示下面所示的类别。
    图 68 启用了查询执行跟踪的 IBM Cognos Administration
    图 68 启用了查询执行跟踪的 IBM Cognos Administration
  7. 在 Tuning 类别内,找到 Enable query execution trace?
  8. 要启用跟踪,选中右手边的复选框并单击 OK 按钮。跟踪配置更改会自动在 15 秒内生效。

查询规划跟踪

启用查询规划跟踪设置会将与查询转换相关的信息写到 <cognos_install_dir>/logs/XQE 目录内的规划树日志。由于为每个执行的报表生成了日志,日志文件遵循以下命名约定。

timestamp_reportName/plantreeLog.xml

例如,执行一个名为 top_sales 的报表会生成一个名为 2010-05-10_11h33m700s_top_sales/plantreeLog.xml 的日志文件。

尽管在试图决定 Dynamic Query Mode 做出了什么决策来构建执行计划时该跟踪特别有用,但是应谨慎,因为生成的日志文件很大且可能会影响总体查询性能。

启用查询规划跟踪

以下部分概述如何启用查询规划跟踪。

  1. 在浏览器中,进入 IBM Cognos Administration 门户。
  2. 单击 Configuration 选项卡。
  3. 选择 Dispatchers and Services 链接。
  4. 选择调度程序链接。
  5. 在可用服务列表内,找到 QueryService 并单击 Properties
  6. 单击 Settings 选项卡显示下面所示的类别。
    图 69 IBM Cognos Administration 中 QueryService 的属性
    图 69 IBM Cognos Administration 中 QueryService 的属性
  7. 在 Tuning 类别内,找到 Enable query planning trace?
  8. 要启用跟踪,选中右手边的复选框并单击 OK 按钮。跟踪配置更改会自动在 15 秒内生效。

更改默认的日志输出目录

要将日志文件输出更改到一个不同的位置,需要对 <cognos_install_dir>/configuration 目录内的 xqe.config.xml 文件做更改。为此:

  1. 找到备份现有的 ../configuration/xqe.config.xml 文件。
  2. 使用文本编辑器打开原始文件并找到以下部分: <!--logsFolder value="../../logs"/-->
  3. 删除注释并为日志文件添加新的物理位置。对于该例,新的物理位置将是 D:\logs 目录。完成之后,条目应当如下所示: <logsFolder value="D:\logs\"/>
  4. 保存更改并关闭文件。
  5. 停止启动 IBM Cognos 10 服务之后更改立即生效。

IBM Cognos Dynamic Query Analyzer

IBM Cognos Dynamic Query Analyzer (DQA) 是一种实用工具,它为由 Dynamic Query Mode 查询生成的执行树日志提供图形界面。该图形界面允许报表管理员轻松识别 Dynamic Query Mode 查询的所有各个部分。这是易于使用的概览对于简化 Dynamic Query Mode 查询性能的故障排除至关重要。

安装 IBM Cognos Dynamic Query Analyzer

可将 IBM Cognos Query Analyzer (DQA) 安装在一个现有 IBM Cognos 10 安装或其自己的目录中。以下部分逐步指导用户如何安装 DQA 到其自己的目录中。

  1. 双击 issetup 可执行文件启动安装。
  2. 选择一种语言并单击 Next 按钮。
  3. 如果许可协议是可接受的,选择 I agree 单选按钮并单击 Next 按钮。
  4. 选择一个安装目录并单击 Next 按钮。对于本例,安装路径是 C:\Program Files\IBM\cognos\C10。
  5. 如果提示创建目录,单击 Yes 按钮。
  6. 确保选中 Dynamic Query Analyzer Component,然后单击 Next 按钮。
  7. 单击 Next 按钮添加 DQA 到 windows 快捷方式。
  8. 单击 Next 按钮到达安装摘要界面。这将启动安装序列。
  9. 单击 Finish 按钮完成安装。

IBM Cognos Dynamic Query Analyzer 配置

配置 IBM Cognos Dynamic Query Analyzer 访问 IBM Cognos 10 内容

DQA 能够在其用户界面内执行 IBM Cognos 10 报表。为此,将需要配置 DQA 来指向运行中的 IBM Cognos 10 系统。以下部分分步介绍这个配置。

  1. 从 windows 菜单中选择 Start\All Programs\IBM Cognos 10\IBM Cognos Dynamic Query Analyzer
    图 70 IBM Cognos Dynamic Query Analyzer 初始视图
    图 70 IBM Cognos Dynamic Query Analyzer 初始视图
  2. 从可用菜单中选择 Window\Preferences
    图 71 IBM Cognos Dynamic Query Analyzer 首选项视图
    图 71 IBM Cognos Dynamic Query Analyzer 首选项视图
  3. 在左侧窗格中,选择 Server 属性。
    图 72 IBM Cognos Dynamic Query Analyzer 服务器属性
    图 72 IBM Cognos Dynamic Query Analyzer 服务器属性
  4. 在右侧 Server 部分提供 IBM Cognos 的 host 和 port,该服务器包含要分析的报表。
  5. 如果 IBM Cognos 10 应用程序应用了安全性,从下拉列表中选择一个 Namespace,并提供一个有效的用户 id (Name) 和密码。
  6. 一旦完成,单击 Apply 按钮应用配置。
  7. 单击 OK 按钮返回到初始视图。
    图 73 IBM Cognos Dynamic Query Analyzer 初始视图
    图 73 IBM Cognos Dynamic Query Analyzer 初始视图
  8. Windows 菜单中选择 Show View
  9. 在 show view 对话框内,选择 Navigation\Content Store 并单击 OK
  10. 如果之前应用的配置是正确的,该服务器上的 IBM Cognos 10 内容现在应当显示在 Content Store 窗格内,如下图所示。
    图 74 IBM Cognos Dynamic Query Analyzer Content Store 视图
    图 74 IBM Cognos Dynamic Query Analyzer Content Store 视图

配置 IBM Cognos Dynamic Query Analyzer 访问远程系统上的日志

IBM Cognos Dynamic Query Analyzer 既能从物理驱动位置读取日志,也能通过 http 连接读取远程日志。以下部分逐步指导用户通过单一服务器 IBM Cognos 10 windows 安装上的一个 http 连接进行访问日志所必需的设置。

  1. 在 IBM Cognos 10 服务器上,启动 Internet Information Services(IIS) console
  2. 在左侧导航窗格中,导航到 servername\Web Sites\Default Web Site
  3. 单击 Default Web Site 高亮显示它,然后右键单击
  4. 从可用菜单中选择 New\Virtual Directory
  5. 单击 Next 按钮。
  6. 在 Virtual Directory Creation 向导内,提供 XQElogs 的别名并单击 Next 按钮。
  7. 按下位于对话框右边的 Browse 按钮。
  8. 在 Browse for folder 对话框内,遍历到 <install_dir>\ibm\cognos\c10\logs\XQE 目录的目录结构。单击 OK 按钮接受路径。
    图 75 路径为 Logs\XQE 文件夹的 Virtual Directory Creation Wizard
    图 75 路径为 Logs\XQE 文件夹的 Virtual Directory Creation Wizard
  9. 单击 Next 按钮继续。
  10. 确保设置 ReadBrowse 权限,然后单击 Next 按钮。
    图 76 设置了 Read 和 Browse 访问权限的 Virtual Directory Creation Wizard
    图 76 设置了 Read 和 Browse 访问权限的 Virtual Directory Creation Wizard
  11. 单击 Next 按钮,然后单击 Finish 完成虚拟目录的创建。
  12. 通过选择 Start\All Programs\IBM Cognos 10\IBM Cognos Dynamic Query Analyzer 启动 DQA。
    图 77 IBM Cognos Query Analyzer 主视图
    图 77 IBM Cognos Query Analyzer 主视图
  13. 从可用菜单中选择 Window\Preferences
    图 78 IBM Cognos Query Analyzer 首选项视图
    图 78 IBM Cognos Query Analyzer 首选项视图
  14. 在左侧窗格中,选择 Server 属性。
    图 79 IBM Cognos Query Analyzer 服务器属性视图
    图 79 IBM Cognos Query Analyzer 服务器属性视图
  15. Remote Log Access 区域内,向之前创建的虚拟目录提供 Logs directory URL
    如果之前创建的虚拟目录由 IIS 管理员保障安全性,提供一个有效的 Name(UID)Password。通常,这些凭据是实际的服务器凭据,可能不同于 IBM Cognos 10 Namespace 凭据。
  16. 单击 Apply 按钮确认更改,然后单击 OK

使用 IBM Cognos Dynamic Query Analyzer 运行报表并查看远程日志

完成 IBM Cognos Dynamic Query Analyzer 的配置之后,以下部分会提供步骤来:

  • 在 IBM Cognos 10 系统上启用查询执行跟踪。
  • 在 IBM Cognos Query Analyzer 内运行报表。
  • 查看报表运行生成的远程日志。

启用查询执行跟踪

以下部分概述如何启用查询规划跟踪。

  • 在浏览器中,进入 IBM Cognos Administration 门户。
  • 单击 Configuration 选项卡。
  • 选择 Dispatchers and Services 链接。
  • 选择调度程序链接。
  • 在可用服务列表内,找到 QueryService 并单击 Properties
  • 单击 Settings 选项卡显示如下图所示的类别。
    图 80 IBM Cognos Administration QueryService 属性
    图 80 IBM Cognos Administration QueryService 属性
  • 在 Tuning 类别内,找到 Enable query execution trace?
    图 81 在 QueryService 属性上启用了执行跟踪的 IBM Cognos Administration
    图 81 在 QueryService 属性上启用了执行跟踪的 IBM Cognos Administration
  • 要启用跟踪,选中右侧的复选框并单击 OK 按钮。跟踪配置更改会在 15 秒内生效。

在 IBM Cognos Query Analyzer 内运行报表

  1. 启动 IBM Cognos Dynamic Query Analyzer。
  2. Windows 菜单中选择 Show View
  3. 在 show view 对话框内,选择 Navigation\Content Store 并单击 OK。底部的 Content Store 窗格现在应当显示 IBM Cognos 10 Public Folder 内容,如下图所示。
    图 82 显示配置文件跟踪的 IBM Cognos Dynamic Query Analyzer Content Store 视图
    图 82 显示配置文件跟踪的 IBM Cognos Dynamic Query Analyzer Content Store 视图
  4. 在 Content Store 窗格内,找到报表并双击它。对于本例,报表名为 R1,位于名为 Basic 的程序包下。
  5. 一旦报告执行完毕,结果会显示在 DQA 中,如下图所示。
    图 83 显示报表结果的 IBM Cognos Dynamic Query Analyzer
    图 83 显示报表结果的 IBM Cognos Dynamic Query Analyzer

查看 IBM Cognos Dynamic Query Analyzer 内的执行规划(Runtree)日志

  1. 在底部的 Content Store 窗格中,遍历上一节执行的报表的 IBM Cognos 10 结构。对于本例,报表位于 Basic 程序包下,名为 R1
  2. 在 R1 报表下,现在应当可以看到一个带有日期的文件夹,扩展该文件夹来显示 Profile 0 对象。
    图 84 选定配置文件的 IBM Cognos Dynamic Query Analyzer
    图 84 选定配置文件的 IBM Cognos Dynamic Query Analyzer
  3. 双击 Profile 0 对象。界面加载完成之后,runtree 日志会显示在一个图形视图中。
    图 85 显示配置文件图形视图的 IBM Cognos Dynamic Query Analyzer
    图 85 显示配置文件图形视图的 IBM Cognos Dynamic Query Analyzer

运行中的 Dynamic Query Analyzer:一个 Suppression 案例研究

以下部分提供一个工作教程,指导如何使用 Dynamic Query Analyzer 调优报表的性能。

在本案例研究中,一名用户针对为 Oracle Essbase 提供的 Great Outdoors 样例多维数据集创建了一个交叉表报表。交叉表报表以 Quantity 作为度量,Product 作为行边缘,且 Order Method 在列边缘上嵌套在 Retailer 下。创建报表时,用户还从可用工具栏项目中为行和列选择了 suppression。出于本案例研究的需要,报表被保存为 EssbaseVisualNullSupp,位于 GODB Essbase 程序包下。

图 86 IBM Cognos Report Studio 交叉表报表
图 86 IBM Cognos Report Studio 交叉表报表

在 Dynamic Query Analyzer 内查看该报表的 runtree 对象(profile 0)时,它会按照以下屏幕截图显示。

图 87 显示交叉表的配置文件图形视图的 IBM Cognos Dynamic Query Analyzer
图 87 显示交叉表的配置文件图形视图的 IBM Cognos Dynamic Query Analyzer

在该特殊场景的图形视图中,有两个项目比较醒目。第一个项目是位于屏幕顶部的 XV5Suppress 节点,另一个是位于屏幕底部的 MDX 时间节点。这些节点见下面的屏幕截图。

图 88 在 MDX 节点上显示时间的 IBM Cognos Dynamic Query Analyzer
图 88 在 MDX 节点上显示时间的 IBM Cognos Dynamic Query Analyzer

XMDXSelect 节点显示用于满足报表请求的实际 MDX 查询的部分。节点旁边的比例图标用作节点性能的一个可视表示。通过在图形视图中单击节点本身可显示节点的实际属性。

<XMdxSelect id = "349" totalElapsedTime = "13623889552" ownElapsedTime = "11372194645" 
totalCPUTime = "6093750000" ownCPUTime = "4984375000" cellProperties = "null" 
cubeName = "GODB.GODB"> 
</XMdxSelect>

该节点的属性窗格显示在实际节点上花费的时间和总运行时间。在这个例子中,在节点本身上花费的时间是 11372 ms,节点及其子节点的累积时间是 13623 ms。

V5Suppress 节点通过在报表上应用 Suppress\Rows 和 Columns 予以调用。在图形中单击物理节点本身之后,显示以下属性。

<XV5Suppress id = "417">
	<SuppressSpec EdgeNum = "1" nulls = "true" divByZero = "true" 
		zero = "true" overflow = "true">
	</SuppressSpec>
	<SuppressSpec EdgeNum = "0" nulls = "true" divByZero = "true" 
		zero = "true" overflow = "true">
	</SuppressSpec>
</XV5Suppress>

由于存在两个 EdgeNum 条目和 nulls,divByZero 和 overflow 均设置为 true,基于这一属性设置,可以确认用户在行和列上均应用了 zero、divide by zero、overflow 和 null suppression。

此时,正是时候询问报表创建者是否真的需要 divByZero、zero 和 overflow suppression,或他们是否仅想要抑制 nulls。另一个很好的问题就是是否在行和列上都真正需要 suppression。

报表创建者回复说,在行和列上都仅需要 null suppression。报表创建者对报表进行了更改,并将其在同一程序包上保存为 EssbaseVisualJustNullSupp。在 Dynamic Query Analyzer 中查看该报表的 runtree 规划(Profile 0)时,它应当如以下屏幕截图所示。

图 89 在 MDX 节点上显示时间的 IBM Cognos Dynamic Query Analyzer
图 89 在 MDX 节点上显示时间的 IBM Cognos Dynamic Query Analyzer

这次 XMDXSelect 显示以下属性:

<XMdxSelect id = "349" totalElapsedTime = "9753519906" ownElapsedTime = "8441279269" 
totalCPUTime = "5625000000" ownCPUTime = "4562500000" cellProperties = "null" 
cubeName = "GODB.GODB">
</XMdxSelect>

在这个特殊的运行中,在节点本身上花费的时间是 9753 ms,节点及其子节点的累积时间是 8441 ms。

V5Suppress 节点现在显示以下内容:

<XV5Suppress id = "417">
	<SuppressSpec EdgeNum = "1" nulls = "true" divByZero = "false"
		zero = "false" overflow = "false">
	</SuppressSpec>
	<SuppressSpec EdgeNum = "0" nulls = "true" divByZero = "false" 
		zero = "false" overflow = "false">
	</SuppressSpec>
</XV5Suppress>

对于该报表运行,仅在交叉表的行和列边缘上抑制了 nulls。因为需求是仅抑制 nulls,可视的 null suppression 可由实际查询上的 Null suppression 替换。报表创建者接收该请求并作出想要的更改。报表被作为 EssbaseQueryNullSupp 保存在同一程序包下。当在 Dynamic Query Analyzer 中查看该报表的 runtree 规划(Profile 0)时,它应当如以下屏幕截图所示。

图 90 更改后在 MDX 节点上显示时间的 IBM Cognos Dynamic Query Analyzer
图 90 更改后在 MDX 节点上显示时间的 IBM Cognos Dynamic Query Analyzer

这次 XMDXSelect 显示以下属性:

<XMdxSelect id = "342" totalElapsedTime = "9639202713" ownElapsedTime = "8358082342" 
totalCPUTime = "5390625000" ownCPUTime = "4406250000" cellProperties = "null" 
cubeName = "GODB.GODB">
</XMdxSelect>

在这个特殊的运行中,在节点本身上花费的时间是 9639 ms,节点及其子节点的累积时间是 8358 ms。

注意,因为可视化的 suppression 已经从报表上移除,V5Suppress 节点不再出现在图形视图中。

提交 Dynamic Query Mode 测试用例给 IBM Cognos Support

除了 IBM Cognos Support 为与查询相关的支持事件请求的内容之外,还应提交以下项目以便进行 Dynamic Query Mode 查询诊断:

  1. 查询问题的详细描述,以及所需的查询输出或预期的查询行为
  2. 数据源信息,比如:
    • 数据源类型(Oracle Essbase,SAP BW,TM1)
    • 数据源版本
    • 连接字符串
    • 连接客户端版本
  3. 程序包部署和报表规范
  4. 特定数据源类型的 Configuration/XQE 属性文件
  5. Configuration/qfs_config.xml 文件
  6. IBM Cognos 10 Framework Manager 模型
  7. 查询执行跟踪
  8. 查询规划跟踪

参考资料

学习

获得产品和技术

讨论

  • 参与 developerWorks 博客 并加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=677201
ArticleTitle=IBM Cognos 最佳实践: IBM Cognos 10 动态查询秘籍
publish-date=07222011