Оптимизация производительности дашбордов в Tableau

Автор статьи — Мария Мазюк

Если дашборд Tableau включает большие объемы данных, то могут возникнуть проблемы со скоростью отображения визуализаций. В данной статье мы рассмотрим способы оптимизировать производительность дашборда.

Оптимизация источников данных

1 Использование Custom SQL при подключении Live к базе данных и обновлении экстрактов является неэффективным. Если возможно, следует создать представление (view / виртуальную таблицу) в базе данных для реализации вашего запроса и подключить Tableau к представлению.

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

2 Для оптимизации производительности подключение к Extract предпочтительней, чем Live. Если нет крайней необходимости подключения Live (например, при анализе данных в режиме реального времени), всегда создавайте экстракт и используйте его в качестве источника данных. Установите частоту обновления (Refresh) экстракта для сохранения актуальности данных.

3 Минимизируйте количество полей в источнике данных. При создании экстракта Tableau также создает отдельные файлы (сжатые и отсортированные) для каждого поля в источнике данных. Чем меньше полей (т.е. файлов, к которым необходимо обратиться при запросе), тем выше производительность.

Способы минимизации количества полей:

— Непосредственное удаление в Tableau Desktop или Prep.

— Использование Pivot для преобразования источника данных из перекрестного формата (crosstab) в многоколоночный формат (columnar) в Tableau Desktop или Prep.

— Скрытие полей, неиспользованных в визуализациях книги. Используйте опцию Hide All Unused Fields при создании экстрактов либо в меню Data Pane слева от листов в книге, чтобы скрыть все неиспользованные в книге поля. Скрытые поля не будут включены в экстракт. Можно также скрыть поля выборочно, выбрав Hide в меню поля на Data Pane. Если вы скрыли поля в Tableau уже после создания экстракта и до полного (Full Refresh) либо поступательного обновления (Incremental Refresh), то скрытые поля станут невидимыми (если не выбрана опция Show Hidden Fields в меню Data Pane), но не будут физически удалены из экстракта до его обновления.

4 Минимизируйте количество строк в источнике данных. Чем меньше данных в датасете, тем выше производительность Tableau. Есть несколько способов минимизировать количество строк в экстракте:

— Настройка фильтров на уровне экстракта (Extract Filters) для исключения данных, в которых нет необходимости при построении визуализаций. Отфильтрованные строки не будут включены в экстракт. Важно отметить, что фильтры на уровне источника данных (Data Source Filters), доступные в меню источника данных на Data Pane, находятся ниже фильтров на уровне экстракта (Extract Filters) в порядке выполнения Tableau, и отфильтрованные ими данные будут включены в экстракт. Таким образом, Data Source Filters не уменьшают размер экстракта и не оказывает позитивного влияния на производительность. Также можно отфильтровать данные для исключения из экстракта в потоке Tableau Prep.


— Использование выборки или топ-N строк вместо всех данных. Выборку можно задать при создании экстракта в Tableau Desktop либо на шаге Input в Tableau Prep.



— Агрегирование данных в источнике, т.е. понижение гранулированности данных. Например, если наблюдение (строка) в датасете представляет собой информацию об одном товаре в транзакции интернет-магазина, а анализ планируется производить на уровне транзакций, то имеет смысл агрегировать источник данных до уровня транзакции. Агрегирование данных можно произвести при создании экстракта, отметив галочкой Aggregate data for visible dimensions. Предварительно необходимо скрыть (Hide) поля, которые повышают гранулированность. В нашем примере таким полем являлось бы поле в названиями (либо SKU) товаров. Также можно произвести агрегирование дат, отметив Roll up dates to и выбрав уровень детализации дат. Эта опция будет полезна, если, к примеру, в визуализации поле даты использовано на уровне недель / месяцев / лет, а строки в датасете на уровне дней или часов. Также понизить гранулированность данных можно с помощью шага Aggregate в Tableau Prep. Агрегирование нужно применять осторожно, если в расчетах использовалась функция COUNTD.

5 Для ускорения обновления экстрактов используйте опцию поступательного обновления (Incremental Refresh) при создании экстрактов. В этом случае при обновлении экстракта будут добавляться только новые строки из базы данных на основании заданного поля. При поступательном обновлении неактуальные строки не переписываются обновленными строками, поэтому при изменении отдельных полей могут возникнуть дублированные строки. Следует полностью обновлять экстракты с регулярной частотой (еженедельно или ежемесячно). Важно отметить, что с течением времени положительный эффект поступательного обновления экстрактов на производительность снижается. Это связано с ростом размера датасета.

6 Если данные собираются из нескольких таблиц, минимизируйте количество объединений (Join). В большинстве случаев Join работает быстрее, чем Data Blending. Но если вторичная таблица содержит большое количество данных, то блендинг может работать эффективнее, так как блендинг сначала агрегирует данные. Важно отметить, что Join лучше всего подходит, когда таблицы соотносятся 1:1 (только по одной строке для каждого значения ключа в таблицах). Если же соотношение строк 1:многие или многие:многие, то это приведет к дублированию данных и, как следствие, скажется на производительности.

7 Если в качестве источника данных использованы объединенные таблицы (с помощью Join) со ссылочной целостностью (referential integrity), то активирование опции Assume Referential Integrity в меню источника данных может повысить производительность. Данная опция полезна, если вы точно знаете, что данные в таблицах имеют ссылочную целостность (т.е. строки из одной таблицы всегда имеют соответствующие им строки во второй таблице), но база данных не требует ссылочной целостности. В этом случае Tableau будет включать присоединенную таблицу в запрос, только если на ее поля ссылаются поля в визуализации. Если возможно активирование требования ссылочной целостности на стороне базы данных, то этот вариант предпочтительней, так как помогает оптимизировать производительность и базы данных, и Tableau. Активирование Assume Referential Integrity без ссылочной целостности таблиц может привести в ненадежности результатов запроса.

8 Материализуйте вычисления в экстракте с помощью опции Compute Calculations Now меню Extract. Это позволит Tableau посчитать вычисления заранее и сохранить их в экстракте. При будущих запросах Tableau сможет использовать ранее рассчитанные значения, ускоряя визуализацию. Если формула заранее вычисленного поля изменена или удалено само поле, то заранее вычисленные значения для данного поля удаляются из экстракта. Измененное поле может быть заново рассчитано при повторном выборе опции Compute Calculations Now. Следует помнить, что некоторые вычисления не могут быть заранее рассчитаны: 1) вычисления с формулами NOW() and TODAY(); 2) вычисления со сторонними функциями (как RAWSQL and R); 3) табличные вычисления; 4) вычисления LOD.

Оптимизация вычислений

9 Понизьте гранулированность вычислений LOD: уменьшите количество полей в задании уровня детализации либо исключите поля с высоким уровнем гранулированности.

10 Оптимизируйте визуализации с табличными вычислениями: чем больше отметок (Marks) содержит визуализация, тем больше времени требуется Tableau для расчета табличных вычислений.

11 По возможности замените строковые вычисления (String) логическими либо целочисленными. Вычисления со строками являются самыми медленными.

12 По той же причине используйте целочисленные параметры (Integer) со списком значений вместо строковых параметров. В качестве отображаемых значений (Display As) используйте строковые значения.

13 По возможности вместо функций AVG и ATTR используйте функции MIN and MAX, так как они работают быстрее.

14 При работе со строковыми полями по возможности вместо вычислений используйте родные функции Tableau, такие как группировка, сеты, бины, Сustom dateCombined Field и Aliases.

15 По возможности избегайте преобразований строковых полей с помощью функций FINDLEFTRIGHTMID и проч.

16 Функция COUNTD — одна из самых медленных в Tableau. По возможности, избегайте ее использования.

17 Если табличные вычисления работают медленно, попробуйте заменить их с помощью вычислений LOD, и наоборот.

18 При сложных логических вычислениях с оператором IF используйте ELSEIF вместо ELSE IFELSEIF является частью первого оператора IF, а с ELSE IF задается второй оператор.

19 Используйте функцию NOW, только если необходимо вернуть временную метку. Для вычислений на уровне дат используйте TODAY.

Оптимизация фильтров

20 Минимизируйте количество быстрых фильтров (Quick filter), особенно с опцией Only Relevant Values.

21 По возможности на дашбордах используйте параметры и экшн (Filter Dashboard Action) вместо быстрых фильтров.

22 Для быстрых фильтров со множественным выбором используйте опцию Customize >> Show Apply Button.

23 Используйте логические либо целочисленные фильтры, вместо строковых.

24 Если необходимо отфильтровать данные по датам, быстрее работают фильтры для непрерывных полей (Continuous) типа Date, чем для дискретных полей (Discrete) типа Date.

25 Для дискретных полей, особенно с большим количеством значений, используйте включающие фильтры (Include) вместо исключающих фильтров (Exclude).

Оптимизация дашбордов

27 Минимизируйте количество листов на дашборде.

28 Оптимизируйте визуализации с большим количеством отметок (Marks).

29 Минимизируйте количество быстрых фильтров (Quick filter). Вместо них используйте Filter Dashboard Action.

30 Используйте фиксированный размер дашборда.

Запись производительности

В Tableau есть возможность проверить производительность созданного вами дашборда с помощью отчета Performance Recording (Help > Settings and Performance > Start/Stop Performance Recording). Запись производительности поможет определить наиболее времязатратные события при использовании дашборда. Подробнее в справке Tableau.

https://maryiamaziuk.com/data-viz-blog/

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

63 queries in 0,225 seconds