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، اعتبارسنجی، زمانبندی و پایش را در بر بگیرد.
در همین واژهنامه، پردازش تراکنشهای برخط و پردازش تحلیلی برخط از مفاهیم مرتبط هستند.