暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8a MPP Cluster连接Cognos多数据源制作报表时生成的sql分段且报表展示时间过长问题解决方法

原创 灵魂摆渡者 2022-05-31
514

问题描述

Cognos在GBase数据库上开发报表时,发现两表关联生成的SQL是分段的,预期是两表做inner join,关联后生成的数据有 238,124条,对两张表的关联sql直接放在gbase管理器中执行时1~2s即出数据,而cognos报表中需要约125s才能展现结果。生成的本地SQL如下图1所示:

图1

对比oracle生成的正常SQL如下如图2所示:

图2

本文档描述了解决该问题的详细步骤。

软件版本信息

产品名称

版本号

GBase 8a集群

8.6.1.1 build 16.19

Cognos

10.2.1

GBase ODBC

GBaseODBC_8.3.81.53_build53.11_W32(需更新补丁,参见其他说明)

问题原因

Cognos对不同数据源的主题进行查询时,会认为这两个数据源是不同的实例,即使两个数据源是同一个库, Cognos仍然会将它们视为不同的实例。因此cognos在生成SQL时无法将联接推到数据库,也即原生 SQL 是没有连接的,是两个独立选择语句,从数据库检索出结果后,两个独立结果集将在 IBM Cognos BI 服务器上进行本地联接,因此效率上也会表现的与预期有差别。

经过资料分析,配置 Framework Manager可以将处理联接查询推到数据库,提升执行的效率。

解决方法

Cognos Framework Manager创建数据源

Cognos Framework Manager创建项目后,建立两个不同数据源的查询主题,本例中两个数据源分别的gbase_dim、gbase_dws,单击gbase_dim,设置该数据源的属性,查询处理选择“仅限于数据库”,Content Manager数据源属性设置为“gbase_dim”,如下图3所示:

图3

同样,单击gbase_dws,设置该数据源的属性,查询处理选择“仅限于数据库”,Content Manager数据源属性设置为“gbase_dim”(此处设置的数据源要与gbase_dim一致),如下图4所示:

图4

查看每个查询主题的SQL,库名.表名的格式,并单击验证通过,如下图5、图6所示,在测试选项卡中,选择“SQL设置”,此处选择“本地”即可,如图7所示。

图5

图6

图7

在Cognos Framework Manager需要建立两表关联关系,如图8所示:

图8

关联建好后,单击【关系SQL】标签页,单击“测试”按钮,测试能够出来数据即可,如图9所示。

图9

以上设置完成后,发布数据包,在数据包上单击右键,创建数据包,按照引导一步步创建即可,如图10所示。

图10

Cognos Reprot Studio创建报表

登录http://localhost:9300/p2pd/servlet/dispatch,选择“启动-->IBM Cognos Administration”,找到刚才发布的数据包,选择数据包后,打开“启动-->Report Studio”菜单,进行报表制作,选择“新建—>列表”,打开报表设计页面,选择查询主题中要展示的列到报表页面,如图10所示。

图11

完成后,单击菜单栏“工具🡪显示生成的SQL/MDX”,如图11、12所示,查看生成的SQL即是两表关联查询的SQL。

图11

图12

如果想显示展示关联SQL则,设置查询1的属性,SQL联结语法为“显示”,如图13所示,生成的本地SQL如图14所示。

图13

图14

处理显示“仅数据库”选项,设置完成后单击生成报表按钮,即可查看生成的报表,如图15、16所示。

图15

图16

其他说明

因民航现场使用的ODBC软件包非最新版本,需要进行关键文件更新。

解压补丁包中的文件,得到gsodbc8.dll、gsodbc8S.dll两个dll文件,拷贝这两个文件到C:\Windows\SysWOW64 覆盖原来的同名文件即可。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论