具有可变数量数据点的SSRS堆叠数据条
我们一直在尝试为SSRS中的堆叠数据栏提供灵活的设计,以便在100%填充的Tablix列单元格中显示所观看视频材料的百分比。具有可变数量数据点的SSRS堆叠数据条
目标是清晰显示用户查看过的视频片段的各个部分。例如,我们主持了一个1小时的电视节目集,但用户并不总是从头到尾观看整个节目,我们想知道他们实际观看的视频的哪些部分。用户可能会跳起来 - 在开始时观看一点点,然后跳到中间,看更多,然后走到最后。我们使用的流式视频系统提供了查看开始和结束位置的详细报告。我们的工作是将所有信息放入简洁的固定长度的数据栏中,以便快速显示特定用户观看过的特定视频剪辑的数量。
这是报告的期望外观。
在第一行,你会看到用户已经观看了视频的20%左右,则跃升至49%,并观看,直到54%,然后停止。这导致观看视频总长度的25%。
这可以使用堆叠的数据条来实现吗?任何建议非常感谢。
我能够通过创建一个定制的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(字段!ViewingRange.Value, “PNG”,200,25, “白”, “#808080”, “#bfbfbf”)
的实际范围以逗号分隔字符串指定的,就像这样: 0.000000-10.000000,20.000000-50.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报告的其他详细信息,请告诉我,我很乐意帮助。
我觉得“这是可能的”是它是。您是否有查询返回已开发的相关数据?共享这个输出将有助于我们为图表设计提供建议。 – Jonnus
我认为范围条形图更适合使用。这与甘特图相同。 – Kim
“在第一行中,您会看到用户浏览过大约20%的视频,然后跳到49%,然后观看直到54%,然后停下来。” - 它那种视频吧? ;) – bushell