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

Цветовое оформление ячеек таблицы 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-файле.

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