В недавнем блоге QlikView Design Blog (The QlikView Cache), Хенрик Кронстроьом написал:
Кэш является глобальным. Он используется всеми пользователями во всех документах. Кэш не относится к конкретному документу или к одному пользователя. Таким образом, если пользователь выбирает что-то, что уже было выбрано другим пользователем, то кэш используется. И если у вас есть те же данные в двух различных приложениях, то одна запись в кэше может быть использована для обоих документов.
Основываясь на своем опыте, я написал:
Я был бы удивлен, узнав, как запись в кэше может использоваться в нескольких документах, учитывая, что в QlikView повторно не использует даже то же выражение, сгруппированные по той же размерности в различных типах диаграмм в пределах одного приложения. Пример: прямая таблица с Суммой (Продажа) Заказчика и гистограмма с Суммой (Продажа) Заказчика рассчитываются независимо друг от друга в одном приложении. По крайней мере, это было так, когда я испытывал более раннюю версию 11.0.
Хенрик ответил:
Кэш может использоваться в нескольких документах и мой опыт показывает, что так и происходит. Если у вас случалось, что та же комбинация размера и выражения не использовала один кэш, то, вероятно, причина была в том, что выражение (или рассчитанный размер) были по-разному записаны в двух местах. Либо это, либо Вы обнаружили баг. Потому что записи кэша должны быть повторно использованы …
Прошло несколько лет и, я думаю, пришло время для повторного тестирования 11.2 SR5. Вот каким образом я генерировал данные для примера:
Base: LOAD 'C' & Left(RowNo(),1) как Страна, Left(RowNo(),4) as OrderID, Round(Rand()*500) как Продажи, Round(Rand()*30) as UnitCost, Round(Rand()*10) как Количество AUTOGENERATE 100000000;
(Вы можете генерировать меньше рядов.)
Это моя диаграмма. Все диаграммы были созданы путем копирования и вставки Прямой Таблицы, так что нет никакой возможности для дисперсии в написании выражений.
- Измерение: Страна
- Выражение 1 (Средний Заказ Продаж): Сред(Aggr(Сум(Продажа),ЗаказID))
- Выражение 2 (Индекс Среднего Заказа Продаж): Сред (Aggr(Сума(Продажа),ЗаказID)) / Сред (ОБЩАЯ Aggr(Сум(Продажа),ЗаказID))
Листы на переднем краю:
- Целевая страница (пустая)
- Прямая таблица с одним измерением и двумя выражениями
- Копирование Прямой Таблицы (не связанное)
- Копирование Прямой Таблицы, изменено в комбо график
- Копирование Прямой Таблицы с отключением второго выражения
Тест состоял в том, чтобы прощелкать листы в последовательности, и ознакомиться с временем расчёта объектов на каждом листе. Я проделал это три раза, и вот средние результаты:
Вот два вывода, которые могут удивить Вас в работе кэша:
- Копия графика мгновенно рассчитывает кэш оригинального графика при копировании диаграммы, меняется лишь тип диаграммы и занимает значительно больше времени, хотя и не так много, как в оригинале. Другими словами, кэшированные результаты одного типа диаграммы не появляются, чтобы создать те же мгновенные результаты в других типах диаграмм, несмотря на то, что у них одни и те же меры и измерения.
- Даже я был удивлен, обнаружив, что копия графика с одним из отключенных выражений не использует кэш исходного графика.
Эта информация, в сочетании с тем, что QlikView не может распознавать два выражения одновременно, на самом деле означает то же самое и приводит меня к мысли, что кэш мало способен на улучшение производительности в объектах приложения, создавая содержательную разницу только при пересчете диаграммы основанной на ее собственном кэше. Опять же, я сомневаюсь, что в настоящее время QlikView способно на эффективность кэша всех приложений, основываясь на данных результатах, и я вижу, что есть другие области, где могла бы быть проведена оптимизация работы. А именно, если бы можно было повторно использовать кэш в пределах приложения и лучше распознавать, когда выражения написаны по-разному, но является одинаковыми, клиенты могли бы видеть существенные выгоды в производительности без всяких дополнительных усилий с их стороны в обновлении программного обеспечения сервера.
Найти решение у бизнес-партнера QlikTech (QlikView) в России.
Форум разработчиков QlikView и Qlik Sense. Получите ответы на все вопросы по QlikView и Qlik Sense!