Report Builder 3.0 - 隐藏或过滤掉最后/最大值

时间:2017-02-28 21:44:29

标签: reporting-services filter reportbuilder

所需的最终结果是生成一个图表,每当生成时,它会显示除最新值之外的所有值。因此,如果在我的数据集中,我今年的最后一个时期是12,那么我希望去年和今年的所有时期都出现在最后一个为12的时期之外。

事实上,我有3个字段:年份,期间和延迟。

年份显示为:2017年。总共有13个期间,它们显示为:01,02,03,[...],13。为了方便起见,我创建了一个字段

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

现在它,我可以单独使用2个字段,而YearPeriod显示如下(示例):201701。因此,这允许我使用Max()函数来隔离我试图排除的最后一个句点。 / p>

 Max(Fields!YearPeriod.Value)

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

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

所以,我尝试使用Graph属性/可见性部分,我应用了类似的功能,但情况更糟:它使整个图形一起消失......

这似乎是一件相当简单的事情,但最后,我肯定会陷入困境。谢谢大家!

2 个答案:

答案 0 :(得分:1)

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

Category Groups窗格中,右键点击YearPeriod,然后选择Category Group Properties...

enter image description here

在“过滤器”标签中添加包含以下设置的过滤器:

enter image description here

Value中使用此表达式:

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

DataSetName替换为您的实际名称。

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

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

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

enter image description here

它会为每个Year值提供一行。

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

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

enter image description here

Filter中使用与我之前使用的完全相同的表达式。这是我隐藏去年(201713)的最后一个值的示例

enter image description here

如果有帮助,请告诉我。

答案 1 :(得分:0)

亚历杭德罗的回答非常有效,只要你不介意让你的系列相互跟随而不是叠加。 我找到了以下答案,允许它与叠加的系列一起使用,效果很好。

这就是叠加系列的意思,我圈出了我不想显示的数据(即当年的最后一段): enter image description here

这是我的结果: enter image description here

<强>解决方案: 众所周知,过滤器通常不允许聚合,这是我开始使用此问题的首要原因。它不允许我。

所以我发现这个链接详细说明了如何“硬编码”执行聚合sum,count,min,max和avg的能力。 长话短说,我不得不使用max,这就是我做的方式:

  1. 将位于Click here and, once on the page, click on "AggLookup.vb"的代码复制/粘贴到“报告属性”中的“代码”部分

  2. 与任何LookUp功能一样,找到一个维度,您可以使用该维度将2个数据集锚定在一起,并允许您将目标度量重新组合在一起。在我的情况下,我去了我工作的医院名称,并将该字段插入我的Dataset1和Dataset2。这使我能够确保当我执行“最大”功能时,它认为2015XX和2016XX是一个组的一部分。最初,我没有这样做,我使用Year作为我的主持人,因此过滤掉了每年的最大值:即201513和201613。

  3. 使用此Tweeked LookUpSet公式转到过滤器并创建一个:

  4.   

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

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

    我知道我可能花了很长时间才能得到我的结果,但是说我对SQL编码知之甚少,这是一种夸大其词。所以我采用了这个选项。