Phone icon Зв'язатись з нами

Дані та аналітика

Що таке 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
Три кроки ETL на Python: взяти дані з джерела, привести до єдиного вигляду, завантажити у сховище.

Часті запитання

Чим ELT відрізняється від ETL?

Порядком кроків. В ETL дані перетворюють дорогою і завантажують у сховище вже готовими. В ELT їх спочатку завантажують як є, а перетворюють усередині сховища його ж ресурсами. Хмарні платформи зробили другий підхід дешевим, тому він трапляється все частіше.

Чи потрібен ETL невеликій компанії?

Повноцінний процес із системою керування — навряд чи. Але якщо звіт щотижня вручну збирають із двох і більше джерел, цю роботу варто автоматизувати. Навіть простий скрипт за розкладом економить години і прибирає помилки ручного копіювання.

На чому пишуть ETL-процеси?

Найчастіше на Python із pandas або на SQL, якщо перетворення відбуваються в базі. Для розкладу і порядку кроків використовують Airflow, для перетворень у сховищі — dbt. Є й готові сервіси без коду, наприклад Fivetran.

Що робити, якщо джерело змінило формат даних?

Саме для цього в ETL додають перевірки: кількість рядків, типи даних, обов’язкові поля, сповіщення про відхилення. Краще зупинити процес із зрозумілою помилкою, ніж непомітно завантажити зіпсовані дані — інакше звіт покаже неправильні цифри.

Навчання аналітиці даних в OWU

Опануйте професію аналітика даних на практичних курсах із менторами та реальними проєктами.

Обрати курс