14 практических советов по использованию Tableau
В этой статье я собрал мой личный топ советов при использовании Tableau. Многими из них я пользуюсь регулярно, копируя куски кода или освежая в памяти подход. Надеюсь, эта статья будет особенно полезна тем командам, которые только настраивают Tableau — некоторые из приёмов нужно сделать один раз и это сильно упростит жизнь. Я сам очень бы хотел найти такой гайд в начале нашего пути.
Пару слов о структуре. Сначала я расскажу про общие подходы, которые мы выработали для Tableau Server, а потом покажу конкретные хаки, которые, возможно, сделают вашу жизнь лучше. Начнем!
Общие подходы использования Tableau Server
Сейчас у нас 112 юзеров и Tableau — довольно популярный инструмент, но на пути к удобному для всех использованию инструмента мы столкнулись с рядом трудностей. Ниже рассмотрим топ таких проблем.
Используйте Views вместо Custom SQL
Использование вьюх в первую очередь дает нам гибкость, если произошли изменения в базе. Например, если раньше какая-то таблица стала называться по-другому, приходилось заходить во все дашборды и менять Custom SQL руками. Или, используя вьюхи, мы можем смотреть зависимости между ними и ловить нежелательные взаимосвязи. Например, когда запрос ссылается на другой запрос, а он на первый — это может вызвать лишнюю загрузку базы. И последнее, вьюху можно переиспользовать в других отчетах.
Все вышеперечисленное становится крайне трудоемким, если использовать кастомные запросы в табло, т.е. все приходится просматривать руками. Плюс при разработке отчета можно удобно тестировать — просто обновляешь код вьюхи в IDE и обновляешь datasource в Tableau, и у тебя готов результат.
Кроме того, мы используем в качестве базы данных Snowflake, и в нашем DWH есть все нужные данные. Нам не нужно делать джоины источников на уровне Tableau. Это сильно сокращает время работы с Tableau и даёт возможность вынести всю логику расчета во вью. Tableau мы стали использовать только как инструмент визуализации.
До
После
Управление доступами через проекты
Для того, чтобы не показывать лишние отчеты, и чтобы упросить навигацию по всем отчетам, мы создали проекты/папки, в каждой из которых свои уровни доступа. Например, публикуя отчет в Draft — его увидят только аналитики. В Stage находятся отчеты которые еще в работе, но которые уже можно показывать заказчикам. В Production уже лежат законченные отчеты, сгруппированные по отделам бизнеса, доступные всем.
Редактирование воркбука на Tableau Server, если ты не создатель
Маленький хак, который позволяет править отчет другого аналитика. Мелочь, но позволяет быстро поправить очевидную опечатку или добавить новый фильтр без поиска автора и без скачивания воркбука.
Различные методы подключения к данным: Extract, Live, Tableau Server
В какой-то момент у нас появилась проблема: как быстро работать в Tableau со вьюхами, которые считаются долго? Это напрямую отражается на времени загрузки отчета. Решений было несколько — материализация вьюх в таблицы или экстракты в Tableau по расписанию.
Материализация — это отдельный процесс, когда мы сохраняем результат вью в отдельную таблицу. По-простому процесс выглядит вот так.
CREATE OR REPLACE TABLE DMA.MV_TEST AS
SELECT * FROM DMA.V_TEST
Материлизацией у нас занимается команда инженеров данных. И мы ставим на материализацию те вьюхи, которые нам будут нужны постоянно, либо считаются долго.
Пример таблицы, из которой мы автоматически каждый день материализуем вьюхи
Если запрос из вьюхи считается относительно быстро, то его можно подключать к Tableau и сохранять в экстракт. При работе с экстрактами мы пользуемся следующим эмпирическим правилом:
- До 30 млн строк -> Extract
- Больше 30 млн строк -> Live
- Больше 30 млн строк и много экстрактов в воркбуке -> Tableau Server Extract
Использование функционала Tableau Server Admin — Jobs, Views
Отчеты Background Tasks for Extracts и Jobs позволяют решать проблему мониторинга всех обновлений экстрактов. Из-за того, что у нас +70 отчетов обновляются каждый день, через этот отчет можно быстро локализовать проблему, какие дашборды сегодня не обновились.
Используйте шаблоны оформления книг
Автор этой истории: vgolovneva
Из-за того, что мы создавали отчеты каждый по-своему и для разных задач, в какой-то момент мы поняли, что у наших заказчиков есть проблемы с работой разных отчетов. Мы пошли к ним и спросили, что было не так.
Основными проблемами были:
- Поиск нужных отчетов в Tableau.
- Разные названия фильтров и разное расположение. Из-за этого их приходится долго искать.
- Нет прямой связи между документацией к проекту/отчету и самим дашбордом.
- Нет доступа к исходному коду, из-за этого нельзя посмотреть исходные запросы и понять особенности расчетов.
Решая эту проблему, мы наткнулись на решение от Романа Бунина из Яндекса. И вдохновившись этим решением сделали свой шаблон.
Основные правила, которые мы для себя сформулировали:

Фильтры всегда располагаются сверху. Они отделены как основные, у них всегда фиксированный порядок. Это позволяет «привыкнуть» и быстро их находить.

Исключением будут те шаблоны, где Business Type, Country, Country Group являются не основными, а применимы только для одного графика.




Хаки с дашбордами
Далее пойдут советы/лайфхаки/приемы которые мы ежедневно используем в наших отчетах. Скачать воркбук с примерами можно тут.
Параметры и измерения
Для быстрого анализа данных часто нужно использовать разбивки по различным измерениям. Чтобы не строить множество листов с разными комбинациями измерений, можно использовать параметры.

// Dimension Parameter
Customer Name
Ship Mode
Country/Region
City
State
Category
Sub-Category
Product Name
Discount

// Dimension Breakdown
CASE [ Dimension Parameter]
WHEN 'None' THEN ''
WHEN 'Order ID' THEN [Order ID]
WHEN 'Customer Name' THEN [Customer Name]
WHEN 'Ship Mode' THEN [Ship Mode]
WHEN 'Country/Region' THEN [Country/Region]
WHEN 'City' THEN [City]
WHEN 'State' THEN [State]
WHEN 'Category' THEN [Category]
WHEN 'Sub-Category' THEN [Sub-Category]
WHEN 'Product Name' THEN [Product Name]
WHEN 'Discount' THEN STR(ROUND([Discount],2))
ELSE ''
END
Параметры и даты
Параметры также помогут переключать гранулярность времени. Например, изменить группировку по годам на группировку по дням, месяцам.
Кроме того, из-за того, что на графиках могут быть неоконченная неделя или месяц, то можно отдельным фильтром сразу же исключать данные.
Как это сделать:


CASE [Not Finished Period]
WHEN 'Exclude' then DATE(DATETRUNC([Period Granularity], TODAY())) > [My Date]
ELSE TRUE
END
Экспорт сырых данных
Иногда, когда готов отчет, стейкхолдеры хотят получить сырые данные из отчета с определенными фильтрами. Например ID страниц, чтобы позвать таких пользователей на интервью. Для того, чтобы облегчить доступ к ним без выдачи дополнительных доступов к базе или расширенных прав к Tableau — можно вывести лист, связанный с основным отчетом, с нужными сырыми полями.
Плюс такого подхода в том, что так устраняются множество ad-hoc запросов, плюс экономия на учетках с расширенными правами Tableau.
Полученные данные можно скачать как таблицу нажав на «Crosstab»
Показывайте labels только на окончании графиков
Простое решение как уменьшить шум на графиках, не убавив в информативности.
Добавляйте плавающие контейнеры как tooltip
Если хочется оставить дашборд чистым, когда появляется очень много фильтров. Менее важные можно спрятать в tooltip.
Иерархии
Простой инструмент, который позволит делать разбивки со вложенностью.
Используйте Actions для ссылок на документацию
Для того, чтобы дать на большом дашборде сразу несколько ссылок на разные части документации, можно вставлять actions, если пользователь кликнул по определенному дашборду. Однако Actions можно использовать и для других вещей тоже.



Далее выберите, что именно должен делать Action — редиректить на сайт, выделять значения, фильтровать и т.д. В нашем случае мы выбираем Go to URL.
В следующем окне выбираем лист по клику, по которому на дашборде должно происходить нужное нам действие. Вставляем ссылку на документацию и указываем, чтобы ссылка открылась в новой вкладке браузера.

Считайте доверительные интервалы для А/Б тестов
Для того, чтобы давать интерактивные отчеты менеджерам продукта о запущенных экспериментах, мы стали считать всю статистику напрямую в Tableau. Конечно, это не универсальное решение, но наша реализация довольно проста в исполнении.
Пример визуализации
Например конверсия в PRO подписку. На уровне SQL мы подготавливаем 2 группы и считаем для них конверсию. Далее идем по шагам.
-- Lower Limit
[PRO CONVERSION] - 1.96*SQRT(([PRO CONVERSION]*(1-[PRO CONVERSION]))/COUNTD([USER_ID]))
-- Upper Limit
[PRO CONVERSION] + 1.96*SQRT(([PRO CONVERSION]*(1-[PRO CONVERSION]))/COUNTD([USER_ID]))


Создаем Reference Line, где в Value подставляем наши рассчитываемые поля.

Место для рефлексии
Эта статья — скорее сборник тех проблем, с которыми мы столкнулись. Решив эти проблемы, мы стали экономить часы работы при построении отчетов, проверки гипотез и получении инсайтов.
Изучение нового инструмента — это длительный процесс, не всегда все приемы подходят под задачу, некоторые использовались лишь раз, либо не прижились среди команды аналитиков. Однако, мы каждый день мы находим что-то новое и стараемся собирать лучшие приемы в нашей базе знаний и таких статьях, как эта. Спасибо ребятам из русскоязычного Tableau комьюнити и отдельно Роме Бунину, который делится интересными и полезными практиками работы в Tableau в рунете.
Пишите в комментариях, какие вы используете хаки и приемы, которые упрощают вам работу в Tableau?
Ссылки
Документация
Группировка воркбуков по проектам
Параметры
Background Tasks for Extracts
Managing Jobs in Tableau Server
Labels
Tableau Online tips: Extracts, live connections, & cloud data
Actions
Полезные ссылки по теме
Блог Романа Бунина по визуализации данных
YouTube канал Penguin Analytics про приемы в Tableau
YouTube плейлист Gronify про приемы в Tableau
Табло комьюнити
Полезные приёмы работы с Tableau