SCD: Boyut Verisi Değişirken Geçmişi Korumak
Yavaş değişen boyut (SCD), veri ambarında boyut verisi zamanla değiştiğinde geçmişi nasıl koruyacağınızı belirleyen modelleme tekniğidir. Türleri ve örnek.
Yavaş değişen boyut (SCD) nedir?
Yavaş değişen boyut (Slowly Changing Dimension, SCD), veri ambarındaki boyut tablolarında yer alan bir özniteliğin zamanla ve seyrek biçimde değişmesi durumunda, bu değişikliğin nasıl saklanacağını belirleyen modelleme tekniğidir. Müşterinin yaşadığı şehir, bir ürünün kategorisi, bir çalışanın departmanı tipik örneklerdir.
Sorun şudur: boyut verisini yalnızca üzerine yazarak güncellersek geçmiş raporların sonucu da kayar. Örneğin bir satış temsilcisi bölge değiştirdiğinde, eski satışların yeni bölgeye yazılması yanlış bir geçmiş yaratır. SCD teknikleri bu soruya farklı yanıtlar verir. Kavram, Ralph Kimball'ın boyutsal modelleme yaklaşımıyla yaygınlaşmıştır.
Başlıca SCD türleri
- SCD Tip 1: Eski değerin üzerine yazılır, geçmiş tutulmaz. Basittir ve yazım hatası düzeltmek gibi geçmişin önemli olmadığı durumlarda uygundur.
- SCD Tip 2: Her değişiklik için yeni bir satır eklenir; eski satır kapatılır. Geçmiş tam olarak korunur. En yaygın ve en güçlü yöntemdir.
- SCD Tip 3: Aynı satırda, öznitelik için 'önceki değer' adında ek bir sütun tutulur. Yalnızca bir önceki değer saklanabildiği için sınırlıdır.
Bunlara ek olarak karma yaklaşımlar da vardır; örneğin Tip 2 geçmişi korurken, güncel değeri her satırda ayrıca gösteren bir sütun tutmak gibi. Hangi türün seçileceği, o özniteliğin raporlamada geçmiş anlamı taşıyıp taşımadığına bağlıdır.
Örnek: müşteri şehri değişince
Örneğin Ayşe adlı müşteri önce Ankara'da yaşıyor ve bir sipariş veriyor, sonra İzmir'e taşınıp bir sipariş daha veriyor. Boyut tablosunu Tip 1 ile yönetirsek tüm siparişler İzmir'e yazılır; Ankara'dan verilen sipariş bölge raporunda yanlış görünür.
Tip 2 ile ise müşteri boyutunda Ayşe için iki satır bulunur: biri Ankara, geçerlilik bitiş tarihi dolu; diğeri İzmir, güncel satır. Olgu tablosundaki her sipariş, sipariş anında geçerli olan satırın vekil anahtarına bağlanır. Böylece geçmiş siparişler Ankara'da, yeniler İzmir'de görünür.
Tip 2'nin uygulanışı: gerekli alanlar
Tip 2 uygulamasında boyut tablosuna genellikle şu alanlar eklenir:
- Vekil anahtar: Doğal anahtardan bağımsız, her sürüm satırı için benzersiz tanımlayıcı.
- Geçerlilik başlangıç ve bitiş tarihi: Satırın hangi dönemde doğru olduğunu gösterir.
- Güncel satır bayrağı: Sorgularda yalnızca güncel durumu seçmeyi kolaylaştırır.
Yükleme sırasında kaynak sistemden gelen kayıt boyut tablosundaki güncel satırla karşılaştırılır. Fark varsa eski satır kapatılır, yeni satır eklenir. Doğal anahtar aynı kaldığı için ayrı bir vekil anahtar gerekir.
Hangi türü seçmeli?
Karar öznitelik bazında verilir; tüm boyuta tek bir tür uygulamak zorunlu değildir. Soru şudur: bu öznitelik değiştiğinde, geçmiş raporlar eski değerle mi yoksa yeni değerle mi görünmeli? Eski değerle görünmeliyse Tip 2, yeni değerle görünmeliyse Tip 1 uygun olur. Yalnızca bir önceki değerle karşılaştırma yetiyorsa Tip 3 düşünülebilir.
İş birimleriyle bu karar konuşulmadan teknik tercih yapmak, sonradan raporların yanlış okunmasına yol açar.
Sık yapılan hatalar
- Her özniteliği Tip 2 yapmak; satır sayısı gereksiz şişer ve sorgular yavaşlar.
- Olgu tablosunu doğal anahtara bağlamak; geçmiş sürümler karışır.
- Geçerlilik tarihlerinde boşluk ya da çakışma bırakmak.
- Yükleme mantığını sınamadan yayına almak; bir değişiklik iki kez yazılır ya da hiç yazılmaz.
- Hızlı değişen öznitelikleri SCD olarak modellemek; bunlar çoğunlukla ayrı bir küçük boyut olarak çıkarılır.
İlgili kavramlar
SCD, boyutsal modelleme ve olgu-boyut ayrımının bir parçasıdır. Veri ambarına yükleme ETL ya da ELT hatlarıyla yapılır; SCD mantığı çoğunlukla bu hatlarda uygulanır. Modern veri platformlarında anlık görüntü (snapshot) alma ve değişiklik verisi yakalama yöntemleri de aynı ihtiyacı karşılayabilir.
Mindset programlarında SCD
Mindset kataloğundaki Boyutsal Modelleme ve Kimball Metodolojisi programında konu özellikle 'Tarihsel Takip ve Değişim Yönetimi' modülünde yer alır; olgu tablosu ve boyut tablosu tasarımı modülleriyle birlikte okunur.
İlgili Mindset programı
Boyutsal Modelleme ve Kimball Metodolojisi
Sık sorulan sorular
SCD Tip 2 neden en yaygın tür?
Geçmişi tam ve doğru biçimde koruduğu için. Her sürüm ayrı bir satır olduğundan, olgu tablosundaki bir kayıt işlem anında geçerli olan boyut değerine bağlanabilir. Bedeli satır sayısının artması ve yükleme mantığının karmaşıklaşmasıdır; ama raporların zaman içinde tutarlı kalması çoğu analitik ekip için bu bedele değer.
SCD sadece Kimball yönteminde mi var?
Terim ve tür sınıflaması Kimball yaklaşımıyla yaygınlaşmıştır, ama ihtiyaç her veri ambarı yaklaşımında vardır: boyut verisi değiştiğinde geçmiş nasıl korunur. Başka yöntemler aynı ihtiyacı farklı adlarla karşılar, örneğin sürümlü tablolar ya da geçerlilik aralıklı kayıtlar.
Tip 1 ne zaman yeterlidir?
Geçmişin raporlamada anlam taşımadığı durumlarda. Yazım hatasını düzeltmek ya da bir kodun görünen adını güncellemek gibi, eski değerin hiçbir zaman doğru kabul edilmediği değişiklikler Tip 1 ile yönetilir. Sınır net değilse iş birimine sormak ve kararı belgelemek gerekir.
SCD'yi kod olmadan yönetmek mümkün mü?
Bazı veri entegrasyon araçları ve veri ambarı platformları Tip 2 mantığını hazır bileşenle sunar. Yine de geçerlilik tarihlerinin kuralı, hangi alanların değişiklik sayılacağı ve silinen kayıtların nasıl işleneceği gibi kararlar araçtan bağımsız olarak tasarımla verilmelidir.
İlgili rehberler
Kategori: Veri Mühendisliği ve MLOps, Veri Analitiği ve İş Zekası