【问题标题】:SSRS-Best way to represent specific metricsSSRS-表示特定指标的最佳方式
【发布时间】:2016-06-01 17:33:24
【问题描述】:

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

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

【问题讨论】:

    标签: reporting-services ssrs-2014


    【解决方案1】:

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

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

    包括样本的屏幕截图。请注意以下几点:

    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
    

    报表生成器中的设置

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

    =Fields!border_color.value
    

    条的颜色是:

    =Fields!color.value
    

    【讨论】:

    • 抱歉,我意识到我的问题不够清楚 - 我需要一个栏来显示桶,然后是空白,直到目标总数。这些都是可爱的例子,顺便说一句......现在,如果我可以将所有的条连接在一起并在可视化之外很好地标记它们,我就准备好了! :)
    • 您需要为每个存储桶对总数的贡献显示标签吗?
    • 我愿意。我意识到我可以制作非常短的标签,例如 A、B、C 等,然后在实际图表之外添加一行文本来显示这些内容的含义。
    • 天哪,我刚刚看了看你的所作所为——哇,完美!非常感谢!我要试一试,看看我是怎么做的,以及我能从中学到什么。非常慷慨。
    • 没问题。我们这些在这里回答的人这样做是为了获得声誉积分。如果您发现答案有帮助,请给该答案投票。当您提出问题时,请选择最有帮助和正确的答案作为正确答案。这样可以确保每个人都因其工作而获得适当的荣誉。
    【解决方案2】:

    您是否尝试过使用表格向导。如果您单击表格向导,您可以选择要吃的字段以及是否要对它所属的“桶”进行分组。只需将您的值拖放到值框中,然后将存储桶拖放到行组框中,然后按照向导进行操作,它就会为您创建所有内容。

    【讨论】:

    • 我没有尝试过 - 我会试一试,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2012-10-02
    • 1970-01-01
    • 2019-03-09
    • 2013-09-28
    • 1970-01-01
    相关资源
    最近更新 更多