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

Цветовое оформление ячеек таблицы QlikView
Ответ – да! Сразу оговорюсь, что визуально мы сделаем так, что ячейка будет казаться единой, но на самом деле их там будет две. Итак, приступим!

Исходные данные

Итак, пусть у нас есть такая таблица с данными:

т.е. есть какие-то суммы данных в разрезе округов, групп и за разные месяца.

Также нам потребуется вспомогательная таблица, не связанная с другими таблицами. Для этого в скрипте напишем следующее:

Предварительная подготовка

Начнем с того, что создадим для контроля временную, обычную сводную таблицу, дименшены (Dimensions) которой будут:

а выражение (Expression):

А также перенесем поле STAT_GROUP на горизонталь:

SUM() QlikView

Создание таблицы QlikView

1. Возьмем объект Диаграмма – “Прямая таблица” (Chart – Straight Table). В качестве дименшина (Dimension) укажем вычисляемый:

На вкладке Выражения (Expression) в качестве выражения укажем пока всего одно:

и назовем его “group-1”.

Group QlikView

Два значения в одной ячейке. В чем же идея?

Идея взять в качестве дименшина и подать для построения таблицы в два раза больше строк, чем есть у нас разных STAT_BRANCH. При том, мы связываем все возможные значения в поле STAT_BRANCH с парами чисел. Первое значение – с числами 1 и 2, второе – с числами 3 и 4 и так далее.

Кроме того, мы сразу учли в формуле дименшина то, что в системе могут быть  наложены фильтры или ограничения на STAT_BRANCH и поэтому строки и в нашей таблице должны быть только по тем STAT_BRANCH, которые сейчас попали в фильтр.

Для построения же колонок таблицы, мы взяли пока простой прием и выделили известную нам группу “group-1”, так же привязавшись к паре чисел для каждого значения STAT_BRANCH.

Теперь продолжим наши манипуляции:

  1. Добавим сами наименования округов из поля STAT_BRANCH, притом добавим их только для нечетных номеров строк нашей таблицы. Добавляем ещё одно выражение на вкладке “Выражения” (Expressions):

Пропишем “Метка” (Label) для этого выражения = “округ”, и переместим новый столбец выше предыдущего (перед “group-1”).

  1. Немного подправим формулу самого выражения для “group-1”, добавив ограничение, чтобы показывать сумму результата тоже только для нечетных строк:

  1. Чтобы четные строки не исчезали из-за того, что для них пока ничего не вычисляется уберем галочку “Скрыть нулевые значения” (Suppress Zero Values) на вкладке “Представление” (Presentation) и получим:Округ
  2. Далее выполним косметические настройки:
  • Вкладка Представление (Presentation)
    • Убираем галочки “Allow Drag and Drop”, “Sort Indicator”, “Selection Indicators”
    • Очистим поля “Null Symbol” и “Missing Symbol”
    • Колонку “group-1” отцентруем по горизонтали (как заголовок, так и значения)
    • Центровку по вертикали “Данные” (Data Vertical) для значений колонки “округ” выберем “к низу” (Bottom).
    • Самую первую колонку с номерами строк скроем, выбрав для неё опцию “Скрыть столбец” (Hide Column)Свойства диаграммы QlikView
  • На вкладке Выражение (Expression). Чтобы скрыть верхнюю строку “Итоги” (Total) для обоих наших выражений “округ” и “group-1” переключим режим итогов (“Total Mode”) в положение “Нет итогов” (No Totals).Свойства диаграммы QlikView
  • На вкладке Измерения (Dimensions). Чтобы скрыть нижнюю пустую строку включим галочку “Скрыть Null-значения” (Suppress when value is Null) и получим следующее:Свойства диаграммы QlikView
  1. Теперь усложним наше выражение для “group-1”, добавив в него формулу, которая для четных строк будет показывать изменение относительно предыдущего месяца:

    В формуле мы также сразу предусмотрели случай, когда выбран самый первый месяц, невозможно сверить показатели с предыдущим месяцем, т.к. его нет. А в результат мы добавили для  положительного прироста знак +, обернув разность функцией NUM:Свойства диаграммы QlikView
  1. Теперь, оставаясь на той же вкладке “Expressions”, скопируем наше выражение “group-1” и создадим две копии выражения: “group-2” и “group-3”, заменив в них соответственно фразу в формулах “group-1” на “group-2” и “group-3”.

Дизайн таблицы QlikView с двумя значениями ячейки

На данном этапе мы закончили все расчетные действия и теперь переходим непосредственно к визуальной составляющей.

  1. Для начала нужно выбрать стиль! Перейдем на вкладку “Стиль” (Style).

Главная фишка данного примера – выбрать “Полоски везде” (Stripes every) = 1.

Сам стиль выбираем по вкусу, в нашем примере для задания четких границ ячеек выбран стиль Базовый (Basic) и, конечно же, “Полоски везде” (Stripes Every) = 1. Свойства диаграммы QlikView

Ну, а теперь, поясню, почему так важен стиль раскраски строк таблицы через одну.  Дело в том, что в режиме дизайнера (меню Вид – “Сетка” (View – Design Grid)) теперь можно управлять отдельно визуализацией четных и не четных строк таблицы!

  1. Давайте это и проделаем. Войдем в режим дизайнера и выберем правой кнопкой ячейку в первой (нечетной) строке колонки “group-1”. В появившемся всплывающем меню выберем “Ячейка с настраиваемым форматом” (Custom Format Cell). Попадем в форму детальных настроек ячейки. В этой форме:
  • Убираем линию у “Левая граница” (Border after cell)
  • Выставляем размер “Размер текста” (Text Size) на 140% и включаем опцию “Полужирный” (Bold).
  • Далее выбираем применить эти настройки ко всем выражениям (Apply changes to – All expressions – Ok)
  1. Теперь вызываем такую же форму настроек для четных строк таблицы и в ней:
  • Убираем линию у “Правой границы” (Border before cell)
  • Выставляем размер “Размер текста” (Text size) на 80%.
  • Цвет “Цвет фона” (Background color) делаем белым

Свойства диаграммы QlikView

Получили следующее:Свойства диаграммы QlikView

  1. Продолжаем работать с визуализацией в режиме дизайнера.
  • Сделаем заголовки колонок жирным шрифтом,
  • Названия округов – наоборот, не жирным,
  • Размер шрифта округа уменьшим до 120%.
  • После этого выходим из режима дизайнера.
  1. Перейдем к раскраске значений:
  • Подсветим отрицательные изменения величин (в четных строках) красным цветом. Для этого на вкладке “Выражения” (Expressions) раскроем у выражения “group-1” плюсик и в “Цвет текста” (Text Color) пропишем следующую формулу:
  • Точно такую же формулу прописываем в “Цвет текста” (Text Color) и для выражений “group-2” и “group-3”. Получили следующее:Свойства диаграммы QlikView
  1. Для усиления выделения и восприятия ячейки целиком можно добавить подсветку фона всей “двойной ячейки”, когда изменение отрицательное. Для этого дополнительно пропишем ещё формулу в “Цвет фона” (Background Color):

  1. Теперь осталось ещё два важных момента:
  • Чтобы при выборе округа прямо в таблице (щелкая по колонке “округ”) корректно выбирались обе строки, а не одна, можно прописать соответствующий триггер в свойствах документа на выбор в поле “_СТРОКА”. Правда, придется переименовать в скрипте это поле с “_СТРОКА” на “СТРОКА” или убрать в скрипте команду HidePrefix=_

Но мы поступим проще – на вкладке «Общие» (General) включим галочку “Только чтение” (Read Only) и всё.

  • Чтобы при выборе фильтром только отдельных групп, они тоже оставались согласно фильтру в нашей таблице,  надо прописать соответствующее  условие показа колонки.

На вкладке “Выражения” (Expressions) для выражения “group-1” включим галочку “Условие” (Conditional) и пропишем такое условие:

Аналогичные условия вписываем в условия показа и для “group-2”, “group-3”.

  1. Ну вот и всё. Настройте бордюр, заголовок и получится как в данном примере:Свойства диаграммы QlikView

На этом первый выпуск альманаха визуализации QlikView завершен. На следующей неделе я выложу первый выпуск Альманаха Визуализации в qvw-файле.

Задавайте вопросы, делитесь идеями, опытом и знаниями здесь, в комментах. До новых встреч!