基于X轴值的SSRS折线图动态最大Y轴

时间:2020-06-22 16:51:12

标签: reporting-services yaxis

我看过很多地方,看是否可行,但到目前为止却空无一物。

我要做的是使折线图的Y轴基于X轴的最大值和最小值。我想过最好的方法,我在这里简化。我正在做的事情还很多,但这是我无法弄清的部分。

Click to view example: Set Y Axis to X Axis Values

这是数据集的一小部分样本。这是非常基本的。 https://1drv.ms/x/s!AsF_vHid6sbi30XMcIVeA5vqItsF?e=9CmOZk

没有系列组,类别组是基于周开始值的。计算是推荐计数的总和。 我确实尝试编写表达式来引用MAX(SUM(Fields!RefCount.Value,“ CategoryGroupName”))和其他类似的表达式,但是由于它超出了Y轴的范围,因此无法正常工作。

感谢您的帮助或建议。

1 个答案:

答案 0 :(得分:0)

我创建了一个随机数据集,每次您运行报告时它都会更改,因此非常适合测试。它会将所有值加50,所以我们知道我们永远不会得到零(用于测试)。

我使用了以下数据集查询

DECLARE @t TABLE (ReferralWeek date, RefCnt int)

INSERT INTO @t VALUES 
('2020-06-21', 50+(rand()*500)), ('2020-06-21', 50+(rand()*500)), ('2020-06-07', 50+(rand()*500)), ('2020-06-07', 50+(rand()*500)), ('2020-03-29', 50+(rand()*500)), 
('2020-06-21', 50+(rand()*500)), ('2020-05-03', 50+(rand()*500)), ('2020-05-24', 50+(rand()*500)), ('2020-06-14', 50+(rand()*500)), ('2020-04-12', 50+(rand()*500)), 
('2020-04-19', 50+(rand()*500)), ('2020-04-12', 50+(rand()*500)), ('2020-06-21', 50+(rand()*500)), ('2020-04-26', 50+(rand()*500)), ('2020-06-21', 50+(rand()*500)), 
('2020-04-19', 50+(rand()*500)), ('2020-06-07', 50+(rand()*500)), ('2020-05-10', 50+(rand()*500)), ('2020-06-21', 50+(rand()*500)), ('2020-05-10', 50+(rand()*500)), 
('2020-05-31', 50+(rand()*500)), ('2020-06-14', 50+(rand()*500)), ('2020-05-17', 50+(rand()*500)), ('2020-04-12', 50+(rand()*500)), ('2020-04-26', 50+(rand()*500)), 
('2020-05-03', 50+(rand()*500))
SELECT * FROM @t

然后我创建了一个新报告,添加了折线图,将值设置为SUM(RefCnt),将类别组设置为ReferralWeek

接下来,我右键单击类别组,然后从此处选择“属性”,我可以看到名称为"Chart1_CategoryGroup"。这是我们需要计算垂直轴范围的范围表达式。

接下来,我右键单击垂直轴并选择“属性”。

我将间隔类型设置为“数字”,然后将最小值和最大值的表达式设置为以下...

=MIN(SUM(Fields!RefCnt.Value, "Chart1_CategoryGroup"))

=MAX(SUM(Fields!RefCnt.Value, "Chart1_CategoryGroup"))

请注意,我们使用类别组名称作为范围名称。

这使我们成为问题的一部分,但间隔也必须计算,否则将不会计算出最大数字;会显示在轴上,因此,如果他的最高数字为605,则该轴可能会显示600,而最后一点稍高于该点。

我们可以通过计算时间间隔来解决此问题。这个简单的例子可能不是100%,但应该足够接近。

间隔设置为以下表达式。

=(
    MAX(SUM(Fields!RefCnt.Value, "Chart1_CategoryGroup"))
    - 
    MAX(SUM(Fields!RefCnt.Value, "Chart1_CategoryGroup"))
)
/ 10

您可以通过调整“ 10”除数来调整所需的标签数量。

这给我们以下内容 enter image description here

当心! 通过使用平滑折线图并根据数据,曲线现在可能会从图表底部掉落。在您的要求之内,除了向最小值添加一些填充或切换到不平滑的图表外,您无能为力。

这是您可能会得到的例子。 (用于测试的随机数生成器的优点!)

enter image description here