14 практических советов по использованию Tableau

Всем привет, меня зовут Меркурьев Михаил, я продуктовый аналитик в ManyChat. Год назад мы решили использовать Tableau как основной BI инструмент в компании и столкнулись с рядом проблем, касающихся того, что нужно наладить эффективную работу с инструментом для аналитиков, менеджеров продукта и других стейкхолдеров.

В этой статье я собрал мой личный топ советов при использовании 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

Из-за того, что мы создавали отчеты каждый по-своему и для разных задач, в какой-то момент мы поняли, что у наших заказчиков есть проблемы с работой разных отчетов. Мы пошли к ним и спросили, что было не так.

Основными проблемами были:

  1. Поиск нужных отчетов в Tableau.
  2. Разные названия фильтров и разное расположение. Из-за этого их приходится долго искать.
  3. Нет прямой связи между документацией к проекту/отчету и самим дашбордом.
  4. Нет доступа к исходному коду, из-за этого нельзя посмотреть исходные запросы и понять особенности расчетов.

Решая эту проблему, мы наткнулись на решение от Романа Бунина из Яндекса. И вдохновившись этим решением сделали свой шаблон.

Основные правила, которые мы для себя сформулировали:

Фиксируем расположение основных фильтров, их последовательность и порядок

Например, фильтры даты и все сопутствующие фильтры мы всегда располагаем второй строчкой в строго определенном порядке.

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

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

Выделяем специальное место под остальные фильтры и фиксируем их размер

Так как остальные фильтры используются реже, то «привыкания» к месту не происходит, их располагаем просто ниже в удобном для нас порядке. Если неосновных фильтров мало, то их можно унести вбок.

Выделяем специальное место под документацию к отчету

Если к дашборду есть документация, то под нее сразу есть отведенное место.

Фиксируем основные правила ведения дашбордов

Все размеры и шрифты четко фиксируются. За счет того, что все размеры (высота отделов под фильтры и заголовки) фиксированные, не происходит эффекта «прыганья» заголовков.

Договариваемся, что весь исходный код для отчетов оборачивается во view

В отчетах Tableau это выглядит следующим образом:

Хаки с дашбордами

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

Параметры и измерения

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

Шаг 1. Создать параметр

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

Шаг 2. Создать рассчитываемое поле, где и будет производиться подмена

//    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

Параметры и даты

Параметры также помогут переключать гранулярность времени. Например, изменить группировку по годам на группировку по дням, месяцам.

Кроме того, из-за того, что на графиках могут быть неоконченная неделя или месяц, то можно отдельным фильтром сразу же исключать данные.

Как это сделать:

Шаг 1. Создаем параметр

Шаг 2. Создаем фильтр и ставим его значение True

Если параметр стоит в Exclude, то на дашборд попадут только точки, для которых выполняется условие. Если в Include, то условие фильтра всегда будет выполнятся и ничего скрываться не будет.

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.

Шаг 1. Создаем пустой Floating контейнер и включаем Кнопку

Шаг 2. Добавляем нужный контент в контейнер

Шаг 3. Подставляем нужные картинки и оформления контейнера

Шаг 4. Дебажим через режим просмотра

Иерархии

Простой инструмент, который позволит делать разбивки со вложенностью.

Используйте Actions для ссылок на документацию

Для того, чтобы дать на большом дашборде сразу несколько ссылок на разные части документации, можно вставлять actions, если пользователь кликнул по определенному дашборду. Однако Actions можно использовать и для других вещей тоже.

Шаг 1. Создайте лист который будет вызывать Action


Шаг 2. Создайте Action

Меню с Actions находится здесь: Worksheet → Actions

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

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

Шаг 3. Добавьте лист на дашборд и протестируйте результат

Вуаля, при нажатии на лист на дашборде у tooltip появляется ваша ссылка на документацию.

Считайте доверительные интервалы для А/Б тестов

Для того, чтобы давать интерактивные отчеты менеджерам продукта о запущенных экспериментах, мы стали считать всю статистику напрямую в Tableau. Конечно, это не универсальное решение, но наша реализация довольно проста в исполнении.

Пример визуализации

Например конверсия в PRO подписку. На уровне SQL мы подготавливаем 2 группы и считаем для них конверсию. Далее идем по шагам.

Шаг 1. Создать два рассчитываемых поля для расчета верхней и нижней границы доверительного интервала

-- 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]))

Шаг 2. Добавить рассчитываемые поля в Detail

Шаг 3. Добавить их в финальный график в Tableau


Создаем 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

Let’s block ads! (Why?)

Read More

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *