ETL (Extract, Transform, Load) Nedir?
Veri görselleştirme ve raporlama süreçlerine dair yazılara devam edelim. Daha önce Grafana ve Looker Studio ile harici kaynaklarını nasıl ilişkilendirebileceğimizden bahsetmiştim.
Bu yazılarda sıklıkla Stitch servisine ve ETL ifadesine yer verdim. Bu nedenle, bu yazıda da ETL‘nin ne ifade ettiğine ve ne gibi bir görev gerçekleştirdiğine değinmek istiyorum.
ETL (Extract, Transform, Load)
Bilginin elde edilebilmesi ve karar sürecinde değerlendirmek üzere verilerin doğru bir şekilde gruplandırılmasına ihtiyaç duyarız. Veri, Enformasyon ve Bilgi akışında doğrudan ya da dolaylı olarak bazı işlemlerin gerçekleştirilmesi gerekebilmektedir. ETL (Extract, Transform, Load) özet bir ifade ile, verinin bir kaynak sistemden alınıp (extract) belirli işlemlerden geçirildikten (transform) sonra hedef bir sisteme aktarılmasıdır (load)1 2. ETL aracı, farklı RDBMS (İlişkisel veritabanı yönetim sistemi)’den verileri çıkarır, verileri hesaplama, birleştirme vb. işlemlerden geçirerek dönüştürür ve ardından verileri bir Veri Ambarı (Data Warehouse) sistemine yükler 3 4.
Extract (Ayıklama)
Yukarıdaki görselde de görüldüğü üzere, veri öncelikle kaynak veya kaynaklardan farklı biçimlerde (Excel, text dosyası, herhangi bir veritabanı…) alınabilir. Ardından veriler nihai hedef(ler)e yüklenmeye hazırlamak için bir dizi kural veya işlevden geçirilmek üzere Transform aşamasına aktarılır.
Transform (Dönüştürme)
Transform aşaması, hedefe yalnızca “uygun” (proper) verilerin iletilmesini amaçlayan işlemleri içerir. Bu aşamada, farklı sistemlerin karşılıklı etkileşimindeki zorluk ilgili sistemlerin etkileşim ve iletişim süreçleridir. Örneğin, sistemlerin birindeki bir karakter seti diğer sistem(ler)de olmayabilir. Diğer bir ifadeyle, Load aşaması öncesi bir veya daha fazla dönüşüm türünün (transformation types) uygulanmasına ihtiyaç duyulabilir. Dönüşümün önemli bir işlevi, hedefe yalnızca “uygun” verileri aktarmayı amaçlayan veri temizleme işlemidir. Farklı sistemlerin etkileşime girdiği zorluk ilgili sistemlerin arayüz ve iletişiminde. Bir sistemde bulunabilecek karakter kümeleri diğerlerinde böyle olmayabilir.
- Belirli sütunların seçilmesi veya hariç tutulması.
- Verilerin tercüme edilmesi. Örneğin, kaynak sistemde il bilgileri plaka numaraları üzerinden tutmuş olabilir. Ancak, hedefte bu bilginin il adı ile tutulması gerekirse 34 değerinin İstanbul olarak değiştirilmesi gerekecektir.
- Serbest biçimli (free-form) değerleri kodlaması. “
Male
”‘in “M
” olarak eşlenmesi (mapping) - Yeni bir hesaplanmış değer türetme. Örneğin,
satis_tutari = adet * birim_fiyat
- Arama performansını artırmak için verileri bir sütun listesine göre sınıflandırma veya sıralama
- Birden çok kaynaktan veri ekleme (joining) ve verilerin tekilleştirilmesi. Örneğin, lookup, merge vb.
- Aggregating. Verilerin derlenmesi ve özet haline getirilmesi. Örneğin, şube veya bölge bazında toplam satışların verilmesi.
- Benzersiz tanımlayıcı (surrogate-key veya entity identifier) değerlerin üretilmesi.
- Birden çok sütunu birden çok satıra veya tersi yönde aktarma (transposing) / dönüştürme (pivoting).
- Bir sütunu birden çok sütuna bölme (splitting). Örneğin, bir sütunda bulunan enlem ve boylam bilgisini enlem ve boylam sütunlarına dönüştürmek.
- Yinelenen sütunları ayırma (disaggregating)
- İlgili verilerin tablolarda veya doğrulanmış (referential) dosyalarda aranması ve doğrulanması.
- Herhangi bir veri doğrulama biçiminin uygulanması. Bu aşamada ,doğrulama işleminin verilerin tamamen reddedilmesine, kısmen reddedilmesi edilmesine veya hiç reddedilmemesine neden olabilir.
Bu işlem(ler)in ardından veri hedef sisteme yüklenir. Ancak, burada altını çizmemiz gereken bir husus mevcut. ETL işlemi iki yöntemle gerçekleştirilebilir. İlk yöntemde Transact-SQL (T-SQL), PL/SQL gibi sistemler dönüştürme (transform) işlemi için kullanılabilir ve yükleme işlemi gerçekleştirilebilir. Diğer yöntemde bir ETL aracından (Stitch, AWS Glue, Informatica PowerCenter gibi) faydalanılmaktadır.
Load (Yükleme)
Transform işlemi sonrasında, sorguların daha efektif bir şekilde gerçekleştirilebilmesi ve doğru sonuçların dönmesi için veriler temizlenmiş ve sınıflandırılmış olacaktır. Bu veri artık hedef sistem(ler)e aktarılabilir.