SSRS-表示特定指标的最佳方式

SSRS-Best way to represent specific metrics

我正在 SSRS 2014 中进行自我培训。我有一组特定的数据要表示,即:我们有一个筹款目标,并且有资金用于实现该目标。进来的钱落入四个不同的桶中的一个 - 所以我正在寻找一些堆叠但水平(一个条)显示桶总数的东西,然后是一些 "blank" space 代表我们需要达到我们的目标。我已经尝试了一个线性仪表(无法弄清楚如何显示 "bucketed" 部分,即使是数据组);数据栏(无法正确显示标签,因为它们必须显示在栏内);其他表示会导致多个条,这是我不想要的。

我已经研究和尝试了两天...我想知道这个看起来如此简单的东西实际上在 SSRS 中是否不是特别可行,或者我是否只是选择了糟糕的方法.表示这些数据的最佳方式是什么?谢谢!

您是否尝试过使用 table 向导。如果您单击 table 向导,您可以选择要查看的字段,以及是否要根据 "Bucket" 对其进行分组。只需将您的值拖放到值框中,将您的存储桶拖放到行组框中,然后按照向导操作,它应该会为您创建所有内容。

我相信你最好的选择是一个简单的条形图。在我看来,这里的关键是让 bar 的值由收集的目标百分比表示。但是,您希望每个条形图的标签是到目前为止收集的实际金额。这样,您的栏会随着接近目标而按比例增长,但标签会显示收集的数量。

或者,您可以创建一个包含完成百分比的 Tablix 作为数据栏,并显示到目前为止收集的数量与目标的对比。

包括示例的屏幕截图。请注意以下事项:

  1. 我在查询中硬编码了颜色的名称。这是控制图表外观和感觉的好方法。然后您只需更改颜色以表示等于颜色字段值的表达式。对于不同的浅色和深色,您还可以设置字体颜色,因此如果您有浅蓝色条,则可以使用黑色文本而不是白色,反之亦然。

  2. 在条形图上使用标签时,您需要为条形编码一个最低限度的值。这将确保当您有类似 Bucket 5 的东西时,您处于目标的 5%(相对较小的栏)但金额很大($124,243),该栏将调整到足够大以包含标签。在这种情况下,如果收集的百分比小于 15%,则条形大小将为 15%。

如果您有任何问题,请发表评论,我会尽力提供帮助。我用来生成数据集的查询如下。

With CTE as (
Select 'Bucket 1' as bucket, 'blue' as color, 'white' as text_color, 50 as percent_total, 15236 as amount Union all
Select 'Bucket 2' as bucket, 'red' as color, 'white' as text_color, 33 as percent_total, 24685 as amount Union all
Select 'Bucket 3' as bucket, 'green' as color, 'black' as text_color, 67 as percent_total, 41457 as amount Union all
Select 'Bucket 4' as bucket, 'purple' as color, 'white' as text_color, 95 as percent_total, 32493 as amount Union all
Select 'Bucket 5' as bucket, 'black' as color, 'white' as text_color, 5 as percent_total, 124243 as amount
)

Select CTE.*
    , CAST(amount as float) / (CAST(percent_total as float) / 100.00) as Goal

From CTE

Order by Bucket desc

根据评论编辑

如果您希望所有桶的剩余部分都在一个柱上,那么您可以通过以下方式实现(尽管我不确定您将如何处理将金额标记为各个桶)。

最终结果

查询

Declare @Goal int = 500000;

With CTE as (
Select 'Bucket 5' as bucket, 'blue' as color, 'white' as text_color,  15236 as amount Union all
Select 'Bucket 4' as bucket, 'red' as color, 'white' as text_color, 24685 as amount Union all
Select 'Bucket 2' as bucket, 'green' as color, 'black' as text_color,  41457 as amount Union all
Select 'Bucket 3' as bucket, 'purple' as color, 'white' as text_color,  32493 as amount Union all
Select 'Bucket 1' as bucket, 'black' as color, 'white' as text_color, 124243 as amount
)

Select CTE.bucket
    , CTE.color
    , CTE.text_color
    , CTE.amount
    , CAST(CTE.amount as float) / CAST(@Goal as float) as percent_total
    , 'white' as border_color

From CTE

Union All

Select 'Remaining' as bucket
    , 'Transparent' as color
    , 'Transparent' as text_color
    , @Goal - SUM(CTE.amount) as amount
    , CAST(@Goal - SUM(CTE.amount) as float) / CAST(@Goal as float) as percent_total
    , 'black' as border_color

From CTE

Order by Bucket

Report Builder 中的设置

请注意,我已将边框颜色动态更改为:

=Fields!border_color.value

条形颜色为:

=Fields!color.value