COGNOS Report Studio:在任何其他查询之前运行某个查询

时间:2013-08-30 18:14:02

标签: sql-server performance cognos

COGNOS Report Studio 中是否有任何方法可以让我的查询在任何其他查询之前先运行?

用例:我有一份COGNOS报告,用于比较7-8个存储过程(sps)的结果,以找出数据差异。为此,我必须将sps A的结果与sp B,B与C,A与D的结果等结果相结合。由于COGNOS没有缓存结果(本地缓存没用)并且执行存储过程很慢,我实现了一种伪缓存技术。在报告生成开始时,我将3-4个耗时的sps的结果存储到表中。在COGNOS查询中,我希望数据进行比较,我只需在表格上执行SELECT *问题是如何确保首先运行此缓存生成查询,以便我不会遇到另一个查询在数据填充之前执行SELECT *的情况。

不雅的解决方案:有一个虚拟提示,在实际提示后自动提交。并将缓存生成查询作为虚拟/不可见提示的源查询。因此,在用户在提示中选择值后,会出现另一个提示,该提示会自动提交,因此缓存生成查询会在任何其他查询之前运行。

P.S。

  1. Cognos用于此的原因是,所讨论的sps实际上是其他COGNOS报告的来源,因此通过比较sps我实际上是在比较不同的报告,并且企业希望看到差异报告仅限PDF。

  2. 使用上面提到的伪缓存技术,我将报告的运行时间从50分钟减少到30分钟。此解决方案的问题在于,当使用选项'通过邮件发送报告'运行报告时,有时它会超时,并且不会收到任何邮件。

  3. 如果在其他查询之前有任何其他方式运行COGNOS查询,请告知我们,如果可能,请提供一些方法来提高性能。


    平台 SQL服务器和COGNOS报告工作室

4 个答案:

答案 0 :(得分:0)

对于" live"似乎不是一个好例子。报告。我会利用SQL调度程序预先运行SP,并将最后完成的日期写入调试表。让Cognos从调试表中读取您创建的表以及上次运行日期。

答案 1 :(得分:0)

可能将整个事物包装在另一个存储过程中,让它进行比较并将结果返回给Cognos吗?

答案 2 :(得分:0)

“由于COGNOS没有缓存结果......并且执行存储过程的速度很慢”

不比直接运行它们慢。我同意所有其他意见。您可以将它们包装在另一个存储过程中但我实际上建议您退后一步并进行一些适当的性能调整(即索引和查询计划)

答案 3 :(得分:0)

同意上述所有评论。

您可以使用Cognos Cognos作业运行存储过程来预填充“disrepancy”报告表,然后在该表上运行Cognos Report并一次性将其发送出去。而且我不确定你的数据量是多少,但是对于任何合理的报告都要花30分钟(除非你在数据库中搜索数据,但是你应该在ETL中这样做)。

作为一般规则,我尝试在ETL执行期间执行所有数据检查,然后在加载作业中触发Event Studio代理,以将数据错误/丢失/未加载的报告发送给负责数据质量的人员。