Ответ
ETL (Extract, Transform, Load) — это процесс в инженерии данных, предназначенный для интеграции данных из различных источников в единое централизованное хранилище. Его главная цель — подготовить сырые данные для анализа, бизнес-отчетности и машинного обучения.
Процесс состоит из трех этапов:
-
Extract (Извлечение): Сбор сырых данных из одного или нескольких источников, таких как реляционные БД (PostgreSQL, MySQL), NoSQL-базы, API, лог-файлы.
-
Transform (Преобразование): Самый важный этап, на котором данные приводятся к нужному формату. Включает в себя:
- Очистку (удаление дубликатов, обработка пропусков).
- Агрегацию (группировка данных, вычисление сумм, средних значений).
- Обогащение (добавление новых данных из других источников).
- Валидацию и приведение типов.
-
Load (Загрузка): Запись преобразованных данных в целевую систему, например, в хранилище данных (Data Warehouse), озеро данных (Data Lake) или витрину данных (Data Mart).
Упрощенный пример ETL-пайплайна на Python с Pandas:
import pandas as pd
from sqlalchemy import create_engine
# 1. Extract: Чтение данных из CSV-файла
source_df = pd.read_csv('raw_sales.csv')
# 2. Transform: Очистка и обогащение данных
# Удаляем строки с пропущенными значениями
transformed_df = source_df.dropna(subset=['product_id', 'amount'])
# Приводим дату к правильному формату
transformed_df['sale_date'] = pd.to_datetime(transformed_df['sale_date'])
# Создаем новый признак - год продажи
transformed_df['sale_year'] = transformed_df['sale_date'].dt.year
# 3. Load: Загрузка данных в базу данных PostgreSQL
engine = create_engine('postgresql://user:password@host:port/database')
transformed_df.to_sql('clean_sales', engine, if_exists='replace', index=False)
print("ETL процесс успешно завершен.")
ETL-процессы являются основой для построения систем бизнес-аналитики (BI) и аналитических платформ.