Блог по дизайну QlikView недавно писал об использовании valuelists и valueloops в качестве расчетных для создания синтетических измерений. Они демонстрируют, как последние могут использоваться для создания таблиц ключевых показателей эффективности, среди других графиков.
В прошлом, я считал этот подход чрезвычайно полезным и часто использовал его. Тем не менее, я недавно работал на клиента с большим набором данных, сделал некоторые настройки производительности и нашел подход к созданию синтетического измерения, который резко повышает производительность по сравнению с использованием valuelists и valueloops.
Вместо того чтобы использовать valueList или valueloop с расчетным размером, вы можете создать поле в своей модели данных с двойными значениями, которые соответствуют меткам и номеру строки значения поля. Их можно разместить в таблице, которая не подключена к модели данных. Этот метод может использоваться вместо расчетных измерений в графиках.
Я создал пример, используя набор демо-данных для банковской отрасли. Моя задача заключается в том, чтобы создать таблицу KPI с 4 метриками: Кредиты, средневзвешенная ставка, средневзвешенный рейтинг рисков, депозиты. Я создал отдельные документы, где я создал диаграмму дважды: один раз с помощью valueloop, а второй раз с помощью двойного измерения.
Тест 1: ValueLoop
Данная таблица содержит следующие атрибуты:
Измерение: =valueloop(1,4)
Выражение1: =Pick(ValueLoop(1,4),‘Loans’,‘WAR’,‘WARR’,‘Deposits’)
Выражение2: =Pick(ValueLoop(1,4),money(sum([Loan Principal Balance])),num(sum([Loan Current Interest Rate]*[Loan Principal Balance])/sum([Loan Principal Balance]),’#.##’),num(sum([Loan Risk Rating]*[Loan Principal Balance])/sum([Loan Principal Balance]),’#.##’),money(sum([Deposit Balance])))
Измерение в данном примере спрятано. Я предпочитаю этот подход прежде всего, потому что он позволяет создавать линейные элементы с такими же метками. Это полезно при создании списка КПЭ с субметриками, например:
| Кредиты | X,XXX |
| Взвешенные | X.XX |
| Депозиты | X,XXX |
| Взвешенные | X.XX |
Тест 2: Двойное измерение
Данная таблица содержит следующие атрибуты:
Измерение: %DualTest
Выражение: =Pick(%DualTest,money(sum([Loan Principal Balance])),num(sum([Loan Current Interest Rate]*[Loan Principal Balance])/sum([Loan Principal Balance]),’#.##’),num(sum([Loan Risk Rating]*[Loan Principal Balance])/sum([Loan Principal Balance]),’#.##’),money(sum([Deposit Balance])))
Поле % DualTest создано по следующему сценарию:
[%DualDimTest]:
Load dual(‘Loans’,1) as %DualTest
AutoGenerate(1);
Load dual(‘WAR’,2) as %DualTest
AutoGenerate(1);
Load dual(‘WARR’,3) as %DualTest
AutoGenerate(1);
Load dual(‘Deposits’,4) as %DualTest
AutoGenerate(1);
Мы используем двойную функцию в выражениях загрузки, одновременно назначая текстовое и числовое значение в поле % DualTest. Это позволяет нам представить его в виде текста в измерении диаграммы, при этом ссылаясь на числовое значение в выражении диаграммы.
Результаты Теста
Чтобы проверить каждый график, я сохранил каждый документ на чистом листе. Тогда, я полностью закрыл программу QlikView и вновь открыл документ. Оттуда, я перешел на лист, содержащий диаграмму, и проверил Calc Time в Sheet Properties > Objects. Я повторил эти шаги 5 раз для каждой схемы. Вот результаты, в миллисекундах:
| ValueList | Dual Dim | |
| Попытка 1 | 203 | 78 |
| Попытка 2 | 234 | 47 |
| Попытка 3 | 219 | 63 |
| Попытка 4 | 249 | 63 |
| Попытка 5 | 234 | 63 |
| Среднее | 227.8 | 62.8 |
График valueloop формируется почти в 4 раза медленнее, чем график с использованием двойного размера. 1-й тест имеет дополнительное выражение, так что я также испробовал диаграмму без дополнительного выражения, чтобы добавить метки. Это уменьшило средний показатель до ~ 200 мс, что гораздо хуже, чем дуальный подход к измерению.
Этот тест показывает, что когда это возможно, следует использовать изолированную размерность должно вместо valuelists для создания синтетических измерений.
-Speros
Найти решение у бизнес-партнера QlikTech (QlikView) в России.
Форум разработчиков QlikView и Qlik Sense. Получите ответы на все вопросы по QlikView и Qlik Sense!
RSS
19 октября 2015
gromych 

Опубликовано в рубрике