← Назад к вопросам

Что такое ELT?

1.8 Middle🔥 151 комментариев
#Docker, Kubernetes и DevOps#Базы данных и SQL

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

ELT (Extract, Load, Transform)

ELT (Extract, Load, Transform) — это архитектурный подход для обработки данных, противоположный более традиционному ETL. Вместо того чтобы трансформировать данные ДО загрузки в хранилище, ELT загружает сырые данные в целевую систему, а затем выполняет трансформацию там.

Сравнение ELT и ETL

ETL (Extract, Transform, Load):

  • Extract -> трансформация на промежуточном сервере -> Load в БД
  • Данные обрабатываются до загрузки
  • Требует мощного промежуточного сервера
  • Медленнее для больших объёмов данных

ELT (Extract, Load, Transform):

  • Extract -> Load сырых данных -> трансформация в целевой БД
  • Используется мощь самой БД (SQL запросы)
  • Быстрее благодаря параллельной обработке
  • Лучше для big data

Когда использовать ELT

ELT особенно эффективен при работе с:

  • Большими объёмами данных — PostgreSQL, Snowflake, BigQuery эффективнее обрабатывают петабайты
  • Cloud хранилищами — Snowflake, AWS Redshift, BigQuery специально оптимизированы для ELT
  • Современными data warehouses — они легко масштабируются для трансформации
  • Stream обработкой — Apache Kafka + обработка в целевой системе

Пример ELT pipeline на Java

import java.sql.*;
import java.time.LocalDateTime;

public class ELTProcessor {
    
    private Connection sourceConnection;
    private Connection targetConnection;
    
    public void extractData() throws SQLException {
        String extractQuery = "SELECT * FROM source_users WHERE updated_at > ?";
        try (PreparedStatement stmt = sourceConnection.prepareStatement(extractQuery)) {
            stmt.setTimestamp(1, Timestamp.valueOf(LocalDateTime.now().minusHours(1)));
            ResultSet rs = stmt.executeQuery();
            
            String insertQuery = "INSERT INTO raw_users (id, name, email, updated_at) VALUES (?, ?, ?, ?)";
            try (PreparedStatement insertStmt = targetConnection.prepareStatement(insertQuery)) {
                while (rs.next()) {
                    insertStmt.setInt(1, rs.getInt("id"));
                    insertStmt.setString(2, rs.getString("name"));
                    insertStmt.setString(3, rs.getString("email"));
                    insertStmt.setTimestamp(4, rs.getTimestamp("updated_at"));
                    insertStmt.addBatch();
                }
                insertStmt.executeBatch();
            }
        }
    }
    
    public void transformData() throws SQLException {
        String cleanQuery = "UPDATE raw_users SET email = LOWER(TRIM(email)) WHERE email IS NOT NULL";
        targetConnection.createStatement().executeUpdate(cleanQuery);
        
        String transformQuery = "INSERT INTO users_fact (user_id, name, email_domain, record_date) SELECT id, name, SUBSTRING(email, POSITION('@' IN email) + 1), CURRENT_DATE FROM raw_users WHERE email IS NOT NULL";
        targetConnection.createStatement().executeUpdate(transformQuery);
    }
}

ELT с Snowflake

Snowflake идеально подходит для ELT благодаря встроенным возможностям:

DataFrame df = spark.read
    .option("sfUrl", "xy12345.us-east-1.snowflakecomputing.com")
    .option("sfUser", "user")
    .option("sfPassword", "password")
    .option("sfDatabase", "db")
    .option("sfSchema", "public")
    .option("dbtable", "raw_data")
    .format("snowflake")
    .load();

DataFrame transformed = df.select("*").filter("age > 18");

transformed.write
    .format("snowflake")
    .option("dbtable", "users_clean")
    .mode("overwrite")
    .save();

Инструменты для ELT

  • dbt (data build tool) — трансформирует данные через SQL
  • Apache Spark — обработка больших данных с SQL интерфейсом
  • Airbyte — open-source ELT платформа
  • Talend — enterprise решение для ELT
  • Google Dataflow — облачный сервис для ELT

Преимущества ELT

  • Скорость — не нужно трансформировать до загрузки
  • Масштабируемость — облачные БД легко обрабатывают большие объёмы
  • Гибкость — можно быстро менять трансформацию
  • Стоимость — вычисления выполняются параллельно

Недостатки ELT

  • Требует мощной целевой системы — нужна современная БД
  • Сырые данные занимают место — хранится исходная информация
  • Может быть медленнее для малых объёмов — ETL проще для простых случаев

ELT — это современный подход к обработке данных, который лучше всего работает с облачными хранилищами и большими объёмами информации.

Что такое ELT? | PrepBro