2015-11-01 4 views
0

Мы пытались разработать гибкую конструкцию для штабелированной панели данных в SSRS, которая позволила бы визуализировать процент просматриваемого видеоматериала в 100% заполненной ячейке столбца tablix.Строка данных SSRS с переменным количеством точек данных

Целью является четкое отображение частей видеоролика, просмотренного пользователем. Например, у нас есть эпизод телешоу продолжительностью 1 час, но пользователи не всегда смотрят весь эпизод от начала до конца, и мы хотим узнать, какие части видео они фактически наблюдали. Пользователи могут прыгать - сначала посмотрите немного, а затем пройдите к середине и посмотрите еще немного, затем перейдите к концу. Используемая потоковая видеосистема содержит подробные отчеты, где начался просмотр и где он закончился. Наша задача состоит в том, чтобы предоставить всю информацию в краткую базу данных с фиксированной длиной, чтобы быстро показать, какая часть данного видеоролика просматривается конкретным пользователем.

Вот желаемый вид отчета.

Here's the desired look of the report

В первом ряду, вы увидите, что пользователь просмотрел около 20% от видео, а затем подскочил до 49% и наблюдали до 54%, а затем остановился. Это привело к 25% от общей длины просматриваемого видео.

Может ли это быть достигнуто с использованием штабелированных баров данных? Любые предложения очень ценятся.

+0

Мое отношение к «возможно ли» - это так. У вас есть запрос, возвращающий соответствующие данные? Совместное использование результатов этого поможет в совете, который мы даем для дизайна диаграммы. – Jonnus

+0

Я думаю, что диаграмма диапазона больше подходит для использования. То же самое с диаграммой Ганта. – Kim

+0

«В первой строке вы увидите, что пользователь просмотрел около 20% видео, затем прыгнул на 49% и просмотрел до 54%, а затем остановился». - Его ЭТО вид видео, да? ;) – bushell

ответ

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 (Поля ! 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, дайте мне знать, и я с радостью помогу.