Дані та аналітика
Що таке ETL?
ETL (Extract, Transform, Load — видобути, перетворити, завантажити) — це процес перенесення даних із джерел у сховище. Спершу дані беруть із систем, потім приводять до єдиного вигляду і очищують, а вже тоді завантажують туди, де з ними працюватимуть аналітики.
ETL потрібен щоразу, коли дані зберігаються в різних місцях. У CRM клієнт записаний в одному полі, у бухгалтерії — в іншому, рекламний кабінет передає дати у своєму форматі. Без етапу перетворення звести це в один звіт неможливо.
Варіант ELT змінює порядок кроків: дані спочатку завантажують у сховище як є, а перетворюють уже всередині нього засобами самої бази. Так роблять у хмарних сховищах, де вистачає обчислювальних потужностей, а гнучкість важливіша.
Де застосовується
ETL-процеси запускають за розкладом, найчастіше вночі, щоб уранці звіти показували свіжі дані. Інформацію беруть із CRM, облікової системи, рекламних кабінетів і логів сайту, зводять до спільних довідників і складають у сховище, з якого її читають BI-інструменти.
Цим займається інженер даних, а в невеликих командах — аналітик. Процеси пишуть на Python або SQL, а керують ними через Airflow, dbt або вбудовані інструменти хмари. Велика частина роботи — не перенесення, а обробка збоїв: що робити, якщо джерело не відповіло або змінило формат даних.
Приклад
Звіт з реклами збирає дані з трьох кабінетів. В одному дата приходить текстом, в іншому сума в доларах, у третьому назва кампанії із зайвими пробілами. Етап перетворення приводить усе до одного вигляду, і тільки після цього цифри можна складати.
raw = pd.read_csv('exports/orders.csv') # Extract
clean = (raw
.rename(columns={'order_date': 'created_at'}) # Transform
.assign(created_at=lambda d: pd.to_datetime(d.created_at))
.query("status == 'paid'")
.drop_duplicates(subset='order_id'))
clean.to_sql('fact_orders', warehouse, if_exists='append') # Load
Часті запитання
Чим ELT відрізняється від ETL?
Порядком кроків. В ETL дані перетворюють дорогою і завантажують у сховище вже готовими. В ELT їх спочатку завантажують як є, а перетворюють усередині сховища його ж ресурсами. Хмарні платформи зробили другий підхід дешевим, тому він трапляється все частіше.
Чи потрібен ETL невеликій компанії?
Повноцінний процес із системою керування — навряд чи. Але якщо звіт щотижня вручну збирають із двох і більше джерел, цю роботу варто автоматизувати. Навіть простий скрипт за розкладом економить години і прибирає помилки ручного копіювання.
На чому пишуть ETL-процеси?
Найчастіше на Python із pandas або на SQL, якщо перетворення відбуваються в базі. Для розкладу і порядку кроків використовують Airflow, для перетворень у сховищі — dbt. Є й готові сервіси без коду, наприклад Fivetran.
Що робити, якщо джерело змінило формат даних?
Саме для цього в ETL додають перевірки: кількість рядків, типи даних, обов’язкові поля, сповіщення про відхилення. Краще зупинити процес із зрозумілою помилкою, ніж непомітно завантажити зіпсовані дані — інакше звіт покаже неправильні цифри.
Навчання аналітиці даних в OWU
Опануйте професію аналітика даних на практичних курсах із менторами та реальними проєктами.
Обрати курс