【问题标题】:IBM Cognos Analytics Selecting top 2 from a datasetIBM Cognos Analytics 从数据集中选择前 2 个
【发布时间】:2021-08-21 00:45:54
【问题描述】:

我正在编写一份报告,其中需要本周和前一周的数据,并比较这两个数据。我的数据中有一个星期列,它们是交易,所以我的数据看起来像:

Amount - Week
13     - 01
19     - 01
11     - 02
10     - 02
13     - 02
12     - 03
18     - 03
15     - 04

我想这是最近两周的结果和金额的总和:

Week 03: 30
Week 04: 15

现在很容易获得最近的一周,只是一个最大值(报告的一周),但是当我想选择第二大时我卡住了。

我试图做一个基本上是“最大值(当周=最大值(周)然后为空,否则周)”的过滤器,但要么我没有弄清楚语法,要么我这种方法不起作用。

我厌倦的其他替代方法是 rank() 功能,然后是在 (1, 2) 中选择排名的查询,但无论出于何种原因,我都无法使用这种方法,只得到错误

The function "to_char" is being used for local processing but is not available as a built-in function, or at least one of its parameters is not supported.

我认为这与聚合有关(每周出现多条记录)。无论如何,我有点卡住了,错误消息没有给我任何线索。非常感谢一些帮助!

【问题讨论】:

  • 交叉表?我没有从您的问题中看到为什么需要交叉表。看起来你需要一份清单。以演示问题的样本为基础的样本报告怎么样。您可以将报告规范发布到 pastebin。
  • dougp - Anton 说“我想建立一个最近两周的交叉表和金额的总和:”
  • 是的,但提供的示例输出只是 WeekNum, SUM(Amount)。这很容易在列表中完成。我看不出使用交叉表的任何技术原因。有一些我没有看到的复杂性。我提到它的原因是,这在查询中很容易做到,泵到一个列表。当然,那时交叉表会很容易,但我没有看到需要。否则,我可能提供的任何解决方案都可能过于简单,无法满足看不见的复杂性的要求。
  • 我的错,编辑了这个问题。在我的情况下,我正在使用交叉表,但为了示例,它不相关。对这个问题有任何意见吗?
  • 如果我很接近,请告诉我,问题是“找到第二大”吗?例如,按大小排序将具有最大的条目,其 running_count 为 1。如果是这样,第二大条目将是 running_count 2。您可以在聚合 running_count 之后过滤

标签: sql max report cognos cognos-bi


【解决方案1】:

RANK 应该可以正常工作,但如果您尝试让 Cognos 将所有工作集中在一个地方,它可能无法正常工作。我想我可以过滤排名数据项并将应用程序属性设置为自动聚合之后。但我得到了奇怪的结果。

与其尝试创建一个复杂的解决方案,不如尝试将问题分解为更小、更简单的组件。

定义查询1
数据项:
周 = [命名空间].[查询主题].[周]
Amount = [namespace].[query subject].[Amount],详细聚合设置为 Total
Rank = rank([namespace].[query subject].[Week])

创建 Query2 并将 Query1 设置为其源。 数据项:
[查询1].[周]
[查询1].[金额]
细节过滤器:
[查询1].[排名]

使用 Query2 作为列表的来源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多