Короткий ответ
В ELT порядок этапов — Extract, Load, Transform: исходные данные сохраняются в raw-слое, а витрины строятся уже внутри DWH.
Как это работает подробнее
Облачные колоночные хранилища позволяют независимо масштабировать вычисления и хранение. Поэтому трансформации удобно описывать SQL-моделями, а при изменении логики пересчитывать их из неизменяемого raw-слоя.
- Повторная обработка. Не нужно заново обращаться к источнику при изменении модели.
- Аудит. Сырые данные помогают воспроизвести результат и расследовать ошибки.
Пример кода
stg_purchases.sql
SELECT event_id,
JSON_EXTRACT_SCALAR(payload, '$.user_id') AS user_id,
TIMESTAMP(JSON_EXTRACT_SCALAR(payload, '$.ts')) AS event_ts
FROM raw_events
WHERE event_name = 'purchase';Что использовать на практике
- Разделяйте raw, staging и mart-слои и задавайте сроки хранения для каждого.
- Добавляйте тесты типов, обязательности и уникальности сразу после загрузки.
Подводные камни
- Raw без контроля. ELT не отменяет входные проверки и мониторинг схемы.
- Неконтролируемая стоимость. Частые полные пересчёты и бесконечное хранение staging увеличивают расходы.