65.9K
CodeProject 正在变化。 阅读更多。
Home

SSRS 中的系统可用性图表

starIconstarIconstarIconstarIconstarIcon

5.00/5 (4投票s)

2013 年 11 月 6 日

CPOL

4分钟阅读

viewsIcon

27205

如何在 SSRS 中构建系统可用性时间线

引言

我们目前正在进行一些仪表板开发,以向我们的客户展示系统可用性数据。SQL Server Reporting Service (SSRS) 是我们用来驱动系统的仪表板引擎之一。使用传统的条形图或折线图来描绘过去 24 小时内的系统可用性(正常/停用/降级)的精确概念并不是很直观。一个更用户友好的方法将是使用颜色编码的系统可用性时间线视图。我们可以使用以下两种基本显示模型。第一种是过去 24 小时的连续时间线。第二种是按小时划分的时间线。我们使用红色表示系统停机时间,黄色表示系统降级,绿色表示系统正常。经过一些研究和调整后,我提出了一个在 SSRS 中创建这种类型图表的相当简单的解决方案。以下是步骤。

Using the Code

  1. 查看您的源数据。我们的系统监控数据在数据库中如下所示。状态 1 表示正常,2 表示降级,3 表示停机时间。Period 表示数据更新的频率。120 表示 120 秒,您可以从时间戳列中看到。
  2. 整理您的数据。使用以下简单查询将帮助您将数据重新格式化为我们在 SSRS 中构建仪表板图表所需的内容。我将在下一步中解释每一列。
      SELECT serviceame 
      , time_stamp
      , DATENAME(HOUR, time_stamp) + ':' +  right('0' + DATENAME(mi, time_stamp), 2) as time
      , status
      , 1 as dummy
     FROM  monitoring_data  

  3. 构建第一个 SSRS 可用性图表。就像所有 SSRS 报告一样,您首先必须创建数据源,然后使用上面的查询来创建数据集。创建数据集后,将柱形图插入到报告中。

    我通常会删除图例、标题、x 轴数据标记和 x 轴标题,只是为了使时间线看起来更清晰。将“dummy”拖到值窗格中,将“time”拖到类别组窗格中。您需要按 time_stamp 列对类别组进行排序,该列是实际的 datetime 列,以便获得正确的时间序列。正如您所看到的,“Dummy”是一个常量数字,在我的报告中是 1。此列用于显示值,因此我们可以强制此图表中的所有列具有相同的高度,并且我们的时间线将看起来像一条直线。

    现在,如果我们运行结果,我们可以看到一个非常奇怪的图表,就像我们在这里看到的那样。我们越来越近了,现在我们只需要调整一些图表设置。

  4. 调整您的图表。您需要在当前图表上更改三个地方,才能使其看起来像我在本文开头展示的那样。

    第一件事是删除所有空白,使其看起来像一个连续的时间线。单击柱形图系列。转到属性的“常规”部分。展开“自定义属性”。将“PointWidth”属性更改为 1。SSRS 将一列和该列右侧的空白视为一个总宽度单位。PointWidth 属性用于设置柱宽占总宽度单位的百分比。如果将此值设置为 1,则列将占据所有空间,因此我们可以消除空白。

    我们需要更改的第二件事是列的颜色。单击柱形图系列,然后转到“外观”属性部分。将颜色设置更改为使用表达式。键入以下公式。当然,此公式是基于我们的数据;这部分的核心是为颜色编码的可视化定义每个单独列的颜色。

    我想做的最后一个更改是确保所有时间标记都以一小时为间隔显示。在我的情况下,我们每 2 分钟有一列,每小时有 30 列。单击图表 x 轴。转到“标签”属性部分。将“LabelInterval”属性更改为 30

    现在您可以运行报告了。完成! 您的系统可用性时间线将如下所示。您可以根据您的需求和数据结构定制此方法。

现在让我们更进一步。在本文的开头,我展示了两种可用性可视化。第一个在上面已经解释过了。第二个实际上非常接近第一个。我不会详细介绍这些步骤。但以下是您需要从以前的流程中调整的一些差异。

  1. 将您的图表类型从柱形图更改为堆积柱形图。
  2. 由于这是按小时划分的,您需要在查询中分别解析小时和分钟。修改您的查询以
    SELECT
        serviceame
      , time_stamp
      , DATENAME(HOUR, time_stamp) + ':' +  right('0' + DATENAME(mi, time_stamp), 2) as time
      , status
      , 1 as dummy 
             , DATENAME(HOUR, time_stamp) as hours
             , right('0' + DATENAME(mi, time_stamp), 2) as minutes
    
      FROM  monitoring_data 
  3. 将“小时”添加到类别组窗格,将“分钟”添加到系列组窗格。

    现在运行您的图表,您将看到以下结果。每一列都是一个小时,分钟从底部开始递增。

最终,您将能够在 SSRS 报告中更改柱形图,并将其用作连续的时间线来直观地表示系统可用性。希望这有助于您构建自己的可用性图表的基线。

© . All rights reserved.