Как работает Tableau в плане сбора данных: самостоятельно или через подключение к витрине
Что проверяют
Понимаете ли вы, что Tableau инструмент визуализации, а не ETL, и где в архитектуре должна жить подготовка данных. Следом спрашивают, когда вы выберете живое подключение, а когда экстракт, и как обеспечите свежесть.
Как отвечать
Короткий ответ: сам Tableau данные не собирает. Он подключается к источнику и шлёт ему запросы, а собирает и чистит данные конвейер до него, результат которого и есть витрина.
Режимы подключения:
- Live: каждое действие на дашборде превращается в SQL к источнику. Данные свежие, но скорость зависит от базы. Годится для аналитических хранилищ вроде ClickHouse, Greenplum, Snowflake и плохо подходит для транзакционной базы продукта;
- Extract: Tableau выгружает данные в файл
.hyperсвоего движка Hyper и дальше считает по нему. Быстро, но данные на момент обновления. Обновление по расписанию, полное или инкрементальное, настраивается на Tableau Server или Tableau Cloud; - Published Data Source: источник со связями и вычисляемыми полями публикуется на сервер и переиспользуется в разных книгах, поэтому метрики везде считаются одинаково.
Лёгкую подготовку делают в Tableau Prep Builder, по расписанию его потоки запускает Prep Conductor. Для локальных баз при работе с Tableau Cloud нужен Tableau Bridge. Модель данных собирают через связи (relationships) на логическом уровне или классические join.
Сильный ответ описывает связку: сырые данные попадают в DWH, SQL-модели в dbt под управлением Airflow собирают витрину с нужным зерном и готовыми метриками, Tableau подключается к ней экстрактом с ежечасным или ежесуточным обновлением. Если был свой опыт, назовите объёмы и частоту обновления.
Где спотыкаются
Подключают Live к боевой базе приложения. Десяток пользователей с фильтрами создают ей нагрузку, которую никто не планировал.
Строят витрину внутри книги: десятки join сырых таблиц, custom SQL и вычисляемые поля. Логика дублируется по отчётам, и цифры в двух дашбордах расходятся.
Включают инкрементальное обновление экстракта и не знают, что оно лишь добавляет строки по возрастающему полю. Изменённые и удалённые строки так не подтянутся, нужен периодический полный пересчёт.