Cognos PowerPlay Transformer如何使用IQD做为数据源

记得新手入门实习版主macherater问过这个问题。记不清楚了,今天特此发出来提供给大家分享Cognos PowerPlay是一种多维报表解决工具,Transformer则是其建模工具。通过Transformer建立多维模型并生成PowerCube,然后通过PowerPlay展示,这是Cognos多维报表的一般流程。但是Transf...显示全部
记得新手入门实习版主macherater问过这个问题。记不清楚了,今天特此发出来提供给大家分享

Cognos PowerPlay是一种多维报表解决工具,Transformer则是其建模工具。通过Transformer建立多维模型并生成PowerCube,然后通过PowerPlay展示,这是Cognos多维报表的一般流程。
但是Transformer只能使用IQD(Impromptu Query Definition)或者文本数据或者一些桌面数据库如Access等做为数据源,而对于目前流行的关系数据库如Oracle/MS SQL Server等都没有提供直接的连接支持。因此,对于关系数据库,必须先使用Framework Manager生成IQD文件,然后再使用IQD作为Transformer的数据源。
但是Cognos 8 Framework Manager生成的IQD,在Transformer中使用时还是无法连接到数据源,报错:
(TR1008)Transformer couldn’t read the connection information for database [name] from file COGNOS.INI, from the IQD or from Access Manager.


这是由于Cognos 8 Framework Manager生成IQD只包含了数据库名字和查询语句,而没有包含数据库连接信息,一个典型的IQD文件如下
COGNOS QUERY
STRUCTURE,1,1
DATABASE,gosales
TITLE,[gosales].[ACTIVE_INDICATOR_LOOKUP]
BEGIN SQL
{select “ACTIVE_INDICATOR_LOOKUP”.”ACTIVE_INDICATOR” AS “ACTIVE_INDICATOR”, “ACTIVE_INDICATOR_LOOKUP”.”LANGUAGE” AS “LANGUAGE2″, “ACTIVE_INDICATOR_LOOKUP”.”DESCRIPTION” AS “DESCRIPTION”
from “GOSL”.”gort”.”ACTIVE_INDICATOR_LOOKUP” “ACTIVE_INDICATOR_LOOKUP”}
END SQL
COLUMN,0,ACTIVE_INDICATOR
COLUMN,1,LANGUAGE
COLUMN,2,DESCRIPTION
很明显,对于数据库gosales,没有提供相应的连接信息。所以需要手动在cognos.ini(位于cognos安装根目录下,如c:program filescognos)中添加相应的连接信息。
在congos connection的tools->directory->Data Source找到相应的数据源,单击该数据源,然后选择set properties->Connection Tab里可以找到相应的connection string
^User ID:^?Password:;LOCAL;OL;DBInfo_Type=MS;Provider=SQLOLEDB;User ID=%s;Password=%s;Data Source=.;Provider_String=Initial Catalog=GOSL;@COLSEQ=
然后在cognos.ini文件里添加
gosales=^User ID:^?Password:;LOCAL;OL;DBInfo_Type=MS;Provider=SQLOLEDB;User ID=%s;Password=%s;Data Source=.;Provider_String=Initial Catalog=GOSL;@COLSEQ=
如果数据源是Teradata,则需要将connection string中的分号去掉。保存后,再在Transformer中就可以正常使用该IQD作为数据源了。
参考文档:
Cognos KB 1032938 Unable to use an IQD created with Framework Manager: TR1008
Cognos KB 1006192 Adding a DataSource for Transformer to use with an IQD generated by Framework Manager
附:使用Framework Manager生成IQD的方法
首先将要包含的查询对象的Externalize Method修改成iqd


然后新建一个package包含这些查询对象。在发布该package时,选中Location on the network和Generate the files for externalized query subjects

收起
参与11

查看其它 8 个回答lxy2013的回答

lxy2013lxy2013网站架构师anan

收藏中

软件开发 · 2017-04-05
浏览1343

回答者

lxy2013
网站架构师anan
擅长领域: 商业智能数据仓库数据库

lxy2013 最近回答过的问题

回答状态

  • 发布时间:2017-04-05
  • 关注会员:2 人
  • 回答浏览:1343
  • X社区推广