ETL
Çıkar, Dönüştür, Yükle (Extract, Transform, Load)
Kısaca
ETL, kaynak sistemlerden veriyi çıkaran, temiz ve tutarlı bir biçime dönüştüren ve bir hedef depoya yükleyen bir veri entegrasyonu sürecidir.
ETL nedir?
ETL, extract, transform, load (çıkar, dönüştür, yükle) demektir; verinin üretildiği yerden analiz edildiği yere taşınmasının üç adımıdır. Extract, veriyi uygulama veritabanları, üçüncü taraf API'ler, CSV dışa aktarımları ve günlükler gibi kaynaklardan kopyalar. Transform onu temizler ve yeniden biçimlendirir: türleri ve biçimleri düzeltir, tekrarları kaldırır, değerleri doğrular, kaynakları birleştirir ve toplamları hesaplar. Load, sonucu bir data warehouse, data lake ya da başka bir veritabanı gibi bir hedefe yazar.
ETL hatları tipik olarak örneğin her gece ya da her saat çalışan zamanlanmış toplu işler (batch job) olarak yürür ve adımlar arasındaki bağımlılıkları izleyen, hataları yeniden deneyen iş akışı orkestrasyon araçlarıyla koordine edilir. Her seferinde her şeyi kopyalamak yerine, artımlı yüklemeler yalnızca son çalıştırmadan bu yana değişen satırları işler; bunlar zaman damgalarıyla ya da bir veritabanının değişiklik günlüğünü okuyan değişiklik verisi yakalama (CDC) ile bulunur. İyi kurulmuş bir hat idempotenttir; yani bir başarısızlıktan sonra yeniden çalıştırmak tekrarlı veri oluşturmaz.
Birçok ekip artık bunun yerine ELT kullanıyor: ham veriyi önce warehouse'a yükleyin, sonra SQL ile orada dönüştürün; çünkü modern warehouse'ların bolca hesaplama gücü vardır ve ham kopyayı tutmak sonuçları daha sonra yeniden oluşturmayı kolaylaştırır. Bir mutfak iyi bir benzetmedir: malzemeler farklı tedarikçilerden gelir (extract), yıkanır, doğranır ve ölçülür (transform) ve servis hattına konur (load); ELT'de ise her şey önce kilere girer ve gerektiğinde hazırlanır.
ETL çoğu zaman data warehouse'un kendisiyle karıştırılır. ETL, veriyi taşıyan ve hazırlayan süreçtir; warehouse ise verinin saklandığı ve sorgulandığı hedeftir. ETL ayrıca her olayı toplu işlemler yerine gerçekleştiği anda işleyen olay akışından (event streaming) de, akış ETL hatları var olsa da, ve veriyi başka bir yere taşımak yerine bir veritabanının yapısını değiştiren veritabanı migration'ından da farklıdır.
Önemli noktalar
- Extract kaynaklardan veri çeker, transform onu temizler ve yeniden biçimlendirir, load bir hedefe yazar.
- Hatlar genellikle bir orkestratörün yönettiği zamanlanmış toplu işler olarak çalışır.
- Artımlı yüklemeler ve değişiklik verisi yakalama, her seferinde her şeyi kopyalamaktan kaçınır.
- ELT ham veriyi önce yükler ve warehouse içinde dönüştürür.
- Idempotent adımlar, bir hattı başarısızlıktan sonra yeniden çalıştırmayı güvenli kılar.
Örnek
import csv, sqlite3
# Extract: read raw rows from a CSV export
with open("orders.csv", newline="") as f:
rows = list(csv.DictReader(f))
# Transform: skip incomplete rows and normalize formats
clean = [
(r["id"], r["email"].strip().lower(), round(float(r["total"]), 2))
for r in rows if r["total"]
]
# Load: upsert into the analytics database (safe to rerun)
db = sqlite3.connect("warehouse.db")
db.executemany("INSERT OR REPLACE INTO orders VALUES (?, ?, ?)", clean)
db.commit()Sık sorulan sorular
ETL ile ELT arasındaki fark nedir?
ETL'de veri hedef sisteme ulaşmadan önce dönüştürülür. ELT'de ise ham veri önce yüklenir ve hedefte, genellikle bir bulut data warehouse'unda, SQL kullanılarak dönüştürülür.
Veri hattı (data pipeline) nedir?
Veri hattı, veriyi bir sistemden diğerine taşıyan herhangi bir otomatik adımlar serisidir. ETL ve ELT, olayları sürekli işleyen akış hatlarının yanı sıra yaygın veri hattı türleridir.
ETL hâlâ kullanılıyor mu?
Evet. ELT çeşidi bulut warehouse'larıyla çok yaygınlaştı, ancak verinin hedefe ulaşmadan önce temizlenmesi, filtrelenmesi veya hassas alanlardan arındırılması gerektiğinde, yüklemeden önce dönüştürmek hâlâ standarttır.
İlgili sayfalar
- Data WarehouseVeritabanları, s. 7Data warehouse, birçok kaynaktan geçmiş veriyi toplayan ve ekiplerin büyük raporlama sorgularını hızla çalıştırdığı analitik amaçlı merkezi bir veritabanıdır.
- Data LakeVeritabanları, s. 6Data lake, büyük miktarda ham veriyi, yapılandırılmış olsun ya da olmasın, biri analiz etmek isteyene kadar özgün biçiminde tutan merkezi bir depolama alanıdır.
- Cron JobBackend ve API'ler, s. 8Cron job, beş alanlı bir cron ifadesiyle tanımlanan ve her gece 02.00 gibi tekrarlayan bir zamanlamayla otomatik çalışan bir komut veya betiktir.
- Arka Plan İşiBackend ve API'ler, s. 5Arka plan işi, bir sunucunun normal istek-yanıt döngüsünün dışında çalıştırdığı görevdir; e-posta gönderme gibi yavaş işler kullanıcıları bekletmez.
- IdempotencyBackend ve API'ler, s. 23Idempotency, bir işlemin bir kez de çalışsa çok kez de çalışsa aynı sonucu üretmesi özelliğidir; böylece bir isteğin yanlışlıkla tekrarlanması güvenli olur.
- Event StreamingBackend ve API'ler, s. 13Event streaming, olayları birçok uygulamanın gerçek zamanlı okuyup yeniden oynatabildiği ve işleyebildiği sürekli, sıralı, kalıcı bir log olarak kaydetmektir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin