SSIS - Table Difference
Veri aktarım ve temizleme ile ilgili vazgeçilmez aracımız olan SSIS’te kimi ihtiyaç duyduğumuz özellikler bulunmamaktadır. Bunlardan bir tanesi dosya sıkıştırma özelliğiydi. Dosya sıkıştırmayı farklı yollarla mevcut kontroller üzerinden yapabiliyoruz.
Fakat SSIS kontrolleri dış kaynaklar tarafından gelişime açık olduğundan kimi ihtiyaçlarımızı bu yollar ile giderebiliyoruz.
Bunlardan bir başkası ise aynı tablo içerisindeki farklılıkları bulabilmek. Bunu mevcut kontroller ile nasıl yaparız diye baktığımızda ilk aklımıza gelen ardı ardına Lookup kontrolleri ile farklılıklarını bulabilmek. Fakat burada yapabileceğimiz tek şey iki veri kaynağı arasındaki farklılıkları tespit etmek olacaktır. Bunun dışında hangi veriler güncellenmiş, hangileri yeni eklenmiş veya hangileri silinmiş tespitimiz Lookup kontrolüyle gerçekleşemeyecektir.
Fakat Table Difference kontrolü ile bunları rahatlıkla tespit edebiliriz. Örnek bir uygulama üzerinden gidelim. AdventureWorks veritabanından çalışanlarımıza ilişkin bir sorgu ile sonuçları Excel tablosuna aktaralım.
SELECT [EmployeeKey]
,[FirstName]
,[LastName]
,[Title]
,[BirthDate]
,[EmailAddress]
,[Phone]
,[MaritalStatus]
,[EmergencyContactName]
,[EmergencyContactPhone]
,[Gender]
,[DepartmentName]
,[StartDate]
FROM [AdventureWorksDW].[dbo].[DimEmployee]
Daha sonrasında bu excel tablosunu kopyalayarak içerisindeki verileri değiştirelim.
SQL Server Integration Services projesi açalım ve iki adet Excel Connection oluşturalım. Daha sonra ise Data Flow Task sürükleyerek bu iki excel dosyamızı veri kaynağı olarak gösterelim. Üçüncü parti olarak yüklemiş olduğumuz Table Difference kontrolünü projemize dahil ederek gerekli tanımlamalarını yapalım.
Tablomuzda yer alan Key alanını belirttikten sonra kontrol çalıştıktan sonraki çıktıları belirleyelim. Ayrıca burada yeni eklenenler, silinenler, güncellenenler tanımlamaları yapabilir ve bu işlemlerin herbirine tabii tutulanları farkı kaynaklarda saklayabilirsiniz.
Halen çalışmakta olduğumuz birçok veritabanı normalizasyondan yoksun ve veri denetiminin olmadığını düşünürsek Table Difference kontrolu veriambarı aktarımlarında işimizi oldukça kolaylaştırabilir.