ETL سرواژه Extract Transform Load و به معنی «استخراج، تبدیل و بارگذاری» است. ETL یک فرایند انتقال ساده فایل نیست، بلکه روشی برای رساندن داده‌های چند منبع به شکلی تمیز، سازگار و قابل تحلیل به مقصد است. برای مثال، ممکن است اطلاعات سفارش از MySQL، تراکنش پرداخت از یک سرویس خارجی و داده مشتری از CSV دریافت شوند.

سه گام ETL

گامکار اصلیمثال
Extractدریافت داده از منابع مختلفخواندن جدول سفارش‌ها از MySQL و فایل CSV مشتریان
Transformپاک‌سازی، تبدیل نوع، رفع تکرار و یکسان‌سازیتبدیل تاریخ‌ها به UTC و یکسان کردن شناسه مشتری
Loadثبت داده پردازش‌شده در مقصدبارگذاری جدول Fact فروش در انبار داده

در فرایند واقعی، ETL باید مشخص کند با داده ناقص، خطای تبدیل، تغییر Schema و اجرای مجدد چه کند. اگر Pipeline بعد از درج نیمی از رکوردها قطع شود، باید بتوان آن را بدون تکرار ناخواسته داده دوباره اجرا کرد.

نمونه بسیار ساده با Python

import csv

with open("orders.csv", newline="", encoding="utf-8") as file:
    records = list(csv.DictReader(file))

cleaned = [
    {"id": int(r["id"]), "amount": float(r["amount"])}
    for r in records if r.get("id") and r.get("amount")
]
# Load cleaned into a destination using a database driver

این مثال فقط ساختار Extract و Transform را نشان می‌دهد. Load واقعی باید با یک اتصال به دیتابیس، کنترل خطا و ثبت وضعیت اجرای کار پیاده‌سازی شود.

در استخراج، بارگذاری و تبدیل داده ترتیب مرحله‌ها متفاوت است و تبدیل بعد از بارگذاری انجام می‌شود. همچنین خط لوله داده اصطلاح گسترده‌تری است که می‌تواند ETL، اعتبارسنجی، زمان‌بندی و پایش را در بر بگیرد.

در همین واژه‌نامه، پردازش تراکنش‌های برخط و پردازش تحلیلی برخط از مفاهیم مرتبط هستند.