reporting-services - SSRS 折线图基于 X 轴值的动态最大 Y 轴
问题描述
我已经看了很多地方,看看这是否可能,但到目前为止都是空的。
我要做的是根据 X 轴上的最大值和最小值制作折线图的 Y 轴。我已经想到了如何最好地问这个问题,我在这里简化了。我正在做的还有更多,但这是我无法弄清楚的部分。
这是数据集的一个小样本。这是非常基本的。 https://1drv.ms/x/s!AsF_vHid6sbi30XMcIVeA5vqItsF?e=9CmOZk
没有系列组,类别组基于周起始值。计算是推荐计数的总和。我确实尝试编写表达式来引用 MAX(SUM(Fields!RefCount.Value, "CategoryGroupName")) 和其他各种类似的表达式,但由于它超出了 Y 轴的范围,所以它不起作用。
感谢您的任何帮助或建议。
解决方案
我创建了一组随机数据,每次运行报告时它都会发生变化,非常适合测试。它将所有值加 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”除数来调整所需的标签数量。
谨防!通过使用平滑折线图并根据数据,您的曲线现在可能会从图表底部脱落。在您的要求范围内,除了向最小值添加一些填充或切换到非平滑图表之外,您无能为力。
这是您可能会得到的示例。(用于测试的随机数生成器的美妙之处!)