【问题标题】:COGNOS Report Studio : Make a certain query run before any other queriesCOGNOS Report Studio:在任何其他查询之前运行某个查询
【发布时间】:2013-08-30 18:14:02
【问题描述】:

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

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

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

附:

  1. 使用 cognos 的原因是,有问题的 sps 实际上是其他 COGNOS 报告的来源,因此通过比较 sps,我实际上是在比较不同的报告,而企业希望在仅限 PDF。

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

如果有任何其他方法可以在其他查​​询之前先运行 COGNOS 查询,请告诉我,如果可能,请提出一些提高性能的方法。


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

【问题讨论】:

  • 没有阅读完整的问题,但是你到底为什么要在 cognos 中这样做呢?这是您信任的数据库管理员的工作。

标签: sql-server performance cognos


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    是否可以将整个内容包装在另一个存储过程中,让它进行比较并将结果返回给 Cognos?

    【讨论】:

      【解决方案3】:

      “因为 COGNOS 没有缓存结果......并且执行存储过程很慢”

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

      【讨论】:

        【解决方案4】:

        同意以上所有cmets。

        您可以使用 Cognos Cognos Job 运行存储过程来预先填写您的“差异”报告表,然后在该表上运行 Cognos Report 并一次性通过电子邮件发送出去。而且我不确定您的数据量是多少,但是对于任何合理的报告来说,30 分钟的时间是很长的(除非您正在搜索 GB 的数据,但无论如何您都应该在 ETL 中这样做)。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-09-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多