Report Builder 3.0 - 隐藏或过滤掉 last/max 值

Report Builder 3.0 - Hide or filter out the last/max value

期望的最终结果是有一个图表,无论何时生成,都会显示除最新值之外的所有值。因此,如果在我的数据集中的这一点上,我今年的最后一个时期是 12,我希望所有去年和今年的时期都出现,除了最后一个是 12。

其实我有3个字段:Year、Period和Delay。

年份简单显示为:2017。共有 13 个期间,它们显示为:01、02、03、[...]、13。为了更简单,我创建了一个字段

 Fields!YearPeriod.Value =Fields!Year.Value+Fields!Period.Value

所以现在,我只能使用 2 个字段,YearPeriod 显示如下(示例):201701。所以这允许我使用 Max() 函数来隔离我试图排除的最后一个时间段.

 Max(Fields!YearPeriod.Value)

这就是我卡住的地方!我试过在我的图表上使用过滤器,但我收到一条错误消息,指出过滤器不能具有 First、Last、Max、Min 等函数。所以我尝试在我的图表值中使用 IIF, (见下文)但是一旦我生成,它就会显示一个完全空的图表。:

=IIF(Fields!YearPeriod.Value=Max(Fields!YearPeriod.Value), Nothing, Fields!Delay.Value)

因此,我尝试使用图表 properties/Visibility 部分并应用了类似的功能,但更糟糕的是:它使整个图表一起消失...

这似乎是一件非常简单的事情,但最后,我肯定被卡住了。感谢大家!

在类别组属性中设置过滤器而不是图表过滤器属性。

Category Groups 窗格中,右键单击 YearPeriod,然后 select Category Group Properties...

在“过滤器”选项卡中添加具有以下设置的过滤器:

Value 中使用此表达式:

=MAX(Fields!YearPeriod.Value,"DataSetName")

DataSetName替换为您的真实姓名。

聚合函数在图表过滤器中不起作用,因为没有范围(与整个数据集不同),这就是使用 MAX 过滤图表不起作用的原因。

更新: 在图表中添加年份作为系列。

Year 字段添加到 Chart Data 设置中的 Series 窗格。

它将为您提供每个 Year 值的行。

更新 2: 使用 YearPeriod 作为 Category Group 但将标签设置为 Period,在系列组中也使用 Year

您可以设置要在图表中显示的标签,它不依赖于您使用的组字段或表达式:

并且在 Filter 中使用与我之前使用的完全相同的表达式。这是我隐藏去年 (201713)

的最后一个值的示例

Alejandro 的回答非常有效,只要您不介意让您的系列彼此跟随而不是叠加。 我找到了以下答案,允许它与叠加的系列一起工作,效果很好。

这是我所说的叠加系列的意思,我圈出了我不想显示的数据(即当年的最后一期):

这是我的结果:

解法: 众所周知,过滤器通常不允许聚合,这是我一开始遇到这个问题的首要原因。它不允许我。

所以我发现这个 link 详细说明了如何 "hard code" 执行聚合求和、计数、最小值、最大值和平均值的能力。 长话短说,我不得不使用 max,我就是这样做的:

  1. copy/paste 将位于 Click here and, once on the page, click on "AggLookup.vb" 的代码放入报告属性中的代码部分

  2. 与任何 LookUp 函数一样,找到一个维度,您可以使用该维度将 2 个数据集锚定在一起,并允许您将目标度量重新组合在一起。在我的例子中,我选择了我工作的医院的名称,并将该字段插入到我的数据集 1 和数据集 2 中。这使我能够确保当我执行 "max" 函数时,它会将 2015XX 和 2016XX 视为一个组的一部分。最初,我没有这样做,我使用 Year 作为锚点,结果过滤掉了每年的最大值:即 201513 和 201613。

  3. 转到过滤器并使用这个经过调整的 LookUpSet 公式创建一个:

=code.AggLookup("aggregation", LookupSet([localValue], [matchValue], [returnValue], [dataset]))

确保您的汇总使用小写字母(无大写字母)并用引号括起来,即“

我知道我可能花了很长时间才得出我的结果,但是说我对 SQL 编码不太了解是言过其实了。所以我使用了这个选项。