Оптимизация работы отчетов
Статья подготовлена в рамках сериала «Залетай в BI»
После небольшого перерыва Руслан продолжает осваивать премудрости Табло. В этот раз мы сконцентрировались на производительности и разбирались с тем как записывать Performance Recording. Скорость работы отчетов — очень важный показатель, для счастья пользователей. Если вы научитесь делать быстрые дашборды, они будут вам очень благодарны. =)
В этот раз задача была сугубо техническая — разобраться, что влияет на скорость работы отчета, как это замерить и улучшать. Для этого Руслан проштормил кучу материалов и попробовал применить усвоенное к одному из дашбордов, что мы делали до этого. Был записан исходный перфоманс, сделаны гипотезы по улучшениям и проведены повторные замеры.
Исходный дашборд: https://public.tableau.com/app/profile/ruslan6180/viz/olist_new/Dashboard_City
Исходный перфоманс рекорд отчета:

Чтобы перфоманс рекорд был максимально идентичным все записи запускались через макрос-кликер, записывающий движение мышки. Также был отключен фильтр на длительность операции < 0.01 секунды, чтобы видеть все операции. Записи проводились локально
За точку старта берется событие с параметром tabdoc:navigate-to-sheet, а точкой окончания — последняя операция render, не относящаяся к окончанию работы перфоманс рекорда.
Гипотезы по улучшению отчета:
- Уменьшить кол-во выводимых строк в Sellers List (сейчас выводится 5к+ marks), используя пагинацию и оставить только топ 100 городов на карте (вместо 4к)
- Переделать график с боксплотами, оставив только диапазоны, без отдельных значений
Проверка гипотезы 1
Теперь в таблице sellers list выводится только 30 строк, а на карте только 100 значений. Результаты:

Проверка гипотезы 2
Переделаны боксплоты, чтобы не было выбросов. Результаты:

Итого
Финальный дашборд: https://public.tableau.com/app/profile/ruslan6180/viz/olist_new_performance/Dashboard_City
Результат в серднем для первичной загрузки -0,5 сек от исходного времени в 3,7 сек (или -13%). Дашборд и так был быстрый, но процентный прирост довольно значимый.