Contents
Ad-hoc отчеты в QlikView
Прежде, чем мы рассмотрим создание Ad-hoc отчета, рассмотрим работу функций SubStringCount и GetSelectedCount.
Функция SubStringCount
Синтаксис:
1 |
SubStringCount (text , substring) |
Функция возвращает число раз, которое подстрока встречается в текстовой строке. Результат — целое число. Если совпадения отсутствуют, возвращается 0.
Пример:
SubStringCount ( ‘abcdefgcdxyz’, ‘cd’ ) — возвращает 2
Функция GetSelectedCount
Синтаксис:
1 |
GetSelectedCount (fieldname [, includeexcluded=false]) |
Функция возвращает число выбранных значений в поле с именем fieldname. Если для IncludeExcluded установлено true, число будет включать в себя выбранные значения, исключенные выборками в другом поле (т.е. когда в другом поле выбраны элементы измерений, у которых нет ассоциативных связей с нашим измерением).
Примеры:
GetSelectedCount(Customers)
GetSelectedCount(Customers, true)
Создание гибкого отчета “Ad-hoc report”
Код для загрузки данных:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
[Таблица фактов]: LOAD * INLINE [ ID, Год, Квартал, Компания, Продажи, НДС 1, 2013, Q1, A, 129, 23.22 2, 2013, Q1, B, 130, 23.4 3, 2013, Q1, C, 147, 26.46 4, 2013, Q1, D, 119, 21.42 5, 2013, Q2, A, 298, 53.64 6, 2013, Q2, B, 338, 60.84 7, 2013, Q2, C, 330, 59.4 8, 2013, Q2, D, 291, 52.38 9, 2013, Q3, A, 539, 97.02 10, 2013, Q3, B, 617, 111.06 11, 2013, Q3, C, 558, 100.44 12, 2013, Q3, D, 547, 98.46 13, 2013, Q4, A, 772, 138.96 14, 2013, Q4, B, 780, 140.4 15, 2013, Q4, C, 877, 157.86 16, 2013, Q4, D, 876, 157.68 17, 2014, Q1, A, 281, 50.58 18, 2014, Q1, B, 200, 36 19, 2014, Q1, C, 275, 49.5 20, 2014, Q1, D, 191, 34.38 21, 2014, Q2, A, 543, 97.74 22, 2014, Q2, B, 455, 81.9 23, 2014, Q2, C, 648, 116.64 24, 2014, Q2, D, 465, 83.7 25, 2014, Q3, A, 741, 133.38 26, 2014, Q3, B, 724, 130.32 27, 2014, Q3, C, 856, 154.08 28, 2014, Q3, D, 765, 137.7 29, 2014, Q4, A, 966, 173.88 30, 2014, Q4, B, 906, 163.08 31, 2014, Q4, C, 1189, 214.02 32, 2014, Q4, D, 1066, 191.88 33, 2015, Q1, A, 522, 93.96 34, 2015, Q1, B, 415, 74.7 35, 2015, Q1, C, 554, 99.72 36, 2015, Q1, D, 482, 86.76 37, 2015, Q2, A, 705, 126.9 38, 2015, Q2, B, 677, 121.86 39, 2015, Q2, C, 669, 120.42 40, 2015, Q2, D, 700, 126 ]; [Перечень измерений]: LOAD * Inline [ Наименование измерения Год Квартал Компания ]; [Перечень метрик]: LOAD * Inline [ Наименование метрики Продажи НДС Среднее значение продаж]; |
Модель, которая получается после загрузки данных:
Таблицы [Перечень измерений] и [Перечень метрик] являются Data Island, т.е. таблицами, у которых отсутствуют взаимосвязи с главной таблицей.
Формируем лист “Add-hoc отчет”
Первоначально, нам необходимо создать обычную таблицу типа “Straight table”. На лист документа QlikView добавляем фильтры, с помощью List Box элементов.
Далее добавляем два List Box, в которых будут отображаться поля [Наименование измерения] и [Наименование метрики].
После этого формируем Straight Table, в которой выбираем 3 измерения и формируем 3 формульных выражения (НДС, Продажи, Среднее значение продаж).
На вкладке Expressions добавляем три выражения:
Label ‘НДС’:
1 |
=Sum(НДС) |
Label ‘Продажи’:
1 |
=Sum(Продажи) |
Label ‘Среднее значение продаж’:
1 |
=Avg (Продажи) |
Для того, чтобы наша таблица вычислялась только тогда, когда пользователь выбрал измерение и метрики в List Boxes, нужно задать в поле Calculation Condition выражение:
1 |
=GetSelectedCount([Наименование измерения]) > 0 and GetSelectedCount([Наименование метрики]) > 0 |
Данное выражение позволяет оптимизировать работу приложения (когда никаких выборок нет, таблица не будет занимать ресурсы сервера).
Далее переходим к формированию условий “Enable Conditional” на измерениях:
1 |
=SubStringCount('|' & Concat(distinct [Наименование измерения], '|') & '|', '|Год|') |
1 |
=SubStringCount('|' & Concat(distinct [Наименование измерения], '|') & '|', '|Квартал|') |
1 |
=SubStringCount('|' & Concat(distinct [Наименование измерения], '|') & '|', '|Компания|') |
На листе Expressions добавляем условия по каждому выражению:
1 |
=SubStringCount('|' & Concat(distinct [Наименование метрики], '|') & '|', '|НДС|') |
1 |
=SubStringCount('|' & Concat(distinct [Наименование метрики], '|') & '|', '|Продажи|') |
1 |
=SubStringCount('|' & Concat(distinct [Наименование метрики], '|') & '|', '|Среднее значение продаж|') |
Скачать готовый пример: Пример Add-hoc отчета в QlikView (zip-архив с документом qvw)
Leave a Reply