SSRS堆叠数据条具有可变数量的数据点

时间:2015-11-01 13:38:21

标签: reporting-services charts ssrs-2012 stacked

我们一直在努力为SSRS中的堆叠数据栏提供灵活的设计,以便在100%填充的Tablix列单元格中可视化观看视频材料的百分比。

目标是清楚地显示用户查看过的视频片段的各个部分。例如 - 我们主持1小时长的电视节目,但用户并不总是从头到尾观看整集,我们想知道他们实际观看的视频的哪些部分。用户可以跳转 - 在开始时稍微观察,然后跳到中间再观看一些,然后到最后。我们使用的流媒体视频系统提供详细的报告,其中开始观看和结束。我们的工作是将所有信息放入一个简洁的固定长度数据条中,以便快速显示特定用户观看过的特定视频片段的数量。

这是报告的理想外观。

Here's the desired look of the report

在第一行中,您会看到用户查看了大约20%的视频,然后跳到49%并观看到54%然后停止。这导致了观看视频总长度的25%。

这可以使用堆叠数据栏来实现吗?任何建议都非常赞赏。

1 个答案:

答案 0 :(得分:0)

我能够通过创建自定义SSRS程序集来解决这个问题,该程序集生成位图图像并将其作为字节数组返回,然后在图像表达式字段中使用。

如果有人有兴趣,用于根据观看的视频部分生成图片的部分C#代码如下:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;

namespace SSRSExtensions
{
    public class ReportFunctions
    {
        public static Byte[] GetViewingRangeImage(String ranges, String imageFormatString, Single width, Single height, String backgroundColor, String foregroundColor, String separatorColor)
        {
            Byte[] retValue = null;

            ImageFormat imageFormat = GetImageFormat(imageFormatString);
            if (imageFormat != null)
            {
                ImageCodecInfo imageCodec = GetImageEncoderInfo(imageFormat);

                Bitmap bitmap = GetViewingRangeImageBitmap(ranges, width, height, backgroundColor, foregroundColor, separatorColor);

                using (EncoderParameters encoderParameters = new EncoderParameters(1))
                {
                    using (EncoderParameter encoderParameter = new EncoderParameter(Encoder.Quality, 100L))
                    {
                        encoderParameters.Param[0] = encoderParameter;

                        using (MemoryStream memoryStream = new MemoryStream())
                        {
                            bitmap.Save(memoryStream, imageFormat);

                            retValue = memoryStream.ToArray();
                        }
                    }
                }
            }

            return retValue;
        }
    }
}

图像表达式是: = SSRSExtensions.ReportFunctions.GetViewingRangeImage(Fields!ViewingRange.Value," PNG",200,25," White",& #34;#808080","#bfbfbf")

实际范围以逗号分隔的字符串指定,如下所示: 0.000000-10.000000,20.0000-00-.00.000000,90.000000-100.000000。 ,其中用户首先观看10%,跳至20%并观看至50%,然后跳至90%并且看完直到结束。

这篇较旧的博客文章(https://blog.oraylis.de/2012/04/ssrs-custom-drawing-code/)讨论了如何绘制动态图片并在报告中使用它们。它使用内联VB。如果要使用C#,则必须创建外部程序集,将其复制到C:\ Program Files \ Microsoft SQL Server [SSRS INSTALL FOLDER] \ Reporting Services \ ReportServer \ bin文件夹并在报表中引用它

如果有人需要有关如何将此全部插入SSRS报告的其他详细信息,请告诉我,我将很乐意为您提供帮助。