【问题标题】:How to use Cognos report studio to change default Total() calculation如何使用 Cognos Report Studio 更改默认 Total() 计算
【发布时间】:2014-09-19 08:45:55
【问题描述】:

我有一个交叉表报告,用于计算我的产品的故障率;它有两个度量(PASSCOUNT,FAILCOUNT)和一个计算FAILRATE(FAILCOUNT/PASSCOUNT+FAILCOUNT)

报告布局看起来如此:

                   OEM
                   MODEL
TESTYEAR TESTMONTH PASSCOUNT FAILCOUNT FAILRATE

当我选择“总计”图标时,它会像这样在逻辑上将每一列相加

2012 OCT 7547  697  0.08
     NOV 9570  373  0.04
     DEC 1879  107  0.05
------------------------
Total   18996  1177 0.17

我的用户希望 TOTAL FAILRATE 是

TOTAL FAILCOUNT/(TOTAL PASSCOUNT+TOTAL FAILCOUNT) 

翻译成

1177 / (18996+1177) = 0.058

如何在报告中创建此自定义总计?我正在阅读有关创建查询计算的信息,但我不清楚这是正确的方法。

Cognos Report Studio 8.4 IBM DB2 UDB

【问题讨论】:

    标签: cognos


    【解决方案1】:

    确实可以。有几种方法。

    在您的报告查询中,您拥有组成所需计算的单个查询项(PASSCOUNT、FAILCOUNT 等...)。您可以在同一查询项列表中创建新的数据项/表达式并编辑定义。在左侧,您可以选择使用原始数据库数据源中的列,但您可以选择另一个窗格来实际重用您在同一查询中定义的其他查询项/计算(PASSCOUNT FAILCOUNT FAILRATE)。 Cognos 知道,当您使用同一查询中的其他列创建表达式时,首先要解析这些查询项,以便解析依赖于它们的计算。您想确保您的计算/派生列列在其他相关查询项之后(实际上这可能无关紧要,但在查看时它是有意义的)。另外我相信您必须将失败率查询项/表达式设置为“已计算”作为其聚合方法。

    摘要行可能/可能不会有点棘手。在我面前没有报告工作室,当您将总计部分添加到列表报告并使用新的失败率表达式时,它可能已经足够聪明了......以扩展正确的计算,或者您可能必须使用另一种方法来执行summary 是一个报表表达式。

    您不是在查询中而是在报告的 gui 页面上创建报告表达式(它在工具箱中的边表、singltons 等...)。它有一个表达式构建器,就像在查询中一样,但是您会注意到函数集是不同的,因为它是在查询运行之后完成的,并且随着结果的返回,像您所做的那样简单的事情很好,这只是数学,但您会请注意其他数据库函数在报表表达式中不可用,仅仅是因为它们出现在 html 输出中,而不是在针对数据库运行的查询期间。

    希望这会有所帮助。总之,您正在根据同一查询/结果集中其他列的汇总计算创建一个计算列。这在理论上与这条 SQL 语句相同,因为 SQL 不允许直接这样做,但希望它有助于解释 cognos 正在做什么。

    从 SOMETABLE 中选择 1+2 作为 FAILCOUNT、2+3 作为 PASSCOUNT、(FAILCOUNT/PASSCOUNT+FAILCOUNT) 作为 FAILRATE -- Cognos 能够在同一查询中使用其他聚合计算列的结果,如果您生成 sql,您可以看到它如何安排 SQL 来执行此操作。

    谢谢,

    提姆

    【讨论】:

    • 已接受,但我无法投票赞成您的详细答案。我希望我能。谢谢。
    【解决方案2】:

    在 Crosstab 中选择正确的总数很重要。
    添加总行时,请确保选择自动摘要:

    此选项将确保聚合由每个查询数据项单独确定。
    如果它仍然没有给您预期的结果,那么在查询资源管理器上,选择交叉表上正在使用的查询,然后在 FAILRATE 数据项上,选择计算选项(在属性面板上):
    @987654322 @

    【讨论】:

    • 我确实选择了“计算”。解决方案在解决顺序选项中:我选择了“2”(大于 0)并且它有效。
    • 我想我在第一次回复时错过了你的观点。这是有道理的,我开始明白,当使用交叉表时,计算(及其聚合类型)会相应地驱动每个结果。不过,列表报告似乎并非如此。
    【解决方案3】:

    在交叉表报告中发生的情况是先呈现列数据 n 然后呈现行级数据,因此这是您的问题的原因..要解决此问题,请单击列表列标题“失败”并为其分配解决Order = 1,只要 total 的求解顺序为 NULL 即可。诀窍是 Solve 顺序将在所有其他完成后控制 FAILRATE 的计算。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多