首页 > 解决方案 > IBM Cognos Analytics 从数据集中选择前 2 个

问题描述

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

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.

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

标签: sqlmaxreportcognoscognos-bi

解决方案


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

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

定义 Query1
数据项:
Week = [namespace].[query subject].[Week]
Amount = [namespace].[query subject].[Amount],详细聚合设置为 Total
Rank = rank([namespace].[query主题].[周])

创建 Query2 并将 Query1 设置为其源。数据项:
[Query1].[Week]
[Query1].[Amount]
详细过滤器:
[Query1].[Rank] <= 2

使用 Query2 作为列表的来源。


推荐阅读