ssrs按字段名称分组

时间:2018-03-23 19:21:40

标签: reporting-services tfs ssrs-2016

在SSRS中,我有一个数据集可以从TFS工作项中提取指标,如下所示:

ID  | Time in Ready  |  Time in Active  |  Time in Resolved
-----------------------------------------------------------
1   |       6        |        3         |        2
2   |       2        |        4         |        1
3   |       1        |        7         |        1

我想创建一个条形图,平均每个州的时间,如下所示:

5  |                 |       4.7        |  
4  |        3        |      -----       |
3  |      -----      |      |   |       |        1.3
2  |      |   |      |      |   |       |       _____
1  |      |   |      |      |   |       |       |   |  
-------------------------------------------------------------
   |  Time in Ready  |  Time in Active  |  Time in Resolved

但是我无法弄清楚应该在我的类别组中添加什么来让它按字段名称分组。如果我只是将3个聚合字段添加到“值”部分,则标题不会显示在水平轴上。

我可以使用给定的数据集生成预期图表吗?如何设置图表属性?

2 个答案:

答案 0 :(得分:0)

最简单的方法是让数据集以下列格式返回数据

Status TimeValue
Ready    6
Ready    2
Ready    1
Active   3
Active   4
Active   7
Resolved 2
Resolved 1
Resolved 1

然后,您的类别只是Status列。

答案 1 :(得分:0)

如果您无法更改数据集(这是最简单的解决方案),您可以考虑使用表和Databars,但这是相当多的工作。

将表拖到报表上并将其附加到数据集。对于上面的示例,您将需要4列。最左侧的列将用于保存轴标签。

删除表格中的标题行。

创建一个新组作为现有详细信息Row Group的父级。用鼠标右键单击Details Row Group - >添加组 - >家长小组。然后在Tablix组中键入“True”到组中的文本框。这将对整个数据集进行分组。

删除详细信息组(在详细信息组上单击鼠标右键,然后单击“删除组”),在打开的选项框中选择“仅删除组”。

删除第一行中为True的第一列,这是按列分组而不是必需的。在打开的选项框中选择“仅删除列”。

如果此时尚未这样做,请添加一个新列,以便有四列。

在上面的组外插入一行(这将是标题)。合并正确的三个单元格。并在此框中输入图表的名称。

在下面的内部组中插入一行(这些将是列标签)。在最右边的三个单元格的最后一行输入三列标签。

在第一个单元格的中间行输入0(这将是轴),然后在其他三个单元格中输入每列的平均值。如果你想在你的栏上使用数据标签,我建议使用这样的公式:

=Format(Avg(Fields!Time_in_Ready.Value),"##.##")

此时它应该如下所示:

Set up table

然后,您需要将Databar(Column)拖放到中间行的四个单元格中。然后右键单击每个并“转换为完整图表”。然后删除每个图表标题,图例和x轴标题。它应该是这样的:

Full chart

然后,您需要为每个图形将轴max和min设置为相同。在每个图形中的轴上单击鼠标右键,然后单击“垂直轴属性”。 在轴选项中,将“最大值”设置为合适的数字,或使用以下公式计算最大平均值,向上舍入。

=ROUND(SWITCH(AVG(Fields!Time_in_Ready.Value) > AVG(Fields!Time_in_Active.Value) & AVG(Fields!Time_in_Ready.Value) > AVG(Fields!Time_in_Resolved.Value), AVG(Fields!Time_in_Ready.Value), AVG(Fields!Time_in_Active.Value) > AVG(Fields!Time_in_Resolved.Value), AVG(Fields!Time_in_Active.Value), True,AVG(Fields!Time_in_Resolved.Value))) + 1

你还需要在这种情况下设置Interval我会使用1但是对于较大的平均值你可以使用5或10.现在运行图表来检查结果,它应该如下所示:

Set up axis

如果需要,您可以立即添加次要网格线(通过右键单击每个轴'然后显示次要网格线)并添加数据标签(右键单击每个条和显示数据标签)。

现在我们需要在最右边的三个单元格上隐藏轴(在轴上单击鼠标右键,然后单击垂直轴属性 - >标签 - >隐藏轴标签)。

然后我们需要对保持轴的第一个单元格进行一些更改。在轴上单击鼠标右键,然后单击“标签”选项卡,然后单击“隐藏第一个和最后一个标签”(这需要确保轴与其他图形对齐)。然后单击Label Font表并将字体大小固定在适合10pt的位置(这是必需的,因为我们将减小此列的大小,仍然需要足够大的标签)。

现在将第一列(轴)的宽度设置为约0.8cm,将其他列设置为约1.5cm。

Designer中的最终图表应如下所示:

Designer

预览中的最终图表应如下所示:

Preview

您可以使用设置为Rotate270

的WritingMode属性旋转类别标签