提示页面静态选择

Prompt Page Static Choices

我正在尝试在我的提示页面上创建一个提示,让用户 select 一个特定的季度。例如,用户会从提示中 select“2018 Q1”,而报告会知道“2018 Q1”的日期介于 7/1/2018 和 9/30/2018 之间。这可能吗?我一直在搞乱静态选择,但我并没有走得太远。 我的 Cognos 知识将被归类为一般知识。

有几种方法可以做到这一点。您没有指明是否希望提示中提供给用户的选择是动态的。动态提示通常可以提供更好的客户体验并且需要更少的维护。我将解释如何进行动态操作,如果您想要静态操作,只需将值手动输入到提示中,而不是从查询中获取它们。其余说明适用。

动态(首选)

  1. 创建新查询
  2. 将查询命名为表明其功能的名称,例如'Quarter Prompt'
  3. 在查询中创建一个新数据项以包含您希望提示向用户显示的内容。

例如,如果您希望提示显示“2018 Q1”,您可以从日期 table 创建此字符串,如下所示:

[Year] + ' Q' + [Quarter]

如果您为此查询生成表格数据,您将获得日期 table:

中所有 year/quarter 组合的列表
2018 Q1
2018 Q2
2018 Q3
2018 Q4
2017 Q1
...
  1. 将列表限制在您要提示的季度范围内。

例如,如果您只想显示当年的季度,您可以添加此过滤器:

[Year] = year(current_date)

添加此过滤器后,您将只会看到上述输出的前四行 returned。您的用户将有四种选择。

  1. 将值提示的查询 属性 设置为新查询,并将使用值和显示值属性都设置为您在提示查询中定义的数据项

要将提示选项应用到您的报告,您只需向相关报告查询添加一个过滤器,以获取用户的输入并将其与数据进行比较:

[Year] + ' Q' + [Quarter] = ?quarterPrompt?

现在,这种方式可能会导致性能低下。为了应用过滤器,必须检查每一行,将其转换为字符串格式并进行比较。如果您需要更好的性能,更好的过滤方法如下:

[Year] = substring(?quarterPrompt?,1,4) AND [Quarter] = substring(?quarterPrompt?,7,1)

由于我们只是对提示进行改造,其中只有一个值,数量不多,所以性能得到了优化。

附录

我的直觉告诉我,可能还有更好的方法。在四处寻找之后,我意识到有一种更有效的方法可以通过消除所有字符串解析来处理这个问题。以下是需要修改的程序部分:

  1. 您需要添加一个新的数据项作为传递到报表查询中的使用值。

使用以下表达式在提示查询中创建第二个数据项:

[Year] * 100 + [Quarter]

对于每个年度和季度组合,您现在都会有一个编码组合的数字。例如,对于 2018 年和第 2 季度,新数据项将为 return 201802。

  1. 更改提示属性。将使用值指向新创建的数据项。
  2. 更改报表查询中的过滤器以使用新数值

这看起来像下面这样:

floor(?quarterPrompt?/100) = [Year]
AND mod(?quarterPrompt?,100) = [Quarter]

这种纯数值运算有可能比原始答案中基于子字符串的解析具有更好的性能,但效果相同。