Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Нам осталось превратить циферки в числовых колонках отчета Рис.17 предыдущего поста в красивые, исполненные глубокого смысла значочки. В Reporting Services 2005 никаких особых возможностей для этого не имелось. Приходилось в отчет вставлять изображения, например, иконки разных светофорчиков, добавлять их в новую колонку и в зависимости от значения колонки, допустим, статус рисовать ту или иную иконку. Что-нибудь где-то так:
=Switch(ReportItems!textbox15.Value = -1, "images/Stoplight_Single0.gif", ReportItems!textbox15.Value = 0, "images/Stoplight_Single1.gif", ReportItems!textbox15.Value = 1, "images/Stoplight_Single2.gif")
Скрипт 1
Это было не очень удобно. (Зато тогда нормально работала функция Aggregate()). С тех пор наука шагнула далеко вперед. В Reporting Services 2008 в плане визуализации , помимо табликса и прочих улучшений, появился элемент управления датчик (Gauge) от Dundas, а в 2008 R2, помимо картографии с поддержкой геопространственных типов SQL Server, - инфокривые (Sparklines), инфопрямые (Data bars) и индикаторы (Indicators) - Рис.1
Рис.1
Отметим элемент управления индикатор и нарисуем его в ячейке Product_Gross_Profit_Margin_Status (столбец Статус). Из предложенных внешних видов выберем по желанию трехдиапазонный индикатор (т.к. функция KPIStatus возвращает для данного KPI значения из набора -1, 0, 1).
Рис.2
Сопоставим значение в ячейке внешнему виду индикатора. Для этого надо кликнуть по ячейке с индикатором правой кнопкой и из контекстного меню выбрать Indicator Properties, либо отметить в ячейке с индикатором область Gauge Data и выбрать Indicator Properties:
Рис.3
либо перейти в панель свойств справа, выбрать свойство Indicators и в раскрывшемся Indicator Collection Editor - свойство IconSet:
Рис.4
Поставьте значения, соответствующие тому или иному внешнему виду индикатора на закладке Value and States:
Рис.5
Обратите внимание, что последовательность значков не является фиксированной. Как форму, так и цвет значка внутри индикатора можно при желании корректировать. Кнопки Add и Delete позволяют изменить число диапазонов. В поле Value находится привязка к соответствующему численному значению:
Рис.6
В комбобоксе States Measurement Unit замените Percentage на Numeric, т.к. границы, заданные в колонках Start и End- это не проценты, а абсолютные значения:
Рис.7
Аналогичные корректировки можно произвести, если выделить в ячейке с индикатором область Gauge Data и в панели свойств выбрать свойство IndicatorStates.
Рис.8
Здесь также можно поменять граничные значения, цвет и форму значка.
Рис.9
Скопируйте (Copy/Paste в контекстном меню ячейки) данную ячейку наверх, в агрегатную.
Рис.10
Откройте свойства агрегатной ячейки, кликните на значок функции справа от текстового поля Value и измените значение, которое будет отображаться индикатором, на =Aggregate(Fields!Product_Gross_Profit_Margin_Status.Value):
Рис.11
Аналогичным образом добавьте стрелочный 3-диапазонный индикатор в столбец Тренд.
Добавьте элемент управления датчик в колонку Рентабельность. Выберите вид датчика, чтобы он вписывался в ячейку таблицы:
Рис.12
В свойствах шкалы задайте минимальное и максимальное значение, отображаемое датчиком. Согласно формуле [Gross_Profit_Margin] изменяется в диапазоне от 0 до 1.
Рис.13
Кликните правой кнопкой на внутреннюю область датчика и выберите из контекстного меню Gauge Properties.
Рис.14
На закладке Back Fill измените Fill style на Solid, а Color- на No Color, чтобы цвет фона датчика не заслонял цвет фона ячейки:
Рис.15
Перейдите на закладку Frame Fill и проделайте то же самое:
Рис.16
Отметьте ячейку целиком, кликнув по ее границе, кликните правой кнопкой и выберите Gauge Panel Properties:
Рис.17
Выберите закладку Border, измените цвет границы ячейки на светло-серый и отметьте нужные стороны границы:
Рис.18
Откройте свойства указателя датчика.
Рис.19
На закладке Pointer Options задается отображаемое указателем значение (Value), форма, толщина и другие свойства указателя. Увеличьте толщину стрелки, чтобы она была заметнее.
Рис.20
Перейдите на закладку Pointer Fill и сделайте цвет стрелки поярче.
Рис.21
Скопируйте ячейку с датчиком ячейкой выше. Зайдите на Рис.20 и измените Value на агрегатное значение Gross_Profit_Marginаналогично Рис.11.
Отметьте Data Bar и перенесите его в детальную ячейку столбца Доля.
Рис.22
Выберите из контекстного меню свойства горизонтальной оси графика:
Рис.23
Задайте минимальное и максимальное значения по оси. Доля продукта также изменяется в интервале от 0 до 1.
Рис.24
Отметьте внутреннюю область ячейки и отметьте в контекстном меню Show Data Labels, чтобы величина, которую символизирует длина столбца, отображалась вместе с ним:
Рис.25
Зайдите в свойства метки (Series Data Labels)
Рис.26
и откорректируйте шрифт (допустим, жирный размера 8) и формат представления числа:
Рис.27
Для пущей красоты сделаем динамической закраску столбца в зависимости от значения ячейки. В свойствах Chart Data выберите Color, кликните Expression
Рис.28
и введите формулу, допустим,
=iif (Fields!ProductShare.Value < 0.1, "Red", iif (Fields!ProductShare.Value < 0.33, "Yellow", "Green")):
Рис.29
Аналогично предыдущим столбцам скопируйте ячейку строчкой выше в агрегатную строку для группы Category. Не забудьте поменять Fields!ProductShare.Value на Aggregate(Fields!ProductShare.Value) в Value
Рис.30
и выражении цветности столбца (Рис.29).
Сделайте градиентную закраску столбца:
Рис.31
Запускаем отчет:
Рис.32
Ну красота же неописуемая! Можно было бы еще риски в рентабельности сделать почетче и стрелку тоже красить динамически. Заодно можно было подложить какую-нибудь интересную заливку в качестве фона ячеек и отчета, поиграться со шрифтами и т.д. Можно было перемножить продуктовое измерение по вертикальной оси на время и сделать еще колонку со спарклайнами, чтобы условно показывать продажи в динамике – см. http://blogs.technet.com/b/isv_team/archive/2010/04/04/3322989.aspx. Совершенствовать можно до бесконечности. Наведение остальной красоты предоставляется читателям в качестве самостоятельного упражнения.
Алексей Шуленин