SSIS’de Slowly Changing Dimension (SCD) , Tip 2 Örneklemesi

Gamzenurartar
Vakıf Katılım Ar-Ge Merkezi
4 min readJun 27, 2024

Giriş

Veri ambarlarında, boyutlar zaman içinde değişebilir. Müşteri adresleri, ürün fiyatları, telefon numaraları gibi bilgiler değişkenlik gösterebilir. Bu tür değişiklikleri yönetmek için Slowly Changing Dimension (SCD) teknikleri kullanılır. SQL Server Integration Services (SSIS), bu değişiklikleri yönetmek için çeşitli yöntemler sunar.

Slowly Changing Dimension Nedir?

SCD, bir boyutun zaman içindeki değişikliklerini izlemek için kullanılan bir tekniktir. Ralph Kimball tarafından önerilen çeşitli yöntemler vardır:

Tip 0: Orijinal değer hiçbir şekilde değiştirilmez.

Tip 1: Yeni veri geldiğinde, mevcut kaydın üzerine yazar. Geçmiş bilgisi tutulmaz.

Tip 2: Değişen veri için yeni bir satır oluşturur ve eski kayıtları korur. Ek sütunlar, bir satırın zaman içinde geçerli olup olmadığını gösterir. İlgili kaydın hangi tarih aralığında geçerli olduğunu belirten başlangıç ve bitiş tarihleri bulunur. Bu sayede geçmiş takip edilebildiği gibi analiz edilebilir.

Tip 3: Bir sütundaki eski değeri ayrı bir sütunda tutar. Ancak burada bir boyutun yalnızca bir tane geçerli değişiklik öncesindeki değeri saklanır.

Daha fazla SCD tipi vardır, ancak bunlar genellikle yukarıdakilerin hibrit kombinasyonlarıdır.

Kısaca değinmek gerekirse;

Tip 4: Mini bir dimension tablosu oluşturulur. History tablosu da denilebilir, değişen alanlar burada tutulur.

Tip 5: Tip 4 ile Tip 1 in birleşimidir.

Tip 6: Tip 1 , Tip 2 ve Tip 3 ün birleştirilmiş halidir.

Tip 7: Tip 2 özelliğinde bir tablo, fact tablosuna foreign bir key üzerinden bağlanır. Mevcut değerler tutulduğu bir başka tablo ile dimension tablosu ilişkilendirilir. Ardından mevcut kayıtların tutulduğu tablo fact ile bağlanır. Mevcudu tutuğumuz tablo hem dimension hem de fact ile ilişkilendirildiğinden bu tip Dual Tip olarak da bilinir.

SSIS’de Sıklıkla kullanılan Tip 2 SCD Uygulaması

SSIS’de Tip 2 SCD uygulaması, veri ambarına tarihsel veri yüklemek için kullanılır. Örneğin, bir müşterinin telefon numarası değiştiğinde, mevcut satır güncellenmez, yeni bir kayıt eklenir¹. Bu kaydın zaman içinde ne zaman geçerli olduğu belirtilir. Yeni bir yedek anahtar üretilir, ancak iş anahtarı aynı kalır¹.

Örnek

Rastgele veriler ile üretilen 50 satırlık bir Personel verisi ile ilgili senaryoyu inceleyelim;

Excel Source componenti ile kaynağımıza eriştikten sonra tek yapmamız gereken Slowly Changing Dimension componentini eklemek. Burada ilk adımda, inputları, dimensionları ve key typeları belirliyoruz. Tekil olan sütun business key olarak belirlenmeli. Burada eklenen Durum sütunu, verinin güncel mi yoksa eski mi olduğunu takip etmemizi sağlayacak.

Ardından, sütunların değişim tiplerini belirliyoruz. Burada değişen olarak belirlediğimiz telefon bilgisi. Beklediğimiz, telefon değiştiğinde durum sütununda eski veride Expired, güncel veride Current yazması. Bu sayede sorgumuzda durum sütununu Current olarak filtreleyerek güncel veriyi elde edebileceğiz.

Son olarak yukarıda bahsettiğimiz Durum sütununun tanımlamasını yapıyoruz.

Kaynakta; seçili görünen, 27 sicil numaralı personelin telefon numarasını değiştirip paketi yeniden çalıştırdığımızda, bu personele ait durumu Expired ve Current olan iki kayıt görüyoruz.

Sonuç

SCD, veri ambarlarında tarihsel veri analizi yapmak için kritik öneme sahiptir. SSIS, Tip 2 SCD’yi uygulamak için güçlü araçlar sunar, ancak performansı optimize etmek için dikkatli bir planlama ve uygulama gerektirir.

(1) Implement a Slowly Changing Type 2 Dimension in SSIS — Part 1. https://www.mssqltips.com/sqlservertip/5632/implement-a-slowly-changing-type-2-dimension-in-sql-server-integration-services-part-1/.

(2) Slowly Changing Dimension Transformation — SQL Server Integration …. https://learn.microsoft.com/en-us/sql/integration-services/data-flow/transformations/slowly-changing-dimension-transformation?view=sql-server-ver16.

(3) ssis — Slowly change dimension — Stack Overflow. https://stackoverflow.com/questions/49071035/slowly-change-dimension.

(4) Optimize Type 2 Slowly Changing Dimensions in SSIS — Part 2. https://www.mssqltips.com/sqlservertip/5639/optimizing-type-2-slowly-changing-dimensions-in-integration-services-part-2/.

--

--